.NET平臺上的分布式編程框架MBrace發布1.0版本

jopen 9年前發布 | 5K 次閱讀 .NET

英文原文:Release of MBrace 1.0, a Distributed Programming Framework for .NET

在經過數年的開發之后,MBrace 1.0 終于在上周正式發布了。MBrace 是一種使用F#及 C# 進行腳本編寫與編程,適用于高伸縮性的云數據應用的編程模型。該項目主要包含了各種代碼類庫以及適配各種云供應商的運行時。

該項目的關鍵組件是 MBrace.Core,這是一個獨立的類庫,包含了核心 MBrace 編程模型。它提供了一種基于 API 的計算表達式,調用者既可以直接使用這種表達式,也可以通過它創建其他類庫,例如 MBrace.Flow。以下示例將使用云工作流,展現如何通過 HTTP 調用獲取遠程內容。

let urls =  [| ("bing", " more urls/ |]

let download (name: string, uri: string) = cloud { let webClient = new WebClient () let! text = webClient.AsyncDownloadString (Uri (uri)) |> Cloud.OfAsync do! CloudFile.Delete (sprintf "pages/%s.html" name) let! file = CloudFile.WriteAllText (path = sprintf "pages/%s.html" name, text = text) return file }

let filesTask = urls |> Array.map download |> Cloud.Parallel |> cluster.CreateProcess</pre>

MBrace.Flow 是一個基于 MBrace.Core 創建的分布式流(Streaming)類庫,該類庫使用了函數式的管道聲明。下面的示例展示了如何通過云流查找在多個 CSV 文件中出現重復字符串的次數。

let numberOfDuplicates =
    CloudFlow.OfCloudFilesByLine ["container/data0.csv" ; "container/data1.csv"]
    |> CloudFlow.map (fun line -> line.Split (','))
    |> CloudFlow.map (fun tokens -> int tokens.[0], Array.map int tokens.[1 ..])
    |> CloudFlow.groupBy (fun (id,_) -> id)
    |> CloudFlow.filter (fun (_,values) -> Seq.length values > 1)
    |> CloudFlow.length
    |> cluster.Run

除了代碼類庫之外,MBrace 中還包括了其他的主要組件,即 MBrace 運行時實現。目前該實現只支持 Azure 這一種云提供商,不過對 AWS 的支持已經在開發當中了。Azure 運行時實現包括對 MBrace.Core 編程模型的完整支持,以及用于集群管理的輔助工具。以下代碼展示了如何創建一個基于 Azure 平臺上的四個 A3 實例的集群:

let pubSettingsFile = @"... path to your downloaded publication settings file ... "
let config = DeploymentManager.BeginDeploy (pubSettingsFile, Regions.North_Europe, VMSizes.A3, vmCount = 4) 

為了幫助使用者快速上手,MBrace 提供了兩個學習工具包:一個工具包對應 Azure 平臺,而另一個工具包則對應一個模擬的集群。模擬集群可運行在一臺單獨的機器上,通過這種方式,就可以在某個開發者的機器上直接運行與調試分布式的代碼,而無需依賴任何額外的基礎設施了

MBrace 是一個托管在 GitHub 平臺上的開源項目,可以通過多種方式為該項目貢獻你的力量:包括對類庫的貢獻、對云提供商運行時的貢獻、以及對示例和文檔的貢獻。

來自: InfoQ
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!