书籍详情
《微服务设计(第2版)》[88M]百度网盘|亲测有效|pdf下载
  • 微服务设计(第2版)

  • 出版社:路漫漫图书专营店
  • 出版时间:2024-11-27
  • 热度:10166
  • 上架时间:2025-01-04 08:18:29
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

编辑推荐

1-【标杆】软件架构领域标杆之作,Amazon 4.8 星好评
2-【全新】第2版全新升级,内容更新率超过 70%
3-【易读】内容通俗易懂,180 张图剖析微服务设计
4-【专业】作者为微服务先驱,译者为微服务实践者
5-【实战】聚焦微服务痛点,打造高可用分布式架构
6-【面广】多行业案例,涵盖电子商务、金融、广告、支付等
7-【力荐】Martin Fowler 领衔推荐,国内外一线专家联袂推荐

容简介

本书是系统架构领域标杆参考书的升级版,由业内资深专家萨姆.纽曼(Sam Newman)撰写。 过去10年,随着微服务的普及,大量组织从单体应用迁移到了微服务应用,分布式系统变得愈加精细化,然而,这个过程中也出现了一系列问题。本书深入探讨了构建、管理、扩展和演进微服务架构时需要考虑的方方面面。内容分为三部分:第一部分“基础”(第1章~第4章),详细阐述微服务背后的核心思想;第二部分“实现”(第5章~第13章),带你转向具体实现细节,通过各种技术和方法尽可能大程度地用好微服务;第三部分“人和组织”(第14章~第16章),具体阐述离开人和组织的支持,理念和技术将毫无意义。通过学习本书,你将深入了解对微服务的建模、集成、测试、部署和监控等方向新的解决方案。 第2版进行了全面更新:新增了微服务构建和部署、无服务器计算及云原生应用等主题,扩充了进程间通信等内容。此外,新版贯穿了更多业界常见案例,提供了更多代码示例,帮助大家落地微服务。
本书面向架构师、开发人员、测试人员和IT运维人员等各类对微服务感兴趣的读者。

作者简介

萨姆.纽曼(Sam Newman)

微服务先驱 . Thoughtworks前系统架构师 . 独立咨询师

深耕行业20多年,聚焦微服务、云和持续交付,致力于帮助企业更迅速、可靠地交付软件,合作客户遍布全球。畅销技术书作者,著有《微服务设计》《重构到微服务》。


钟健鑫 . Thoughtworks总监架构师

专注架构设计与演进、研发效能与平台工程等领域,目前主要帮助各行业客户构建或改造高可用、强复用性的服务/系统/平台,系统化提升组织研发效能。另外,也在探索AIGC在各领域落地的场景与技术。


张沙沙 . 微服务技术践行者

横跨汽车、会计、金融、医疗等众多行业为企业提供专业化技术服务与支持。目前专注于推进企业多云战略建设以及利用平台工程帮助企业内部实现快速业务交付。


智伟 . Thoughtworks 架构师

15 年国内外 IT 从业经验,业务聚焦端到端交付核心流程(覆盖解决方案设计规划与落地实施、企业级架构规划和治理、规模化交付技术管理)。曾服务于多个行业的全球500强公司,在零售、电信、制造和金融行业积累了丰厚的经验。


精彩书评

