《高伸缩性系统:Erlang/OTP大型分布式容错设计》是一本罕见的站在核心设计者而非普通开发者角度介绍 Erlang/OTP系统的权威书籍。两位作者均是深耕分布式计算领域超过20年的专家。《高伸缩性系统:Erlang/OTP大型分布式容错设计》内容兼具深度与广度,不仅带领读者通过一步步实践的方式深入剖析了 Erlang/OTP中各类核心进程的行为模式的设计原理,并且还介绍了特殊进程、自定义行为模式、发行包制作等高级主题。除此之外,还用了大量篇幅向读者介绍了 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
- 跟踪与日志事件 238
- 合在一起 239
- 动态模块和休眠 243
- 属于你自己的 behavior 244
- 创建 behavior 时的要求 245
- 一个处理 TCP流的例子 245
- 总结 249
- 接下来是什么 250
- 第 11章 系统原则与发行包制作. 251
- 系统原则 252
- 发行包目录结构 253
- 发行包资源文件 257
- 创建发行包 260
- 创建 boot 文件 262
- 打包发行包 271
- 启动脚本以及目标上的配置 275
- 参数和标志 277
- init模块 289
- rebar3 290
- 生成一个 rebar3 发行包项目 292
- 使用 rebar3 创建发行包 295
- 使用 rebar3 处理制作发行包时的项目依赖问题 298
- 总结 300
- 接下来是什么 304
- 第 12章 发行包升级 305
- 软件升级 305
- 第一个版本的咖啡机 FSM 308
- 添加一个新状态 311
- 为发行包创建升级 314
- 负责升级的代码 318
- 应用程序升级文件 322
- 高级指令 325
- 发行包升级文件 328
- 低级指令 330
- 安装升级 332
- 发行包处理器 334
- 升级环境变量 338
- 升级特殊进程 338
- 在分布式环境下升级 339
- 升级模拟器和核心 application 340
- 使用 Rebar3进行升级 341
- 总结 344
- 接下来是什么 346
- 第 13章 分布式架构 347
- 节点类型与家族 348
- 联网 351
- 分布式 Erlang 353
- 套接字与 SSL 359
- 面向服务和微服务的架构 361
- 点对点 362
- 接口 364
- 总结 366
- 接下来是什么 367
- 第.14.章 永不停止的系统 368
- 可用性 368
- 容错 369
- 弹性 370
- 可靠性 371
- 数据共享 375
- 一致性和可用性之间的权衡 383
- 总结 384
- 接下来是什么 385
- 第.15.章 水平规模伸缩 386
- 水平规模伸缩与垂直规模伸缩 386
- 容量规划 390
- 容量测试 392
- 平衡你的系统 394
- 找寻瓶颈 396
- 系统蓝图 398
- 负载调节与背压 399
- 总结 401
- 接下来是什么 403
- 第 16章 监视与抢救性支持 404
- 监视 405
- 日志 406
- 指标 411
- 警报 414
- 抢救性支持 416
- 总结 418
- 接下来是什么 420
- 索引 421