未来的并发和分布式编程

世界是并发的,我们周围的一切都是异步和事件驱动的。在最近召开的伦敦Qcon大会上,Joe Duffy在他的主题演讲里宣称,未来每一个开发者都需要同并发和云打交道。其中的核心在于通信,它对于并发和分布式系统都至关重要。

Duffy曾任微软的语言和编译器工程总监,他认为分布式的就是并发的;本质上就是很多件事在同一时间一起发生。唯一的区别在于,在分布式系统中,事情发生时,彼此相距较远,比如在不同的处理器、服务器或者数据中心。这个差异很重要,尤其对于通信来说。使用内存共享还是采用把时延控制在毫秒级的网络通信会带来不同的约束和能力,也会影响系统架构。

并发编程和分布式编程在早期的计算机科学中有着相同的根源。在早期,问题总是由异步带来的。Duffy认为,Butler Lampson在构建分布式系统方面是最伟大的思想家之一,尤其在可靠性方面,他也强烈推荐了Lampson的论文,即1983年发表的“系统设计”。Duffy宣称,在2000年之后多核CPU开始出现至今,在并发编程领域我们没有发明任何东西。相反,我们回过头去找早期的想法和发表的论文。

在未来,Duffy期望看到分布式编程的回归,有越来越多设计良好的分布式系统使得系统看起来更像经典的并发系统。我们已经学了不少关于构建并发系统的东西,他则强调了七条关键经验:

先思考通信。它必须是任何分布式应用架构的一部分。Ad-hoc通信会带来可靠性的问题。而Actor模式和队列则是好的范例。 概要设计很有用,但是不要盲目相信它。服务器总是以跟客户端不同的速度发生变化,Duffy以Internet为例说明了即便如此也可以工作的很好。 安全很重要,但是很难做到。安全性的缺乏可能会导致资源竞争、死锁或者未定义行为的出现。Duffy认为,更好的安全形式是做好隔离。如果无法做到,你需要做到不可改变。如果这也做不到,你需要采用标准同步机制。 在设计时为失败做好准备,因为总会有错误发生的。Duffy认为,我们的设计应该考虑可复制和重启能力,还说明了,故障恢复对于一个可靠的并发系统来说是必需的。 结构应该反映因果关系。一连串的事件引发的某个行为在并发系统里可能是非常复杂的。有相关上下文可以简化对这些事件和行为的跟踪。 编码结构采用并发模式,以使其更容易理解系统。Duffy的两个最喜欢的模式是Fork-Join和Pipeline。 少说,多用声明和反应式编程。声明和反应模式善于把难题交给编译器和框架来处理。他认为Serverless是这个想法在只有一个事件和一个动作时的特殊实例。
Duffy在最后总结强调了,未来是分布式的,他期望在分布式编程方面见到更多有启发的先锋。我们当下的编程语言对于并发支持的很好,他期望编程语言能渐渐对于分布式和云编程也支持的更好,最好能把他提到的七点內建进去。

本文转自d1net(转载)

时间: 2024-09-14 06:48:14

未来的并发和分布式编程的相关文章

分布式编程模式中的租约、事务和分布式事件机制

Jini技术面向网络及分布式计算的特性决定了Jini技术必然与传统的单机系统在许多方面有概念上和实际应用中的差别.如网络的延迟.失败,或者设备的突然撤出,将导致信息的无序和丢失:资源的获得.保存.维护和回收情况更为复杂:不同实体之间通讯和协调工作的可靠性及效率并不像单机系统中那样较为容易地获得保证.因而在 Jini 中以 Java 为基础加入了分布式编程模式,特别是引入了租约.分布式事务和分布式事件. 租约 租约的基本概念是资源只能被使用一段时间,这由租约的持有者(lease holder)和租

分布式编程模型的设计与演化

分布式编程模型的背景 编程模型是指编程的方法而不是特指某一种编程语言,如面向对象的编程就是一种编程模型.编程模型大致分为两类:命令式编程和声明式编程.前者最典型的是面向过程的编程语言,如C语言:后者与前者差异较大,如常见的SQL语言就是一种典型的声明式语言.   上图是命令式和声明式语言统计文件(表)内行数的具体程序,可以看出两者存在明显的差距.在命令式编程中,会有很多细节,需要告诉程序每一步做什么,中间状态怎么维护以及如何得到最终结果:而声明式编程相对更加简洁,更加注重结果而不考虑过程.  