Martin Fowler 【原版推荐】,肖然 X 沈剑 【作序推荐】
丁雪丰 X 胡忠想 X 李运华 X 茹炳晟 X 王健 X 张逸 【联袂推荐】
“微服务架构有许多吸引人的优点,但贸然选用,你的构建过程注定充满艰辛与坎坷。微服务这条路是否真的适合你,一旦选定如何巧妙躲过各种陷阱?答案就在本书中。”
—— Martin Fowler,Thoughtworks Chief Scientist
新版内容更加丰富,篇幅大大加长,其中的变化不仅反映了微服务领域的显著进步,也凸显了我们面临的问题。Sam 意在通过新版完整展现采用微服务架构所带来的全生命周期复杂性,鼓励架构师在考虑微服务时,更多地关注长期投入的必要性。
——肖然,Thoughtworks 中国区总经理、中关村智联联盟秘书长
本书可贵的地方在于,不光具备理论性与系统性,更为注重实践性与可操作性。全书勾勒出一幅从宏观到细节,再到组织落地的微服务架构整体实施蓝图。无论是对关注微服务领域的工程师与架构师,还是对寻求架构升级的管理者与决策者来说,本书都可以作为指导手册。
——沈剑,快狗打车 CTO
本书是微服务领域难得的佳作。作者不仅理论基础扎实,还熟悉行业一线的各种优秀实践。书中从多个角度切入微服务,真正为读者讲透了微服务的“道”与“术”。
——丁雪丰,《学透Spring》作者、腾讯云TVP
本书不仅详细阐述了微服务相关的理论知识,还重点讲解了如何构建、部署、测试微服务,以及安全、组织方面的具体实践。不论是微服务初学者想了解其背后的原理,还是架构师要从事微服务框架设计和推广,都能从本书获得宝贵的知识。
——胡忠想, 腾讯云TVP、前微博技术专家
微服务架构是契合云原生时代的应用架构模式。本书系统地阐述了微服务架构设计的经验和技巧,涵盖了设计、开发、测试、部署等端到端项目流程的各个阶段,可以称得上是全面学习和掌握微服务架构设计的宝典。
——李运华,前阿里资深技术专家、《从零开始学架构》《架构实战营》作者
本书如同一盏照亮微服务迷津的明灯,全书以其清晰的结构、深邃的洞察、全新的内容,为从单体到微服务架构转型的企业指明了方向。新版汇集了云计算、无服务器架构洞见,兼备案例和代码示范。
——茹炳晟,腾讯Tech Lead、腾讯研究院特约研究员、CCF(中国计算机学会 )TF 研发效能SIG主席
微服务架构的兴起重燃了大家对组装式系统的热情,而一个个披着微服务架构外皮的分布式单体的出现,又将期望打碎,可谓“一地鸡毛”!推荐每一位实践微服务架构的朋友读读这本书,做到更加客观全面地理解、选择和应用微服务架构。
——王健,总监级咨询师、企业架构解决方案负责人
Sam Newman可谓微服务领域的先驱,本书的再版可以帮助读者更加冷静而客观地看待微服务的优势与不足。如果你希望在项目中恰如其分地运用微服务,那就把本书放在手边随时翻阅吧!
——张逸,数字现代化独立顾问、《解构领域驱动设计》作者

目录

审读致谢
专家推荐
推荐序一 肖然
推荐序二 沈剑
译者序
前言

