分布式系统应用设计(第二版)
分布式系统应用设计(第二版)
Brendan Burns
高晓明 译
出版时间:2026年02月
页数:202
“学习分布式系统充满了挑战,但Brendan Burns通过引入标准化、易于理解和使用的模式,使这项任务变得更安全、更简单、更易于掌握。”
——Anne Currie,Strategically Green Learning and Development首席执行官,
《 Building Green Software》作者

每个分布式系统都追求可靠性、性能与质量,但构建这样的系统充满挑战。建立一套设计模式能让软件开发者和系统架构师使用通用语言描述系统,并从他人开发的模式与实践中汲取经验。
容器与Kubernetes的普及为核心分布式系统模式和可复用的容器化组件铺平了道路。本实践指南汇集了一系列可复用的通用模式,通过借鉴当今性能最佳的分布式系统中采用的通用模式与实践,为构建系统提供指导。即使你从未构建过分布式系统,这些通用模式也能使你构建的系统更易于上手且更高效。
本书作者展示了如何改造现有软件设计模式来设计与构建可靠的分布式应用。系统工程师和应用开发者将了解这些久经考验的模式如何通过提供通用的语言和框架,显著提升系统质量。
本次全面更新的第二版新增了关于AI推理、AI训练,以及构建面向现实世界的健壮系统的章节。
● 理解模式与可复用组件如何助力快速开发可靠的分布式系统。
● 通过边车模式、适配器模式和大使模式,将应用程序拆分为单机上的容器组。
● 探索用于组件间复制、扩展与通信的松耦合多节点分布式模式。
● 学习适用于批处理工作队列、事件驱动处理及协调式工作流的大规模批数据处理分布式模式。
  1. 前言
  2. 第一部分 基础概念
  3. 第1章 概述
  4. 1.1 系统开发简史
  5. 1.2 软件开发模式的演进历程
  6. 1.2.1 算法编程的规范化
  7. 1.2.2 面向对象编程模式
  8. 1.2.3 开源软件的崛起
  9. 1.3 模式、实践与组件的价值
  10. 1.3.1 站在巨人的肩膀上
  11. 1.3.2 用于讨论实践的通用语言
  12. 1.3.3 便于复用的共享组件
  13. 1.4 小结
  14. 第2章 分布式系统核心概念
  15. 2.1 API与RPC
  16. 2.2 时延性能指标
  17. 2.3 可靠性
  18. 2.4 百分位数
  19. 2.5 幂等性
  20. 2.6 交付语义
  21. 2.7 关系完整性
  22. 2.8 数据一致性
  23. 2.9 编排与Kubernetes
  24. 2.10 健康检查
  25. 2.11 小结
  26. 第二部分 单节点模式
  27. 第3章 边车模式
  28. 3.1 边车模式示例:为遗留服务添加HTTPS支持
  29. 3.2 基于边车模式的动态配置
  30. 3.3 模块化应用容器
  31. 3.4 基于边车模式构建简易PaaS平台
  32. 3.5 边车模块化与可复用性设计
  33. 3.5.1 容器参数化配置
  34. 3.5.2 定义容器的API接口
  35. 3.5.3 容器文档化
  36. 3.6 小结
  37. 第4章 大使模式
  38. 4.1 使用大使模式实现服务分片
  39. 4.2 使用大使模式实现服务代理
  40. 4.3 使用大使模式进行实验或请求分流
  41. 4.4 小结
  42. 第5章 适配器
  43. 5.1 监控
  44. 5.2 日志记录
  45. 5.3 添加健康监控器
  46. 5.4 小结
  47. 第三部分 服务模式
  48. 第6章 多副本负载均衡服务
  49. 6.1 无状态服务
  50. 6.1.1 负载均衡的就绪检测
  51. 6.1.2 实战演练:在Kubernetes中创建多副本服务
  52. 6.2 会话保持服务
  53. 6.3 应用层多副本服务
  54. 6.4 引入缓存层
  55. 6.4.1 部署缓存
  56. 6.4.2 实战演练:部署缓存层
  57. 6.5 扩展缓存层
  58. 6.5.1 速率限制与拒绝服务防御
  59. 6.5.2 SSL终止
  60. 6.5.3 实战演练:部署Nginx与SSL终止
  61. 6.6 小结
  62. 第7章 分片服务
  63. 7.1 分片缓存
  64. 7.1.1 为何需要分片缓存
  65. 7.1.2 缓存对于系统性能的影响
  66. 7.1.3 多副本分片缓存
  67. 7.1.4 实战演练:部署大使模式与Memcache实现分片缓存
  68. 7.2 分片函数解析
  69. 7.2.1 选择键
  70. 7.2.2 一致性哈希函数
  71. 7.2.3 实战演练:构建一致性HTTP分片代理
  72. 7.3 分片多副本服务
  73. 7.4 热分片系统
  74. 7.5 小结
  75. 第8章 分散模式与聚集模式
  76. 8.1 从根节点分发的分散/聚集模式
  77. 8.2 基于叶子分片的分散/聚集模式
  78. 8.2.1 实战演练:分片文档搜索
  79. 8.2.2 选择合适的叶子节点数量
  80. 8.3 提升分散/聚集模式的可靠性与规模
  81. 8.4 小结
  82. 第9章 函数与事件驱动处理
  83. 9.1 确定何时使用FaaS
  84. 9.1.1 FaaS的优势
  85. 9.1.2 FaaS的挑战
  86. 9.1.3 对后台处理的需求
  87. 9.1.4 将数据保留在内存中的需求
  88. 9.1.5 持续的基于请求的处理成本
  89. 9.2 FaaS模式
  90. 9.2.1 装饰器模式:请求或响应转换
  91. 9.2.2 实战演练:在请求处理前添加请求默认值
  92. 9.2.3 处理事件
  93. 9.2.4 实战演练:实现双重认证
  94. 9.2.5 基于事件的管道
  95. 9.2.6 实战演练:实现新用户注册管道
  96. 9.3 小结
  97. 第10章 所有权选举
  98. 10.1 确定是否需要领导者选举
  99. 10.2 领导者选举概要
  100. 10.2.1 实战演练:部署etcd
  101. 10.2.2 实现锁
  102. 10.2.3 实战演练:在etcd中实现锁
  103. 10.2.4 实现所有权
  104. 10.2.5 实战演练:在etcd中实现租约
  105. 10.3 处理并发数据操作
  106. 10.4 小结
  107. 第四部分 批处理计算模式
  108. 第11章 工作队列系统
  109. 11.1 通用工作队列系统
  110. 11.1.1 源容器接口
  111. 11.1.2 工作队列API
  112. 11.1.3 工作单元容器接口
  113. 11.1.4 共享的工作队列架构
  114. 11.2 实战演练:实现视频缩略图生成器
  115. 11.3 工作单元的动态扩缩容
  116. 11.4 多工作单元模式
  117. 11.5 小结
  118. 第12章 事件驱动批处理
  119. 12.1 事件驱动处理模式
  120. 12.1.1 复制器
  121. 12.1.2 过滤器
  122. 12.1.3 分流器
  123. 12.1.4 分片器
  124. 12.1.5 合并器
  125. 12.2 实战演练:构建新用户注册事件的驱动工作流
  126. 12.3 发布者/订阅者基础架构
  127. 12.4 实战演练:部署Kafka
  128. 12.5 工作队列的弹性和性能
  129. 12.5.1 工作窃取
  130. 12.5.2 错误、优先级和重试
  131. 12.6 小结
  132. 第13章 协调式批处理
  133. 13.1 连接(或栏栅同步)
  134. 13.2 Reduce
  135. 13.2.1 实战演练:计数
  136. 13.2.2 求和
  137. 13.2.3 直方图
  138. 13.2.4 实战演练:图像标记与处理流水线
  139. 13.3 小结
  140. 第五部分 通用概念
  141. 第14章 监控与可观测性模式
  142. 14.1 监控与可观测性基础
  143. 14.1.1 日志记录
  144. 14.1.2 指标
  145. 14.1.3 基础请求监控
  146. 14.1.4 高级请求监控
  147. 14.1.5 告警
  148. 14.1.6 追踪
  149. 14.2 信息聚合
  150. 14.3 小结
  151. 第15章 AI推理与服务
  152. 15.1 AI系统基础
  153. 15.2 模型部署
  154. 15.3 模型分发
  155. 15.4 模型开发实践
  156. 15.5 检索增强生成
  157. 15.6 测试与部署
  158. 15.7 小结
  159. 第16章 常见故障模式
  160. 16.1 惊群效应
  161. 16.2 无错误即异常
  162. 16.3 “客户端”与“预期”错误
  163. 16.4 版本控制错误
  164. 16.5 可选组件的迷思
  165. 16.6 糟糕,我们“清理”了所有数据
  166. 16.7 输入广度带来的挑战
  167. 16.8 处理过时工作
  168. 16.9 “第二系统”问题
  169. 16.10 小结
  170. 结语:新的起点
