BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

.NET平台上的分布式编程框架MBrace发布1.0版本

| 作者 Pierre-Luc Maheu 关注 4 他的粉丝 ,译者 邵思华 关注 3 他的粉丝 发布于 2015年11月23日. 估计阅读时间: 6 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

在经过数年的开发之后,MBrace 1.0终于在上周正式发布了。MBrace是一种使用F#及C#进行脚本编写与编程,适用于高伸缩性的云数据应用的编程模型。该项目主要包含了各种代码类库以及适配各种云供应商的运行时。

该项目的关键组件是MBrace.Core,这是一个独立的类库,包含了核心MBrace编程模型。它提供了一种基于API的计算表达式,调用者既可以直接使用这种表达式,也可以通过它创建其他类库,例如MBrace.Flow。以下示例将使用云工作流,展现如何通过HTTP调用获取远程内容。

let urls =  [| ("bing", "http://bing.com") ("google", "http://google.com") /* 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

重要通知:接下来InfoQ将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注InfoQ微信公众号第一时间阅读精品内容。

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平台上的开源项目,可以通过多种方式为该项目贡献你的力量:包括对类库的贡献、对云提供商运行时的贡献、以及对示例和文档的贡献。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT