技术教育社区
www.teccses.org

高伸缩性系统:ERLANG/OTP大型分布式容错设计

封面

作者:(英)FrancescoCesarin

页数:460

出版社:电子工业出版社

出版日期:2017

ISBN:9787121337475

电子书格式:pdf/epub/txt

内容简介

这是一本罕见的站在核心设计者而非普通开发者角度介绍 Erlang/OTP 系统的书籍。两位作者均是深耕分布式计算领域超过20年的专家。本书内容兼具深度与广度,不仅带领读者通过一步步实践的方式深入剖析了 Erlang/OTP 中各类核心进程的行为模式的设计原理,并且还介绍了特殊进程、自定义行为模式、发行包制作等不错主题。除此之外,还用了大量篇幅向读者介绍了 Erlang/OTP 系统中的设计原则、架构分布式系统的方法,以及在此基础上实现容错和规模伸缩所需了解的相关知识。对于任何一位渴望基于 Erlang/OTP 构建出商业级的分布式、高伸缩性、容错型系统的开发者,本书都是不容错过的经典之作。

作者简介

佛朗西斯科?切萨利尼(Francesco Cesarini)是 Erlang Solutions 公司的创始人与技术总监。早在 1995年,他便在爱立信计算机科学实验室——Erlang 的诞生地——开始了实习生涯,自那开始至今,他每天都在使用 Erlang 编程语言。之后他转到了爱立信的 Erlang 培训与咨询部门,参与开发了 OTP 的 R1 版本,致力于提供最级电信应用的一站式解决方案。1999 年,Erlang 转为开源方式发布后不久,他便开始创业,最终发展成了如今我们所见的 Erlang Solutions 公司。该公司跨越三大洲,在七个国家设有办事处,已成为高伸缩性、高可用性的端到端解决方案领域的最合作伙伴。作为技术总监,佛朗西斯科领导 Erlang Solutions 公司的开发和咨询团队,负责产品和战略研究。他同时还是Erlang Programming一书的合著者,该书由 O’Reilly 出版社出版。他在哥德堡IT大学(IT University of Gothenburg)讲课已超过10年,并且自 2010 年起开始在牛津大学教授面向并发的编程(concurrency-oriented programming)课程。你可以通过搜索 @FrancescoC 在 Twitter 上找到他。—-史蒂夫?温斯基是 Arista Networks 公司的软件开发人员。在他超过30年的软件开发生涯中,大部分时间都在从事中间件与分布式计算系统的研发。直到 2006 年,在他已经用 C 和 Java 开发中间件系统 20 年后,他发现了 Erlang,自那以后,他便开始把 Erlang 作为自己的主力开发语言。史蒂夫曾经为各种各样的 Erlang 项目做过贡献,包括 Riak 数据库与 Yaws Web 服务器等。他还为 Erlang/OTP 代码库贡献过许许多多的功能修正与增强补丁。佛朗西斯科?切萨利尼(Francesco Cesarini)是 Erlang Solutions 公司的创始人与技术总监。早在 1995年,他便在爱立信计算机科学实验室——Erlang 的诞生地——开始了实习生涯,自那开始至今,他每天都在使用 Erlang 编程语言。之后他转到了爱立信的 Erlang 培训与咨询部门,参与开发了 OTP 的 R1 版本,致力于提供最级电信应用的一站式解决方案。1999 年,Erlang 转为开源方式发布后不久,他便开始创业,最终发展成了如今我们所见的 Erlang Solutions 公司。该公司跨越三大洲,在七个国家设有办事处,已成为高伸缩性、高可用性的端到端解决方案领域的最合作伙伴。作为技术总监,佛朗西斯科领导 Erlang Solutions 公司的开发和咨询团队,负责产品和战略研究。他同时还是Erlang Programming一书的合著者,该书由 O’Reilly 出版社出版。他在哥德堡IT大学(IT University of Gothenburg)讲课已超过10年,并且自 2010 年起开始在牛津大学教授面向并发的编程(concurrency-oriented programming)课程。你可以通过搜索 @FrancescoC 在 Twitter 上找到他。—-史蒂夫?温斯基是 Arista Networks 公司的软件开发人员。在他超过30年的软件开发生涯中,大部分时间都在从事中间件与分布式计算系统的研发。直到 2006 年,在他已经用 C 和 Java 开发中间件系统 20 年后,他发现了 Erlang,自那以后,他便开始把 Erlang 作为自己的主力开发语言。史蒂夫曾经为各种各样的 Erlang 项目做过贡献,包括 Riak 数据库与 Yaws Web 服务器等。他还为 Erlang/OTP 代码库贡献过许许多多的功能修正与增强补丁。
林建入,资深程序员,熟悉网络协议与分布式系统设计以及其他。优点是开朗、话多,热爱家庭,志存高远,亲切友好。缺点是一有机会就溜去游戏厅打拳皇,玩了20年竟也不腻,我都拍着胸口佩服我自己,但是最近总被爱妻抓回家有点困扰。

本书特色

这是一本罕见的站在核心设计者而非普通开发者角度介绍 Erlang/OTP 系统的权威书籍。两位作者均是深耕分布式计算领域超过20年的专家。本书内容兼具深度与广度,不仅带领读者通过一步步实践的方式深入剖析了 Erlang/OTP 中各类核心进程的行为模式的设计原理,并且还介绍了特殊进程、自定义行为模式、发行包制作等高级主题。除此之外,还用了大量篇幅向读者介绍了 Erlang/OTP 系统中的设计原则、架构分布式系统的方法,以及在此基础上实现容错和规模伸缩所需了解的相关知识。对于任何一位渴望基于 Erlang/OTP 构建出商业级的分布式、高伸缩性、容错型系统的开发者,本书都是不容错过的经典之作。

目录

目录
第 1章 概述…………………………………………………………….. 1

定义问题 …………………………………… 2
OTP ………………………………………….. 4
Erlang ………………………………… 6
工具和库 ……………………………. 7
系统设计原则 ……………………… 9
Erlang 节点 ………………………. 10
分布式、基础设施、多核 ………….. 11
总结 ……………………………………….. 12
通过本书你将学到什么……………… 13

第 2章 Erlang.简介. …………………………………………………..18

递归与模式匹配 ……………………….. 18
受函数式的影响 ……………………….. 22
玩转匿名函数 ……………………. 22
列表推导:生成与测试 ………. 23
进程与消息传递 ……………………….. 25
不怕出错 …………………………………. 30
用于监督的链接与监视器 ………….. 31
链接 …………………………………. 31
监视器 ……………………………… 33
记录 ……………………………………….. 34
映射组 …………………………………….. 37
宏 …………………………………………… 38

模块升级 …………………………………. 39
ETS:Erlang 元素存储 ……………… 41
分布式 Erlang ………………………….. 44
命名与通信……………………….. 45
节点间的连接与可见性 ………. 45
总结 ……………………………………….. 47
接下来是什么 ………………………….. 47

第 3章 行为模式. ……………………………………………………… 49

进程的骨架 ……………………………… 49
设计模式 …………………………………. 52
回调模块 ………………………….. 53
抽取出通用的行为模式……………… 56
启动 server ……………………….. 57
client函数 ………………………… 60
server循环 ……………………….. 62
server内部函数 …………………. 64
通用服务器 ……………………………… 65
消息传递:冰山之下 ………………… 68
总结 ……………………………………….. 71
接下来是什么 ………………………….. 72

第 4章 通用型服务器.gen_server. …………………………………. 73

gen_server ……………………………….. 73
behavior指令 …………………………… 74
启动一个 server ………………………… 75
消息传递 …………………………………. 77
同步式消息传递 ………………… 78
异步式消息传递 ………………… 79
其他消息 ………………………….. 81
未处理的消息 ……………………. 82
同步客户端……………………….. 83
终止 ……………………………………….. 84
调用超时 …………………………………. 86

