• 微服务设计(第2版)
  • 微服务设计(第2版)
  • 微服务设计(第2版)
  • 微服务设计(第2版)
  • 微服务设计(第2版)
21年品牌 40万+商家 超1.5亿件商品

微服务设计(第2版)

99.3 6.2折 159.8 全新

库存27件

北京房山
认证卖家担保交易快速发货售后保障

作者[英]萨姆·纽曼(Sam Newman)|译者:钟健鑫 张沙沙 智伟

出版社人民邮电

ISBN9787115638762

出版时间2024-04

装帧其他

开本其他

定价159.8元

货号32049277

上书时间2024-07-05

晨雨图书店121

四年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
[英]萨姆·纽曼(SamNewman)微服务先驱·Thoughtworks前系统架构师·独立咨询师深耕行业20多年,聚焦微服务、云和持续交付,致力于帮助企业更快速、可靠地交付软件,合作客户遍布全球。热销技术书作者,著有《微服务设计》《重构到微服务》。

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

第一部分 基础
第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 容器和Kubernetes16
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.1 MusicCorp简介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.5 DDD在微服务环境中的应用案例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.2 REST 96
5.2.3 GraphQL 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.8 DRY和微服务架构中的代码复用风险115
5.9 服务发现117
5.9.1 域名系统117
5.9.2 动态服务注册118
5.9.3 不要忘记人类120
5.10 服务网格和API网关120
5.10.1 API 网关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.1 ACID事务131
6.1.2 还是ACID事务,但缺乏原子性支持吗132
6.2 分布式事务:两阶段提交134
6.3 分布式事务:只需说“不”136
6.4 Saga137
6.4.1 Saga故障模式138
6.4.2 实现Saga142
6.4.3 Saga与分布式事务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.5 Kubernetes与容器编排195
8.5.1 容器编排案例195
8.5.2 Kubernetes概念的简化视图196
8.5.3 多租户和联邦198
8.5.4 云原生计算基金会200
8.5.5 平台和可移植性200
8.5.6 Helm、Operator与CRD201
8.5.7 Knative201
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.1 mock还是打桩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.9 JWT284
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.7 CAP定理304
12.7.1 牺牲一致性305
12.7.2 牺牲可用性305
12.7.3 牺牲分区容错性306
12.7.4 AP还是CP306
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.2 BFF如何应对复用问题361
14.10.3 BFF在桌面Web和更多场景中的应用363
14.10.4 应用时机364
14.11 GraphQL364
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

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

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP