《七周七并发模型》第五章Actor引言

作者:Paul Butcher   译者:黄炎  出品方:图灵  出版社:人民邮电出版社 (感谢图灵授权并发编程网发布此文)

使用actor就像租车——我们如果需要,可以快速便捷地租到一辆;如果车辆发生故障,也不需要自己修理,直接打电话给租车公司更换另外一辆即可。

actor模型是一种适用性非常好的通用并发编程模型。它可以应用于共享内存架构和分布式内存架构,适合解决地理分布型的问题。同时它还能提供很好的容错性。

5.1 更加面向对象

函数式编程不使用可变状态,也就避免了共享可变状态带来的问题。相比之下,使用actor 模型保留了可变状态,只是不进行共享。actor类似于面向对象(OO)编程中的对象——其封装了状态,并通过消息与其他actor通信。

两者的区别是一个actor与其他actor是同时运行的,并且与OO式的“消息传递”(实质上只是调用一个方法)不同,actor之间的消息传递是真实地在传递消息。

actor模型是一个通用的并发编程模型,几乎可以用在任何一种编程语言里, 典型的是 Erlang①。而我们将用Elixir②来介绍actor模型,它是运行在Erlang虚拟机(BEAM)上的相对较新的一门编程语言。
与Clojure类似,Elixir是一门不纯粹的、动态类型的函数式语言。如果你熟悉Java或者Ruby,很容易就能看懂Elixir代码。与以往一样,我们不会把本章写成Elixir的教程(本书的主旨是并发,而不是编程语言),但仍将介绍一些必要的语言特性。如果你对这门语言并不熟悉,那就不得不在某些地方“盲目”接受本书的说法——如果想深入学习Elixir,推荐阅读Programming Elixir[Tho14]。

第一天,我们将学习actor模型的基础——如何创建actor、发送消息和接收消息。第二天,学习使用actor模型的程序具有容错性的关键:失败检测和“任其崩溃”的哲学。第三天,学习如何通过actor模型编写分布式程序,将计算扩展到多台计算机,并能从一台或多台计算机的崩溃中恢复过来。 

时间: 2024-12-31 02:25:55

《七周七并发模型》第五章Actor引言的相关文章

《七周七并发模型》第一章概述

并发编程虽不是新的概念,最近却逐渐热门起来.一些编程语言,如Erlang.Haskell.Go.Scala.Clojure,也因对并发编程提供了良好的支持,而受到广泛关注. 并发编程复兴的主要驱动力来自于所谓的"多核危机".正如摩尔定律①所预言的那样,芯片性能仍在不断提高,但相比加快CPU的速度,计算机正在向多核化方向②发展.正如Herb Sutter所说,"免费午餐的时代已然终结"③.为了让代码运行得更快,单纯依靠更快的硬件已无法满足要求,我们需要利用多核,也就是

《七周七数据库》一一第1章 概述

第1章 概述 七周七数据库当前是数据库世界的一个重要时刻.多年来,无论针对的问题是大还是小,关系模型一直是事实上的选择.我们不指望关系数据库会很快消失,但是人们正在从RDBMS的迷雾中走出来,寻找替代的方案,如无模式或可替代的数据结构,可简单复制,具有高可用性,可横向扩展,以及新的查询方法.这些选择统称为NoSQL,而NoSQL占据了本书的大部分内容. 本书将探讨七种数据库,涉及各种数据库风格.在阅读本书的过程中,你将了解每个数据库具有的各种功能和折中,如持久性与速度.绝对一致性与最终一致性等,

《七周七数据库》一一1.2 风格

1.2 风格 七周七数据库 如同音乐一样,各种数据库有着其本身独特的风格.所有的歌曲都使用同样的音符,但是有些音符对某些网络的歌曲更合适.少有人驾驶着敞篷车,沿着405号公路超速行驶,同时播放巴赫的<B小调弥撒曲>.同样,在某些情况下,一些数据库比其他数据库更好些.你要问的不是"我能够用这个数据库来存储和完善数据吗?"而是"我应该用这个数据库吗?" 本节将要探讨5种主要的数据库类型,也会简单介绍每种类型中我们要关注的数据库. 重要的是要记住,你将面临的大

《七周七数据库》一一2.2 第1天:关系、CRUD和联接

2.2 第1天:关系.CRUD和联接 七周七数据库 我们虽然不会把你当作是一个关系数据库专家,但是确实会假设你曾用过一两个数据库.这些数据库很可能是关系型的.我们将开始创建自己的数据表,并填充数据.然后尝试查询一些行.最后探讨关系数据库中非常重要的表联接. 就像大多数数据库一样,Postgres提供一个后台服务进程(Backend),它完成所有数据处理工作,还提供一个命令行客户端程序,通过它连接到运行中的服务进程.服务进程默认监听5432端口,可以用psql这个命令行工具连接. 数学关系 关系数

《七周七数据库》导读

前言 七周七数据库 前言 如果说数据是新的石油,那么数据库就是油田.炼油厂.钻井和油泵.数据存放在数据库中,如果你有兴趣利用它,那么掌握相应的现代化的工具就是好的开始. 数据库是工具,它们是到达终点的手段.每种数据库都有自己保存数据和看待世界的方式.你对它们的理解越多,就越能随心所欲,在日益增长的大数据上,就能更好地利用它们潜在的能力. 为什么是7种数据库 早在2010年3月,我们就想写本关于NoSQL的书.NoSQL这个术语已经聚集了人气,虽然许多人都在谈论,但关于它似乎也存在相当多的困惑.N

《七周七数据库》一一1.1 从一个问题开始

1.1 从一个问题开始 七周七数据库 本书的核心问题是:哪种数据库或数据库组合最好地解决了你的问题?读完本书,如果你知道如何根据特定需求和手头的资源做出这种选择,我们会很高兴. 但要回答这个问题,你需要了解你的选择.为此,我们将带你深入这7个数据库,揭示精华,并指出瑕疵.你将亲手尝试CRUD操作,发挥你使用的模式的力量,并找到下面这些问题的答案: ● 这是什么类型的数据库?数据库分为各种类型,例如,关系型.键-值型.多列型.面向文档型和图型.流行的数据库(包括本书中介绍的)一般可以划分为这几大类

《七周七数据库》一一2.5 总结

2.5 总结 七周七数据库 如果你没有接触过太多关系数据库的话,在决定放弃它而采用新类型的数据库之前,我们强烈建议更深入地学习PostgreSQL,或其他关系数据库.在过去的40多年里,关系数据库是大量学术研究和业界改进的重点,PostgreSQL是受益于这些进步的顶级开源关系数据库之一. 2.5.1 PostgreSQL的优点 和所有关系模型一样,PostgreSQL的优势很多:多年的研究,几乎每个计算领域的实践使用,灵活的查询能力,非常一致和持久的数据.在大多数编程语言中,都有经过实战考验的

《七周七数据库》一一2.1 这就是Post-greS-Q-L

2.1 这就是Post-greS-Q-L 七周七数据库2.1 这就是Post-greS-Q-L在本书提到的数据库中,PostgreSQL是历史最悠久.实战经验最丰富的.它的扩展包括自然语言解析.多维索引.地理查询.自定义数据类型等.它具有高级的事务处理能力,支持十几种不同语言的存储过程,能在各种平台上运行.PostgreSQL内置支持Unicode.序列.表继承.子查询,而且是市场上遵循ANSI SQL标准最好的关系数据库之一.它快速可靠,可以处理TB量级的数据,并且已经在一些高知名度的生产系统

《七周七数据库》一一2.3 第2天:高级查询、代码和规则

2.3 第2天:高级查询.代码和规则 七周七数据库昨天,我们看到了如何定义数据库表,然后插入数据,更新和删除行,以及读数据.今天我们将更深入探讨PostgreSQL查询数据的各种方法. 我们将看到如何对相似的值归类,在服务器端执行代码,并使用视图(view)和规则(rule)创建自定义接口.在这一天的最后,我们将利用PostgreSQL的一个扩展包翻转表头. 2.3.1 聚合函数 聚合查询按照一些共同的标准将多行的结果分组.它可以简单到统计一张表的行数,或计算某些数值列的平均值.它们是强大的SQ