死锁 …………………………………. 89

通用型 server的超时问题 ………….. 90
使 behavior休眠 ………………… 92
全局化 …………………………………….. 92
链接 behavior …………………………… 94
总结 ……………………………………….. 94
接下来是什么 ………………………….. 95

第 5章 深入控制 OTP行为模式……………………………………… 96

sys模块…………………………………… 96
追踪与记录……………………….. 96
系统消息 ………………………….. 98
你自己的追踪函数 …………….. 98
统计信息和当前状态 ………….. 99
sys 模块总结 …………………… 102
分裂时的可选项 ……………………… 103
内存管理与垃圾回收 ………… 104
分裂时应该避免使用的可选项 ……………………………………………………………….. 108
超时 ……………………………….. 109
总结 ……………………………………… 109
接下来是什么 ………………………… 109

第 6章 有限状态机. ………………………………………………….. 110

Erlang 风格的有限状态机………….111
Coffee FSM ……………………………. 112
硬件桩 ……………………………. 114
Erlang 版咖啡机 ………………. 114
gen_fsm …………………………………. 118
一个基于行为模式的例子 ………… 119
启动 FSM ……………………….. 119
发送事件 ………………………… 123
终止 ……………………………….. 132
总结 ……………………………………… 133
亲力亲为 ……………………………….. 134

电话控制器……………………… 134
让我们测试一下 ………………. 136
接下来是什么 ………………………… 138

第 7章 事件处理器. …………………………………………………..139

事件 ……………………………………… 139
通用事件管理器/处理器 ………… 141
启动/停止事件管理器 …….. 141
添加事件处理器 ………………. 142
删除事件处理器 ………………. 144
发送同步的或异步的事件 …. 145
获取数据 ………………………… 148
对错误以及无效返回值的处理 ……………………………………………………………….. 150
交换事件处理器 ………………. 152
融会贯通 ………………………… 154
SASL警报处理器 …………………… 157
总结 ……………………………………… 159
接下来是什么 ………………………… 159

第 8章 监督者………………………………………………………..160

监督树 …………………………………… 161
OTP监督者 ……………………………. 165
监督者行为模式 ………………. 166
启动监督者……………………… 166
监督者规格……………………… 169
动态子进程……………………… 176
非 OTP兼容进程 …………….. 184
可伸缩性和短期进程 ………… 186
确定性同步启动 ………………. 187
测试你的监督策略 …………… 188
与传统方法相比又如何……………. 190
总结 ……………………………………… 190
接下来是什么 ………………………… 191

第.9.章 OTP.application…………………………………………..192

OTP application是如何运行的 …. 193
OTP application的结构 ……………. 194
回调模块 ……………………………….. 198
启动和停止 application …….. 198
application资源文件 ……………….. 202
基站控制器的 application文件 ………………………………………………………………. 204
启动 application ……………………… 205
环境变量 ……………………………….. 208
application的类型与终止策略 ….. 210
分布式 application …………………… 211
分阶段启动 ……………………………. 215
内含型 application …………………… 217
内含型 application 的分阶段启动 …………………………………………………………… 217
将监督者与 application组合到一起 ……………………………………………………………….. 219
SASL应用 …………………………….. 220
进度报告 ………………………… 224
错误报告 ………………………… 225
崩溃报告 ………………………… 226
监督者报告……………………… 227
总结 ……………………………………… 228
接下来是什么 ………………………… 229

第.10.章 基于特殊进程打造自己的 behavior……………………….230

特殊进程 ……………………………….. 230
互斥体 ……………………………. 231
启动特殊进程 ………………….. 232
互斥体的状态 ………………….. 235
处理退出 ………………………… 236
系统消息 ………………………… 237
跟踪与日志事件

下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《高伸缩性系统:ERLANG/OTP大型分布式容错设计》
Article link:https://www.teccses.org/907021.html