聊聊分布式计算
不管是网络、内存还是存储的分布式,它们的最终目标都是实现计算的分布式:数据在各个计算机节点上流动,同时各个计算机节点都能以某种方式访问共享数据,最终分布式计算后的输出结果被持久化存储和输出。分布式计算作为分布式系统里最重要的一个能力和目标,也是大数据系统的关键技术之一。经过多年的发展与演进,目前业界已经存在很多成熟的分布式计算开源编程框架和平台。作为架构师,我们应该尽可能地了解和掌握这些框架和平台。
不得不说的 Actor模型
Actor模型于1970年年初被提出,为并行计算而生,理念非常简单:所有对象皆Actor,在Actor之间仅通过发送消息进行通信,所有操作都是异步的,不同的Actor可以同时处理各自的消息,使整个系统获得大规模的并发能力。但是,该理念在当时有些超前,因此很快被人遗忘。
直到Erlang这种基于Actor 模型设计的面向并发编程的新语言横空出世,在并发领域竖起一座丰碑,Actor 模型才再次成为分布式计算领域的热点技术之一 。
目前,几乎在所有主流开发平台下都有了Actor模型的实现: Java平台下Scala的Actor类库和Jetlang; NET 平台下的MS CCR和Retlang; F#平台 下的MailboxProcessor; 微软基于MSCCR构建的新语言Axum。
Smalltalk的设计者、面向对象编程之父AlanKay曾经这样描述面向对象的本质:
很久以前,我在描述“面向对象编程”时使用了“对象”这个概念。很抱歉这个概念让许多人误入歧途,他们将学习的重心放在了“对象”这个次要的方面,而忽略了真正主要的方面一“消息”。创建一个规模宏大且可水平扩展的系统的关键,在于各个模块之间如何交流,而不在于其内部的属性和行为如何表现。