Erlang是未来用于并发性的Java?

问题描述 未来的计算是并发计算.现今甚至桌面CPU也是多核的,当客户给他们的服务器购买了越来越多的CPU时,他们期望其应用伸缩自如以利用他们的新投资.但是今天的许多软件系统并不能做到这一点.处理并发计算是件困难的事情.但是在普遍使用的编程语言中,并发机制与同一语言的许多其他抽象相比是低层机制,对解决这一问题没有帮助.处理并发性需要做许多工作,但是有使其更简单的方法.Ralph Johnson 撰写了一篇关于 Erlang 将成为 下一个Java的博文.Erlang进程间通讯的视角完全不同,而且R

光伏未来发展还要看分布式,与火电同价并不可怕!

近日,光伏行业协会秘书长出席PVCE2017时表示,2017年1~9月新增装机量42GW左右,同比增长60%,其中分布式超过300%.9月份单月新增装机3.8GW,同比增长412%.浙江地区截至2017年7月已经拥有光伏8.5万户,嘉兴2017年前5个月新增超过6000户,累计达到12000户. 未来分布式是投资主线 光伏未来发展还要看分布式.由于三北地区弃光严重,国家补贴政策逐步向中东部地区倾斜,同时<推进并网型微电网建设试行办法>中要求可再生能源装机容量占比在50%以上,兔子君认为未来光伏

Erlang入门(三)——分布式编程

  明天要回家一个星期了,好好休息下.今天找到别人翻译的Erlang编程手册,值的好好读一遍.     所谓分布式的Erlang应用是运行在一系列Erlang节点组成的网络之上.这样的系统的性质与单一节点上的Erlang系统并没有什么不同.分布式这是个"大词",Erlang从语言原生角度支持分布式编程,相比于java简单不少. 一.分布式机制 下列的BIFs是用于分布式编程:spawn(Node, Mod, Func, Args) 启动远程节点的一个进程 spawn_link(Node

用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试_python

MapReduce与HDFS简介 什么是Hadoop? Google为自己的业务需要提出了编程模型MapReduce和分布式文件系统Google File System,并发布了相关论文(可在Google Research的网站上获得: GFS . MapReduce). Doug Cutting和Mike Cafarella在开发搜索引擎Nutch时对这两篇论文做了自己的实现,即同名的MapReduce和HDFS,合起来就是Hadoop. MapReduce的Data flow如下图,原始数据

推荐阅读Java并发性领域编程最值得一读的力作《JAVA并发编程实践》

我的第一次之给<JAVA并发编程实践>写推荐序英文书名:Java Concurrency in Practice 中文书名:JAVA并发编程实践 这是一本入围17届Jolt大奖的书,虽然最终他没有获奖,但是这只是与政治有关的.:) 推荐序原文如下: http://book.csdn.net/bookfiles/398/10039814644.shtml 在汗牛充栋的 Java 图书堆中,关于并发性的书籍却相当稀少,然而这本书的出现,将极大地弥补了这一方面的空缺.即使并发性编程还没进入到您的 J

微软的未来赌注:可再编程计算机芯片

编者按:微软正在做巨硬的东西,这听起来似乎不可思议.但这就是事实,而且正是因为软件不断增长的需求难以得到满足才让微软萌生了这个想法.这个想法曾经被认为是白日梦,但现在Project Catapult做出来的FPGA芯片已经部署到微软的Bing.Azure以及Office 365等服务上.未来几年微软的几百万台服务器都将部署这种专门加速计算的芯片.除了微软,Google.Amazon等互联网巨头也在探索着为AI等应用加速的新硬件,鉴于这些新硬件的部署规模,也许互联网巨头的未来将取决于他们采用哪一种

.net分布式编程5个基本原则

问题描述 以前买的一本书上介绍的....原则1:保守分布原则2:本地化相关内容原则3:使用Chunky接口,而不是chatty接口看原文...原则4:优先选用无状态对象,而不是有状态对象原则5:接口编程,而不是具体实现的编程 解决方案 解决方案二:我只能发表情了解决方案三:该回复于2016-05-31 23:14:40被版主删除