写点什么

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

  • 2015-11-22
  • 本文字数:1295 字

    阅读完需:约 4 分钟

在经过数年的开发之后,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

2015-11-22 18:002398
用户头像

发布了 428 篇内容, 共 165.1 次阅读, 收获喜欢 34 次。

关注

评论

发布
暂无评论
发现更多内容

# 分布式数据库新秀TIDB初探

TiDB 社区干货传送门

TiDB 底层架构 TiDB 源码解读

TiDB常用SQL

TiDB 社区干货传送门

性能调优 集群管理

React-hooks+TypeScript最佳实战

xiaofeng

React

Vue3, setup语法糖、Composition API全方位解读

yyds2026

Vue

《关键信息基础设施安全保护要求》于明年五月正式实施

行云管家

网络安全

GaussDB CN服务异常实例分析

华为云开发者联盟

数据库 华为云 GaussDB

React生命周期深度完全解读

夏天的味道123

React

TiFlash 源码阅读(七)TiFlash Proxy 模块

TiDB 社区干货传送门

安防厂商在企业数字化转型中的机遇和挑战

慕枫技术笔记

AIOT 11月月更

将业务从mysql迁移至TIDB,有哪些需要注意的?

TiDB 社区干货传送门

管理与运维 应用适配 大数据场景实践

技术分享 | TiUP工具 - TiDB集群滚动升级核心流程解析

TiDB 社区干货传送门

老板拍脑袋决策,团队群魔乱舞

填空时光

决策 团队内耗 企业敏捷

React的5种高级模式

夏天的味道123

React

技术分享 | 多测试环境的动态伸缩实践

LigaAI

云原生 自动化测试框架 测试环境 测试自动化 kubenetes

教你一招,安全的从 MySQL 切换到 TiDB

TiDB 社区干货传送门

迁移 实践案例

TiFlash 源码阅读(六) DeltaTree Index 的设计和实现分析

TiDB 社区干货传送门

Vue.nextTick核心原理

yyds2026

Vue

双机热备软件原理简单说明以及品牌重点推荐

行云管家

高可用 ha 热备 双机热备

低代码实现探索(五十三)后台逻辑的控制

零道云-混合式低代码平台

React中常见的TypeScript定义实战

xiaofeng

React

AntDB入选《2022爱分析·信创厂商全景报告》

亚信AntDB数据库

AntDB 信创 国产数据库 aisware antdb AntDB数据库

React源码中的dom-diff

夏天的味道123

React

诚迈科技深耕汽车操作系统领域,获评优质供应商

科技热闻

解读Vue3模板编译优化

yyds2026

Vue

Go类型转换和类型断言可别搞混了

王中阳Go

golang 高效工作 学习方法 面试题 11月月更

CQRS与Event Sourcing

胖子笑西风

架构 DDD CQRS Event Sourcing #java

10年码农生涯经验总结,聊聊工作中18种接口优化方案!

Java全栈架构师

Java 数据库 程序员 程序人生 性能优化

使用Docker踩坑,排查完问题之后,又涨知识了

程序员小毕

Java Docker 程序员 程序人生 后端

TiFlash 源码阅读(八)TiFlash 表达式的实现与设计

TiDB 社区干货传送门

React性能优化的8种方式

xiaofeng

React

.NET平台上的分布式编程框架MBrace发布1.0版本_.NET_Pierre-Luc Maheu_InfoQ精选文章