微软开源 rDSN 分布式系统开发框架

微软亚洲研究院系统组开发的分布式系统开发框架——Robust Distributed System Nucleus(rDSN)通过GitHub平台开源。rDSN旨在为广大分布式系统的开发者,学生,和研究人员提供一个开放式的框架,用于快速搭建和运维高性能和高鲁棒的分布式系统,而后者对于当前很多技术的成功都至关重要,比如云计算,大数据和物联网等。

rDSN的思想来源于系统组过去在分布式系统开发和运维各个阶段进行的各种自动化项目。这些项目尝试帮助开发者更快捷有效地测试,调试,优化,监控,扩展(Scale-out),复制(Replicate),组合(Compose),甚至推理(Reason)。这些项目遇到了很多的困难,很多是由于开始的代码工作没有考虑这些需求,导致后期的开发事倍功半。rDSN提供了一个开发框架使得开发人员一开始也不需要考虑这些问题,但是代码会符合一定的原则,使得后期可以用很小的甚至零代价升级他们的代码来实现上面提到的需求。rDSN的一个早期版本在Bing里面用于开发一个分布式数据服务系统,该系统已经上线并运行良好。根据产品组的反馈,rDSN进行了改进并希望通过开源的方式对社区有所贡献,特别是对那些分布式系统的相关开发人员,学生和研究者有所帮助。

对于开发者而言,rDSN可以帮助改善开发和运维体验,来提高系统的编程敏捷性,性能以及鲁棒性。rDSN最简单的用法可以看成是一个和主流RPC框架(比如Apache Thrift)等兼容的升级版RPC框架,或者是一个采用基于事件编程的高性能任务库。开发者设置rDSN为测试模式,来系统性地模拟各种各样的调度决策和系统错误,来提早暴露系统可能的缺陷。当错误发生时,rDSN能重放发生的错误,并把分布式系统所有节点的状态放在一个进程里调试,而且不必担心由于调试导致意外的timeout。当系统上线以后,rDSN提供了自动过的执行流跟踪和性能检测。如果你对rDSN自带的底层库不满意(比如网络库或者日志系统等),rDSN是一个开放的框架因此你可以非常方便地替换它们。再比如,当你需要处理更大规模的输入并且想要提高系统的可用性,rDSN提供了复制框架(replication framework)来把单机服务变成多机+自动复制的服务,而这其中只需要非常少的进一步的开发。总之,rDSN提供并且帮助开发工具和运行时框架能够和上层应用无缝集成,能够极大地提高开发和运维的效率。

对于学生来说,rDSN提供了一个能够方便地简化,理解,和操纵分布式系统的平台。当学习一个分布式系统协议的时候,你可以在rDSN的模拟器模式下编写和调试。该模拟器能够简化实际系统中的很多复杂性,并在需要的时候慢慢把这些复杂性加回去。比如,从单线程到多线程,从同步且可靠的网络到异步不可靠网络。为了理解协议是如何运作的,rDSN提供了自动的执行流跟踪,并且会产生一个“事件矩阵”来记录代码之间的调用关系和频率,以揭示系统内部的依赖关系及其相关权重。

很多分布式系统的研究人员常常期望提供通用的分布式系统的相关工具和运行时策略。rDSN提供了专门的工具API(Tool API)来帮助这方面的工作。工具API提供了底层模块的虚拟化,并且把上层系统的所有不确定性都暴露了出来。这使得构建高效和可靠的工具和运行时策略成为可能。目前开源的这个版本里面就包含了很多这方面的例子。此外,rDSN的设计保证了这些工具和运行时策略能够和基于rDSN的上策应用无缝集成,因此这些研究成果都能很快地进入实际部署。

rDSN的开源一方面能够帮助到社区,另一方面也期待着社区反馈相关成果来大家一起把分布式系统的开发变得更加简单高效。
文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-12-23 07:44:31

微软开源 rDSN 分布式系统开发框架的相关文章

Facebook、微信团队、Twitter、微软开源软件列表一览

  编者按:本文来自微信公众号"InfoQ"(ID:infoqchina),编辑小智:36氪经授权发布. 对于为什么要发布开源项目,Facebook开源项目负责人曾经解释过:一是开源能够帮助他人更快地开发软件,促进世界创新,主要是社会价值层面的考虑.二是开源能够倒逼Facebook的工程师写出更好的代码.三是开源能够更有效利用社区的力量,帮助Facebook一起解决难题.开源,让世界更美好,不是吗? Facebook开源软件列表 从Facebook的GitHub账户中可以看到,Face

微软爱开源?| 启路CTO朱永光为你讲解微软开源的那些事