第一部分基础
第1章追根问底微服务 3
1.1微服务概述 3
1.2微服务的关键概念 5
1.2.1可独立部署 5
1.2.2围绕业务领域建模 6
1.2.3状态自主 7
1.2.4服务大小 7
1.2.5灵活性 8
1.2.6架构和组织的一致性 8
1.3单体 11
1.3.1单进程单体 12
1.3.2模块化单体 12
1.3.3分布式单体 13
1.3.4单体和交付争用 14
1.3.5单体的优势 14
1.4技术能力 14
1.4.1日志聚合和分布式追踪 15
1.4.2容器和Kubernetes 16
1.4.3流技术 16
1.4.4公有云和无服务器技术 17
1.5微服务的优势 17
1.5.1技术的异构性 17
1.5.2健壮性 18
1.5.3扩展性 19
1.5.4部署的便捷性 20
1.5.5组织协调 20
1.5.6可组合性 20
1.6微服务的痛点 20
1.6.1开发者体验 21
1.6.2技术过载 21
1.6.3成本 21
1.6.4生成报表 22
1.6.5监控和故障排除 23
1.6.6安全 23
1.6.7测试 23
1.6.8延迟 23
1.6.9数据一致性 24
1.7我应该采用微服务吗 24
1.7.1不适用情况 24
1.7.2适用情况 25
1.8小结 26
第2章微服务建模 27
2.1MusicCorp简介 27
2.2合理划分微服务边界 28
2.2.1信息隐藏 28
2.2.2内聚 29
2.2.3耦合 29
2.2.4内聚和耦合的相互作用 30
2.3耦合的类型 30
2.3.1领域耦合 31
2.3.2传递耦合 33
2.3.3公共耦合 36
2.3.4内容耦合 39
2.4恰到好处的领域驱动设计 40
2.4.1通用语言 40
2.4.2聚合 41
2.4.3限界上下文 43
2.4.4将聚合及限界上下文映射到微服务 45
2.4.5事件风暴 46
2.5DDD在微服务环境中的应用案例 47
2.6领域边界的替代方法 48
2.6.1易变性 48
2.6.2数据 49
2.6.3技术 50
2.6.4组织 51
2.7混合模型和例外 53
2.8小结 53
第3章拆分大单体 54
3.1明确目标 54
3.2增量迁移 55
3.3单体并不是威胁 55
3.4先拆分什么 56
3.5按层拆分 58
3.5.1代码优先 58
3.5.2数据优先 59
3.6有用的拆分模式 60
3.6.1绞杀者模式 60
3.6.2并行运行模式 61
3.6.3功能开关模式 61
3.7拆分数据库的注意事项 61
3.7.1性能 61
3.7.2数据完整性 63
3.7.3事务 63
3.7.4工具 64
3.7.5报表数据库 64
3.8小结 65
第4章微服务间通信模式 66
4.1从进程内到进程间 66
4.1.1性能 66
4.1.2接口变更 67
4.1.3错误处理 67
4.2进程内的通信技术:选择众多 69
4.3微服务间的通信模式 69
4.4同步阻塞模式 70
4.4.1优点 71
4.4.2缺点 71
4.4.3适用情况 71
4.5异步非阻塞模式 73
4.5.1优点 73
4.5.2缺点 74
4.5.3适用情况 75
4.6共用数据模式 75
4.6.1实现 75
4.6.2优点 76
4.6.3缺点 76
4.6.4适用情况 77
4.7请求–响应模式 77
4.7.1实现:同步与异步 78
4.7.2适用情况 80
4.8事件驱动模式 80
4.8.1实现 82
4.8.2事件 82
4.8.3适用情况 85
4.9谨慎行事 85
4.10小结 87
第二部分实现
第5章实现微服务间通信 91
5.1寻找理想的技术 91
5.1.1轻松实现向后兼容 91
5.1.2明确你的接口 91
5.1.3保持API的技术中立 92
5.1.4简化提供给消费者的服务 92
5.1.5隐藏内部实现细节 92
5.2技术选型 92
5.2.1远程过程调用 93
5.2.2REST 96
5.2.3GraphQL 99
5.2.4消息代理 101
5.3序列化格式 104
5.3.1文本格式 104
5.3.2二进制格式 105
5.4模式 105
5.4.1结构性破坏和语义性破坏 106
5.4.2是否应该使用模式 106
5.5处理微服务间的变更 107
5.6避免破坏性变更 107
5.6.1扩展式更改 108
5.6.2兼容的消费者 108
5.6.3合适的技术 109
5.6.4显式接口 109
5.6.5尽早发现破坏性变更 110
5.7管理破坏性变更 111
5.7.1同步部署 111
5.7.2共存不兼容的微服务版本 111
5.7.3模拟旧接口 112
5.7.4推荐的方法 113
5.7.5社会契约 114
5.7.6追踪使用情况 114
5.7.7极端措施 114
5.8DRY和微服务架构中的代码复用风险 115
5.9服务发现 117
5.9.1域名系统 117
5.9.2动态服务注册 118
5.9.3不要忘记人类 120
5.10服务网格和API网关 120
5.10.1API 网关 121
5.10.2服务网格 123
5.10.3其他协议 126
5.11文档服务 126
5.11.1显式模式 126
5.11.2自描述系统 127
5.12小结 129
第6章工作流 131
6.1数据库事务 131
6.1.1ACID事务 131
6.1.2还是ACID事务,但缺乏原子性支持吗 132
6.2分布式事务:两阶段提交 134
6.3分布式事务:只需说“不” 136
6.4Saga 137
6.4.1Saga故障模式 138
6.4.2实现Saga 142
6.4.3Saga与分布式事务 146
6.5小结 147
第7章构建 148
7.1持续集成简介 148
7.1.1你真的在实践持续集成吗 149
7.1.2分支模型 149
7.2构建流水线和持续交付 151
7.2.1工具 152
7.2.2权衡与环境 153
7.2.3构建制品 153
7.3将源代码和构建映射到微服务 155
7.3.1一个巨大的代码库,一次巨大的构建 155
7.3.2多代码库 156
7.3.3单一代码库 159
7.3.4我会使用哪种方式 163
7.4小结 164
第8章部署 165
8.1从逻辑到物理 165
8.1.1多实例 166
8.1.2数据库 167
8.1.3环境 170
8.2微服务部署原则 172
8.2.1隔离执行 172
8.2.2专注于自动化 175
8.2.3基础设施即代码 176
8.2.4零停机部署 176
8.2.5期望状态管理 177
8.3部署选项 179
8.3.1物理机 180
8.3.2虚拟机 180
8.3.3容器 182
8.3.4应用容器 186
8.3.5平台即服务(PaaS) 187
8.3.6函数即服务(FaaS) 188
8.4哪种部署方式适合你 193
8.5Kubernetes与容器编排 195
8.5.1容器编排案例 195
8.5.2Kubernetes概念的简化视图 196
8.5.3多租户和联邦 198
8.5.4云原生计算基金会 200
8.5.5平台和可移植性 200
8.5.6Helm、Operator与CRD 201
8.5.7Knative 201
8.5.8未来 202
8.5.9你应该使用它吗 202
8.6渐进式交付 203
8.6.1分离部署与发布 203
8.6.2渐进式交付 204
8.6.3功能开关 204
8.6.4金丝雀发布 204
8.6.5并行运行 205
8.7小结 206
第9章测试 207
9.1测试类型 207
9.2测试范围 209
9.2.1单元测试 210
9.2.2服务测试 211
9.2.3端到端测试 212
9.2.4权衡 212
9.3实现服务测试 213
9.3.1mock还是打桩 213
9.3.2更智能的打桩服务 214
9.4微妙的端到端测试 215
9.4.1脆弱的测试 216
9.4.2谁来写测试 217
9.4.3测试应该运行的时间 218
9.4.4大量的堆积 219
9.4.5元版本 219
9.4.6缺乏独立可测试性 219
9.5应该放弃端到端测试吗 220
9.5.1契约测试和消费者驱动的契约 220
9.5.2一点补充 222
9.6开发者体验 223
9.7从预发布环境测试到生产环境测试 223
9.7.1生产环境测试的类型 224
9.7.2确保生产环境测试的安全性 224
9.7.3平均故障间隔时间和平均修复时间的权衡 225
9.8跨功能测试 225
9.8.1性能测试 226
9.8.2健壮性测试 227
9.9小结 227
第10章从监控到可观测性 229
10.1混乱、恐慌和困惑 229
10.2单个微服务,单个服务器 230
10.3单个微服务,多个服务器 231
10.4多个微服务,多个服务器 232
10.5可观测性与监控 233
10.6构建可观测性的组件 234
10.6.1日志聚合 235
10.6.2指标聚合 241
10.6.3分布式追踪 243
10.6.4我们做得如何 245
10.6.5警报 247
10.6.6语义监控 250
10.6.7生产环境测试 251
10.7标准化 253
10.8选择工具 253
10.8.1大众化 253
10.8.2易于集成 253
10.8.3提供上下文 254
10.8.4实时性 254
10.8.5恰如其分 254
10.9机器专家 255
10.10起点 255
10.11小结 256
第11章安全 258
11.1核心原则 259
11.1.1最小权限原则 259
11.1.2深度防御 259
11.1.3自动化 261
11.1.4在交付过程中构建安全性 261
11.2五大网络安全功能 262
11.2.1身份识别 262
11.2.2保护 263
11.2.3检测 263
11.2.4响应 263
11.2.5恢复 264
11.3应用安全的基础 264
11.3.1凭证 264
11.3.2打补丁 269
11.3.3备份 271
11.3.4重建 271
11.4隐式信任与零信任 272
11.4.1隐式信任 272
11.4.2零信任 273
11.4.3这是个范围 273
11.5数据保护 275
11.5.1传输中的数据 275
11.5.2静态数据 277
11.6身份验证和鉴权 279
11.6.1服务间验证 279
11.6.2用户的身份验证 279
11.6.3常见的单点登录实现 280
11.6.4单点登录网关 281
11.6.5细粒度鉴权 282
11.6.6混淆代理人问题 282
11.6.7中心化上游鉴权 284
11.6.8去中心化鉴权 284
11.6.9JWT 284
11.7小结 287
第12章弹性 288
12.1弹性介绍 288
12.1.1健壮性 289
12.1.2可恢复性 290
12.1.3优雅的可扩展性 290
12.1.4持续适应性 290
12.1.5代入微服务架构 291
12.2故障无处不在 291
12.3多少才算多 292
12.4功能降级 293
12.5稳定性模式 293
12.5.1超时 295
12.5.2重试 297
12.5.3舱壁 297
12.5.4断路器 298
12.5.5隔离 300
12.5.6冗余 301
12.5.7中间件 301
12.5.8幂等 302
12.6分散风险 303
12.7CAP定理 304
12.7.1牺牲一致性 305
12.7.2牺牲可用性 305
12.7.3牺牲分区容错性 306
12.7.4AP还是CP 306
12.7.5全部和全不并不是二选一 306
12.7.6现实世界 307
12.8混沌工程 307
12.8.1演练日 308
12.8.2生产实验 308
12.8.3超越健壮性 309
12.9问责 309
12.10小结 310
第13章扩展性 312
13.1扩展性的4个维度 312
13.1.1纵向扩容 313
13.1.2横向复制 314
13.1.3数据分区 317
13.1.4功能拆分 320
13.2组合模型 322
13.3从小处着手 323
13.4缓存 324
13.4.1用于提高性能 324
13.4.2用于提高扩展性 325
13.4.3用于提高健壮性 325
13.4.4将缓存设置在哪里 325
13.4.5让缓存失效 329
13.4.6缓存的黄金法则 333
13.4.7新鲜度与优化程度 333
13.4.8缓存中毒:一个需要警惕的故事 334
13.5自动扩展 334
13.6重新出发 335
13.7小结 336
第三部分人和组织
第14章用户界面 339
14.1迈向数字化 339
14.2集中所有权模型 340
14.3业务流团队 342
14.3.1共享专家 343
14.3.2确保一致性 343
14.3.3持续应对技术的挑战 344
14.4单体前端模式 345
14.5微前端模式 346
14.5.1实施视角 346
14.5.2应用时机 346
14.6基于页面的拆分模式 347
14.7基于部件的拆分模式 349
14.7.1实施视角 350
14.7.2应用时机 352
14.8约束 353
14.9中心聚合网关模式 353
14.9.1归属权 355
14.9.2不同类型的用户界面 355
14.9.3热点问题 356
14.9.4应用时机 357
14.10服务于前端的后端模式 357
14.10.1如何确定BFF的数量 358
14.10.2BFF如何应对复用问题 361
14.10.3BFF在桌面Web和更多场景中的应用 363
14.10.4应用时机 364
14.11GraphQL 364
14.12模式的混合应用 366
14.13小结 366
第15章组织结构 367
15.1低耦合组织结构 367
15.2康威定律 368
15.3团队规模 370
15.4理解康威定律 370
15.5小团队,大组织 371
15.6关注团队自治 372
15.7强所有权与集体所有权 373
15.7.1强所有权 373
15.7.2集体所有权 374
15.7.3团队层面与组织层面 375
15.7.4模式之间的平衡 375
15.8赋能团队 376
15.8.1实践社区 377
15.8.2平台 378
15.9共享微服务 380
15.9.1难以划分 380
15.9.2跨领域的变更 380
15.9.3交付瓶颈 381
15.10内部开源 381
15.10.1核心提交者的作用 382
15.10.2成熟度 382
15.10.3工具支撑 382
15.11可插拔式模块化微服务 382
15.12孤儿服务 387
15.13案例研究:Real Estate网站 387
15.14地域分布 388
15.15逆康威定律 389
15.16人 390
15.17小结 391
第16章演进式架构师 392
16.1名字的意义 392
16.2什么是软件架构 394
16.3让改变成为可能 395
16.4架构师的可演进愿景 395
16.5定义系统边界 396
16.6一种社会结构 398
16.7宜居性 399
16.8原则方法 400
16.8.1战略目标 400
16.8.2原则 400
16.8.3实践 401
16.8.4原则与实践相结合 401
16.8.5一个真实的例子 401
16.9演进式架构 402
16.10业务流组织中的架构 403
16.11组建团队 405
16.12必要标准 405
16.12.1可监控性 405
16.12.2接口 406
16.12.3架构安全性 406
16.13治理并铺路 406
16.13.1榜样的力量 407
16.13.2定制的微服务模板 407
16.13.3将铺好的路规模化 408
16.14技术债务 408
16.15异常处理 409
16.16小结 409
后记:全景概述 411
参考资料 421
术语表 425

前言


相关推荐