重构到微服务
Sam Newman
王威, 梅雪松, 姚琪琳 译
出版时间:2023年08月
页数:262
“在这本书中,本书作者为微服务改造定义了清晰的愿景,并且向你展示了在改造过程中需要注意哪些‘坑’(既有很明显的,也有一些比较隐蔽的)。同时,本书也提供了很多组织革新、架构革新、技术革新方面非常有用的参考模式。”
——Daniel Bryant
DataWire和InfoQ的技术顾问

对于单体系统,你是如何来进行梳理并且逐步将它演进到微服务架构的呢?你是如何在保证业务正常进行的同时来做这件事的?作为其畅销著作《Building......展开全部内容介绍
  1. 前言
  2. 第1章 刚刚好的微服务
  3. 1.1 什么是微服务?
  4. 1.1.1 部署独立性
  5. 1.1.2 围绕业务领域建模
  6. 1.1.3 拥有自己的数据
  7. 1.1.4 微服务将带来哪些优势?
  8. 1.1.5 微服务会带来什么问题?
  9. 1.1.6 用户界面
  10. 1.1.7 技术
  11. 1.1.8 颗粒度
  12. 1.1.9 所有权
  13. 1.2 单体架构
  14. 1.2.1 单进程单体
  15. 1.2.2 分布式单体
  16. 1.2.3 第三方黑盒系统
  17. 1.2.4 单体架构的挑战
  18. 1.2.5 单体的优势
  19. 1.3 关于耦合和内聚
  20. 1.3.1 内聚
  21. 1.3.2 耦合
  22. 1.4 刚刚好的领域驱动设计
  23. 1.4.1 聚合
  24. 1.4.2 限界上下文
  25. 1.4.3 将聚合和限界上下文映射到微服务
  26. 1.4.4 延伸阅读
  27. 1.5 总结
  28. 第2章 规划迁移到微服务的过程
  29. 2.1 理解目标
  30. 2.2 为什么要选择微服务?
  31. 2.2.1 提高团队自主性
  32. 2.2.2 缩短上市时间
  33. 2.2.3 经济高效地扩展负载
  34. 2.2.4 提高健壮性
  35. 2.2.5 扩展开发人员的数量
  36. 2.2.6 拥抱新技术
  37. 2.3 什么时候微服务可能是个坏主意?
  38. 2.3.1 不明确的业务领域
  39. 2.3.2 初创公司
  40. 2.3.3 客户安装和管理的软件
  41. 2.3.4 没有好的理由!
  42. 2.4 权衡利弊
  43. 2.5 带人踏上旅途
  44. 2.6 改变组织
  45. 2.6.1 建立紧迫感
  46. 2.6.2 组建领导团队
  47. 2.6.3 制定愿景和战略
  48. 2.6.4 传达变革愿景
  49. 2.6.5 善于授权赋能
  50. 2.6.6 快速得到成果
  51. 2.6.7 促进变革深入
  52. 2.6.8 成果融入文化
  53. 2.7 增量迁移的重要性
  54. 2.8 变更成本
  55. 2.8.1 可逆和不可逆的决定
  56. 2.8.2 更容易实验的地方
  57. 2.9 那么我们从哪里开始呢?
  58. 2.10 领域驱动设计
  59. 2.10.1 你需要走多远?
  60. 2.10.2 事件风暴
  61. 2.10.3 利用领域模型进行优先级排序
  62. 2.11 一个组合模型
  63. 2.12 重组团队
  64. 2.12.1 改变团队结构
  65. 2.12.2 不要一刀切
  66. 2.12.3 做出改变
  67. 2.12.4 改变技能
  68. 2.13 你如何知道转型成功与否?
  69. 2.13.1 有定期检查点
  70. 2.13.2 定量度量
  71. 2.13.3 定性度量
  72. 2.13.4 避免沉没成本误区
  73. 2.13.5 对新方法持开放态度
  74. 2.14 总结
  75. 第3章 拆分单体
  76. 3.1 单体系统,修改还是不修改?
  77. 3.1.1 剪切、复制或者重新开发?
  78. 3.1.2 重构单体系统
  79. 3.2 迁移模式
  80. 3.3 模式:绞杀应用
  81. 3.3.1 它是如何工作的
  82. 3.3.2 在哪里使用它
  83. 3.3.3 示例:HTTP反向代理
  84. 3.3.4 数据
  85. 3.3.5 代理选项
  86. 3.3.6 更改协议
  87. 3.3.7 示例:FTP
  88. 3.3.8 示例:消息拦截
  89. 3.3.9 其他协议
  90. 3.3.10 绞杀植物模式的其他例子
  91. 3.4 迁移功能时改变行为
  92. 3.5 模式:UI组合
  93. 3.5.1 示例:页面组合
  94. 3.5.2 示例:小部件(Widget)组合
  95. 3.5.3 示例:微前端
  96. 3.5.4 在哪里使用它
  97. 3.6 模式:抽象分支
  98. 3.6.1 它是如何工作的
  99. 3.6.2 作为后备机制
  100. 3.6.3 在哪里使用它
  101. 3.7 模式:并行运行
  102. 3.7.1 示例:比较信用衍生品定价
  103. 3.7.2 示例:Homegate列表
  104. 3.7.3 验证技术
  105. 3.7.4 使用Spy
  106. 3.7.5 GitHub Scientist
  107. 3.7.6 灰度发布与金丝雀发布
  108. 3.7.7 在哪里使用它
  109. 3.8 模式:装饰合作者
  110. 3.8.1 示例:会员计划
  111. 3.8.2 在哪里使用它
  112. 3.9 模式:变更数据捕获
  113. 3.9.1 示例:发行会员卡
  114. 3.9.2 实现变更数据捕获
  115. 3.9.3 在哪里使用它
  116. 3.10 总结
  117. 第4章 分解数据库
  118. 4.1 模式:共享数据库
  119. 4.1.1 应对模式
  120. 4.1.2 何处使用
  121. 4.2 但这是不可能做到的!
  122. 4.3 模式:数据库视图
  123. 4.3.1 数据库即公共契约
  124. 4.3.2 通过视图来对外展现
  125. 4.3.3 限制条件
  126. 4.3.4 所有权
  127. 4.3.5 何处使用
  128. 4.4 模式:数据库包装服务
  129. 4.5 模式:数据库即服务接口
  130. 4.5.1 实现映射引擎
  131. 4.5.2 与视图相比
  132. 4.5.3 何处使用
  133. 4.6 转让所有权
  134. 4.6.1 模式:暴露单体中的聚合
  135. 4.6.2 模式:变更数据所有权
  136. 4.7 数据同步
  137. 4.8 模式:在应用程序中同步数据
  138. 4.8.1 步骤1:批量同步数据
  139. 4.8.2 步骤2:同步写入,从旧表结构中读取
  140. 4.8.3 步骤3:同步写入,从新表结构中读取
  141. 4.8.4 在哪里使用它(一)
  142. 4.8.5 在哪里使用它(二)
  143. 4.9 模式:追踪器写入
  144. 4.9.1 数据同步
  145. 4.9.2 案例:Square的订单
  146. 4.9.3 在哪里使用它
  147. 4.10 拆分数据库
  148. 4.11 先拆分数据库,还是先拆分代码?
  149. 4.11.1 先拆分数据库
  150. 4.11.2 先拆分代码
  151. 4.11.3 将数据库和代码一起拆分
  152. 4.11.4 那么,我应该先拆分哪个?
  153. 4.12 表结构拆分示例
  154. 4.13 模式:拆分表
  155. 4.14 模式:将外键关系移动到代码中
  156. 4.14.1 移动连表查询
  157. 4.14.2 数据一致性
  158. 4.14.3 在哪里使用
  159. 4.14.4 示例:共享静态数据
  160. 4.15 事务
  161. 4.15.1 ACID事务
  162. 4.15.2 仍然保持ACID,但缺乏整体的原子性?
  163. 4.15.3 两阶段提交
  164. 4.15.4 对分布式事务说不
  165. 4.16 saga
  166. 4.16.1 saga的失败模式
  167. 4.16.2 实施saga
  168. 4.16.3 saga与分布式事务
  169. 4.17 总结
  170. 第5章 成长的烦恼
  171. 5.1 服务越多,痛苦越多
  172. 5.2 规模化下的所有权
  173. 5.2.1 这个问题如何表现出来?
  174. 5.2.2 这个问题什么时候会发生?
  175. 5.2.3 潜在的解决方案
  176. 5.3 破坏性变更
  177. 5.3.1 这个问题如何表现出来?
  178. 5.3.2 这个问题什么时候会发生?
  179. 5.3.3 潜在的解决方案
  180. 5.4 报表
  181. 5.4.1 这个问题什么时候会发生?
  182. 5.4.2 潜在的解决方案
  183. 5.5 监控和故障排除
  184. 5.5.1 什么时候会出现这些问题?
  185. 5.5.2 这些问题是如何发生的?
  186. 5.5.3 潜在的解决方案
  187. 5.6 本地开发者体验
  188. 5.6.1 这个问题如何表现出来?
  189. 5.6.2 什么时候会出现这些问题?
  190. 5.6.3 潜在的解决方案
  191. 5.7 运行太多东西
  192. 5.7.1 这个问题如何表现出来?
  193. 5.7.2 这个问题什么时候会发生?
  194. 5.7.3 潜在的解决方案
  195. 5.8 端到端测试
  196. 5.8.1 这个问题如何表现出来?
  197. 5.8.2 这个问题什么时候会发生?
  198. 5.8.3 潜在的解决方案
  199. 5.9 全局与局部优化
  200. 5.9.1 这个问题如何表现出来?
  201. 5.9.2 这个问题什么时候会发生?
  202. 5.9.3 潜在的解决方案
  203. 5.10 健壮性和弹性
  204. 5.10.1 这个问题如何表现出来?
  205. 5.10.2 这个问题什么时候会发生?
  206. 5.10.3 潜在的解决方案
  207. 5.11 孤儿服务
  208. 5.11.1 这个问题如何表现出来?
  209. 5.11.2 这个问题什么时候会发生?
  210. 5.11.3 潜在的解决方案
  211. 5.12 总结
  212. 第6章 结语
  213. 附录A 参考书目
  214. 附录B 模式列表
购买选项
定价:98.00元
书号:978-7-5198-7950-1
出版社:中国电力出版社