编者按:随着微软的股价节节攀升,同时在最近的硬件大战中力克老对手苹果,大家熟知的那个微软又回到了大家的视野,本文给很多不熟悉微软开源技术的朋友普及一下微软最近几年在开源方面所做的努力和成效,毕竟很多人对微软的技术还停留在10年前的认知上,自从微软新CEO上任后,进行了一系列的大刀阔斧的改革,其中拥抱Linux是浓墨重彩的一笔.本文选自于启路CTO朱永光大神在中生代十月十城成都的分享,朱老师在讲解干货的同时,也不忘现场写代码演示如何搭建简单的Hello World,欢迎大家观看视频! 过去几年中微

TensorFlow 1.0 正式发布;微软开源无人机虚拟训练平台 AirSim | AI开发者头条

TensorFlow 1.0  正式发布! 在昨晚揭幕的 TensorFlow 开发者峰会上,谷歌正式发布了 TensorFlow 1.0 版本.新版本带来三大主要优化: 大幅提升的运算速度,尤其是对于多 GPU.分布式计算场景. 对高级别 API 有更好的兼容性,尤其完全兼容 Keras 改进 API 稳定性  注:本次峰会是 TensorFlow 史上第一届开发者峰会,在加州山景城举行,颇值得大家关注.详情请关注雷锋网后续报道. TensorFlow 1.0 详情:http://www.le

纳德拉时代下的微软开源之路

在鲍尔默时代,你很难会想象微软会与"开源"这两个字扯上什么关系,因为在鲍尔默的心中,开源操作系统Linux是毒瘤.不过进入纳德拉时代之后, 微软的态度来了一个180度大转弯,尽管那句"Microsoft Love Linux"听起来有些暧昧,但是微软确实是深深爱上了开源. 此前Linux基金会公布非营利组织R Consortium之后,微软也成为了该组织的一名成员.但是现在,微软又在开源领域有了新的动向.**Office 365** 日前微软开源技术团队正式宣布,

开发者福音,微软开源Kinect源代码

开发者福音,微软开源Kinect源代码发表于18小时前| 次阅读| 来源CSDN| 0 条评论| 作者翟方庆微软Kinect开源摘要:微软根据开源协议开放了Kinect的部分源代码,包括用于面部追踪.骨骼查看器和连续手势的代码,代码由C#.C++和VB编写.微软通过Apache 2.0开源协议将这些代码提供给开发者,开发者可以重用目前的Kinect代码,并帮助微软对其进行改进. Kinect已经成为一项经常被微软在公共场合提及的热门技术.为了推进Kinect体感控制器成为PC端的自然用户界面设备

GitHub贡献第一的公司是谁?微软开源软件列表

提起微软公司,不少人第一反应是老牌巨头专注于私有化软件盈利模式,这大抵是源于微软前CEO Steve Ballmer曾经宣称"Linux是颗毒瘤(Linux is a cancer)",并曾经偏执地认为所有开源软件都不值一提.但是,这是2001年的事情了,是时候更新大家对微软的刻板印象. 这里,不提继任者Satya Nadella的微软拥抱开源进行新式转型的决策,也不提微软去年加入Linux基金会等开源组织的举动.单单而言,只问一个问题:哪家公司在GitHub上贡献最多?不是Faceb

微软开源 Visual Studio 构建工具 MSBuild

继 .NET 开源之后,微软又在 GitHub 上开放了其 Visual Studio 构建工具 MSBuild 的源代码. MSBuild 是 Visual Studio 中将源代码编译为程序的构建引擎,它为开发者提供自动化构建.性能测试和程序打包功能. 本次开源的版本与 Visual Studio 2015 中包含的版本类似,但存在部分不同.微软方面称将在后期逐步抹平差异. 此外,微软承诺会将 MSBuild 迁移至 Linux 和 Mac 平台上,以便开发者在其它平台使用 .NET 和 M

微软开源Chakra,并计划在上面运行Node.js

微软兑现了开放Edge浏览器JavaScript虚拟机的承诺,遵循宽松的MIT许可协议开放了Chakra的源代码.开源代码以ChakraCore的名称发布,基本上同微软用于Edge和通用Windows平台(UWP)的VM是同一个,只是去掉了同Edge和UWP的绑定以及部分COM诊断API. ChakraCore是作为一个嵌入式引擎推出的,可以包含到各种桌面.服务器和IoT应用程序中,微软希望开发者发现它在这个方面的用途.该引擎使用JavaScript运行时(JSRT)API进行了封装,后者提供了

微软开源XAML Behaviors

长期以来,XAML Behaviors都是WPF/Silverlight开发中一个令人懊恼的部分.尽管用处极大,但该库的分发和维护方法有些奇怪.随着XAML Behaviors开源公告的发布以及相应NuGet包的创建,该问题最终得到了解决. XAML Behaviors非常重要,因为它们提供了一种方法,让开发人员能够以一种简洁.可重复的方式轻松地向UI对象添加功能.他们无需创建控件的子类或重复编写逻辑代码,只要简单地增加一个XAML代码片段.下面的例子摘自Anoop Madhusudanan题为