Announcing LINQ to HPC Beta 2
半年前聽到的時候,還在微軟研究所中
沒想到現在已經到 Beta 2 了
這個我還沒有仔細研究整個伺服器端的運作機制
但在月初在幫忙 Debug 時,有稍微玩了一下
讓我整個有驚喜到了呢!
大家都知道,若是要縮短處理的工作
在一台電腦上可以用多執行緒的方式讓工作可以分段同時進行
一顆 CPU 不夠怎麼辦?沒關係可以加到 32 or 64 顆 CPU
但,這還是有極限,若連 64 顆都不夠的話那怎麼辦?
再說,這樣子的規格可是爆貴的 ( 都可以買台 重機了 )
當然,有分散式的架構可以來解決這個問題啦!
以前分散式架構是 一台一個,若是要動態增加電腦的話
就還要再自已寫程式做工作分解、派送、組合的動作
光是想就沒有什麼人想要自已弄啦!
( 以前有同事自已寫類似的機制,光是這個就搞了半年以上。而且沒有那麼多的彈性,只能應用在一個功能上 )
現在 .NET 終於推出了解決方案啦!
透過 Linq 語法搭配 HPC 就可以做到「叢集運算」
可以看到將工作丟給 Controller Node 進行工作分派和管理的動作
(寫到這裡,我實在太羨慕 顆顆杉可以玩這個 )
所以,Client 端不用再管 到底有幾台 Server ,丟給 HPC 後一切就統統都搞定
這才是 服務的概念呀! (握)
Tip:HPC 是什麼呢?可以參考 強哥這篇文章
建構私有雲叢集運算核心–Windows HPC Server 2008 R2
有在接觸 .NET Framework 3.0 以上的程式人員都會知道 Linq
Linq 簡單來說就是一種語法
可以想像成類似 SQL 查詢的語法
它可以處理 XML、Object 物件
搭配 Entity Framework 又可以直接當作資料庫存取語法
以前我們都盡量避免同時載入超大的資料量進行運算
因為光是載入資料的時間和運算的時間就會非常久
比如現在很流行將動態的資料結構直接存成 XML ,再由程式碼來解析
一來可以解決使用者自行加欄位的需求
二來可以解決資料庫擴充的問題
但,若是用 Dom 物件來處理
除了難寫以外,效率又差
( Linq for XML 還未問世之前,我都盡量避免處理 XML 。因為 DOM 會讓我想殺人 )
雖然用 Linq 可以像 SQL 語法那樣子輕松處理資料
但背後卻是用 CPU 硬幹 ~ 呃~~ 霸王硬上弓~~
處理 幾百K 速度都很快,但若是處理 幾十妹 或 上百妹 呢?
以前你可能只能用多執行緒解決,讓使用者不要覺得系統已經掛掉
現在只要程式碼加上 HPC Framework 後,原始的 Linq 幾乎都不用動就可以把工作交給其他電腦做啦!
時間可以依 HPC 背後的 工作 Node 數量來決定處理時間的長短。
當時在試著跑範例和看到結果時,小宇宙都快要爆發了!
對於現在虛擬化、服務導向當道時,這個會是企業提供運算服務非常棒的解決方案呢!
這個只支援 Visual Studio 2010 以上的版本
Framework 4.0 以上
參考資料
http://blogs.technet.com/b/windowshpc/archive/2011/05/20/dryad-becomes-linq-to-hpc.aspx
http://blogs.msdn.com/b/philpenn/archive/2011/07/12/linq-to-hpc-beta2-now-available.aspx