书名:分布式系统应用设计(第二版)
作者:Brendan Burns
译者:高晓明 译
国内出版社:中国电力出版社
出版时间:2026年02月
页数:202
书号:978-7-5239-0741-2
原版书书名:Designing Distributed Systems, 2nd Edition
原版书出版商:O'Reilly Media
Brendan Burns
 
Brendan Burns是微软的杰出工程师,也是Kubernetes项目的共同创始人。目前在微软 Azure负责容器和DevOps相关工作。在加入微软之前,他在谷歌云平台上工作,帮助构建了Deployment Manager和Cloud DNS等API。在从事云计算之前,他曾在谷歌从事网络搜索基础架构方面工作,专注于低延迟索引。他拥有马萨诸塞州阿默斯特大学计算机科学博士学位,主修机器人技术。他和妻子Robin Sanders(以及两个孩子),还有一只名字叫Mrs. Paws的猫(用铁爪管理着他们的家)居住在美国西雅图。
 
 
本书封面上的动物是一只爪哇禾雀(学名:Padda oryzivora)。这种鸟类在野外遭人厌恶,但在人工饲养环境中却深受喜爱。农民每年会消灭数以千计的野生爪哇禾雀,以防止鸟群吞噬庄稼。他们也会捕捉这些鸟类作为食物或在国际禽鸟贸易中出售。尽管面临这样的生存挑战,该物种仍在印度尼西亚的爪哇岛和巴厘岛,以及澳大利亚、墨西哥和北美地区繁衍生息。
其羽毛呈珍珠灰色,前部渐变为粉红色,尾部转为白色。头部黑色,面颊白色。硕大的喙部、双足及眼周呈亮粉色。爪哇禾雀的鸣唱以单音起调,如铃铛般清脆,继而发展为连续的颤音与咯咯声,夹杂着高亢与低沉的音符。
它们的主食是稻谷,但也食用小型种子、草类、昆虫和开花植物。在野外,这些鸟类会用干草筑巢,通常位于建筑物屋檐下、灌木丛或树冠层。爪哇禾雀在2~8月间会产下一窝三到四枚卵,其中多数产卵发生在4月或5月。
由于自然栖息地持续丧失、捕猎和诱捕,爪哇禾雀被国际自然保护联盟(IUCN)濒危物种红色名录列为濒危物种。
购买选项
定价:68.00元
书号:978-7-5239-0741-2
出版社:中国电力出版社