未来的并发和分布式编程

news/2024/5/20 7:51:43 标签: serverless

世界是并发的,我们周围的一切都是异步和事件驱动的。在最近召开的伦敦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(转载)


http://www.niftyadmin.cn/n/545601.html

相关文章

Android so库Hook技术

在有些情况下,可能遇到需要改变目标进程的执行流程的问题,替换原函数转而指向我们自己的函数,而Hook就是指的改变待Hook函数的地址,替换地址而达到更换原函数的功能。本文主要介绍Android上对native层中的so库Hook的方法&#xff…

搜狗微信指数上线 全面直观反映微信热点趋势

日前,搜狗搜索推出“搜狗微信指数”功能,专注于从微信公众号新媒体角度洞察社会热点的舆论动向和用户关注趋势,提供权威、精准的微信指数数据。这项依托于微信公众平台权威海量自媒体数据,以及搜狗搜索大数据处理和分析能力的新媒…

Dex2Oat源码流程(3)——Android6.0

在CompilerDriver的CompileMethod()方法中,可以看到调用了Compile()方法,而这个方法是由dex2oat的执行参数判断由QuickCompiler或OptimizationCompiler执行,本节主要分析–compiler-backendOptimizing的情况,即调用OptimizationCo…

雅虎修复邮件服务大漏洞:研究者获10000美金奖励

雅虎刚刚修复了一个可被攻击者用于劫持账户的邮箱漏洞,而此前,他们竟然可以在量身定制的邮件消息中嵌入恶意的JavaScript代码。该漏洞的可怕之处在于,即使用户只是阅读消息,代码也会被执行,然后攻击者就能够完全攻破受…

Java中==和equals的区别

在Java中,可以采用两种方式来比较值是否相同,分别为和equals,他们具有相同之处,也有很大的不同。 1. 比较的是变量的实际内存地址。 如果比较的是数据类型,只要他们的值相等,比如两种类型的100和100.0&am…

烦烦的一天

周末就这样完了,过的好快,今天取西单逛了一天,回宿舍时还好好的,但没多久就莫名的烦,原因是宿舍又有个女的对我说话很冲(话说我们是男女混住),还不带搭理我的,我不知道咋…

封装IP池和用户代理相应的类(python3)

一、middlewares.py源代码: 1 # -*- coding: utf-8 -*-2 # 导入随机模块3 import random4 # 导入有关IP池有关的模块5 from scrapy.contrib.downloadermiddleware.httpproxy import HttpProxyMiddleware6 # 导入有关用户代理有关的模块7 from scrapy.contrib.downlo…

Android应用程序的生成步骤

Android工程的打包共有两种方式: 通过eclipse或者Android Studio集成开发环境直接导出生成APK。使用Ant工具在命令行方式下打包生成APK。 整个APK打包过程分为七个步骤: 打包资源文件,生成R.java文件处理aidl文件,生成相应的Ja…