×
微服务实战

微服务实战

1星价 ¥75.7 (8.5折)
2星价¥75.7 定价¥89.0
  • 正版好图书
  • 特价书1折起
  • 满69包邮(新疆、西藏等六省除外,运费14元起)
暂无评论
图文详情
  • ISBN:9787115529879
  • 装帧:平装-胶订
  • 版次:暂无
  • 册数:暂无
  • 重量:暂无
  • 印刷次数:暂无
  • 开本:24cm
  • 页数:318页
  • 出版时间:2020-05-01
  • 条形码:9787115529879 ; 978-7-115-52987-9

本书特色

《微服务实战》主要介绍如何开发和维护基于微服务的应用。本书源自作者从日常开发中得到的积累和感悟,其中给出的案例覆盖从微服务设计到部署的各个阶段,能够带给你真实的沉浸式体验。通过阅读本书,你不仅能够了解用微服务搭建高效的持续交付流水线的方法,还能够运用Kubernetes、Docker 以及Google Container Engine 进一步探索书中的示例。

内容简介

本书主要介绍构建和维护基于微服务的应用的方法, 并通过实际应用引导读者体验从设计到部署微服务的全过程。通过本书的内容, 读者将了解如何通过微服务来实现有效的持续交付, 以及如何用Kubernetes、Docker和Google Container Engine开发实例。

目录

第 一部分 概述

第 1章 微服务的设计与运行 3

1.1 什么是微服务应用 4

1.1.1 通过分解来实现扩展 6

1.1.2 核心原则 7

1.1.3 谁在使用微服务 9

1.1.4 为什么微服务是一个明智的选择 10

1.2 微服务的挑战 12

1.2.1 设计挑战 13

1.2.2 运维挑战 15

1.3 微服务开发生命周期 16

1.3.1 微服务设计 17

1.3.2 微服务部署 18

1.3.3 服务监控 21

1.4 有责任感和运维意识的工程师文化 22

1.5 小结 23

第 2章 SimpleBank公司的微服务 24

2.1 SimpleBank公司的业务范围 24

2.2 微服务是否是正确的选择 25

2.2.1 金融软件的风险和惰性 26

2.2.2 减少阻力和持续交付价值 27

2.3 开发新功能 27

2.3.1 通过领域建模识别微服务 28

2.3.2 服务协作 30

2.3.3 服务编排 32

2.4 向外界开放服务 34

2.5 将功能发布到生产环境中 35

2.5.1 高质量的自动化部署 37

2.5.2 可恢复性 37

2.5.3 透明性 38

2.6 大规模微服务开发 39

2.6.1 技术分歧 40

2.6.2 孤立 40

2.7 接下来的内容 41

2.8 小结 41

第二部分 设计

第3章 微服务应用的架构 45

3.1 整体架构 45

3.1.1 从单体应用到微服务 46

3.1.2 架构师的角色 47

3.1.3 架构准则 47

3.1.4 微服务应用的4层架构 48

3.2 微服务平台 49

3.3 服务层 51

3.3.1 功能 51

3.3.2 聚合与多元服务 52

3.3.3 关键路径和非关键路径 53

3.4 通信 54

3.4.1 何时使用同步消息 54

3.4.2 何时使用异步消息 55

3.4.3 异步通信模式 55

3.4.4 服务定位 57

3.5 服务边界 58

3.5.1 API网关 60

3.5.2 服务于前端的后端 61

3.5.3 消费者驱动网关 62

3.6 客户端 63

3.6.1 前端单体 63

3.6.2 微前端 64

3.7 小结 65

第4章 新功能设计 66

4.1 SimpleBank的新功能 67

4.2 按业务能力划分 68

4.2.1 能力和领域建模 69

4.2.2 创建投资策略 70

4.2.3 内嵌型上下文和服务 75

4.2.4 挑战和不足 76

4.3 按用例划分 77

4.3.1 按投资策略下单 77

4.3.2 动作和存储 82

4.3.3 编配与编排 83

4.4 按易变性划分 84

4.5 按技术能力划分 85

4.5.1 发送通知 85

4.5.2 何时使用技术能力 86

4.6 处理不确定性 87

4.6.1 从粗粒度服务开始 88

4.6.2 准备进一步分解 88

4.6.3 下线和迁移 89

4.7 组织中的服务所有权 91

4.8 小结 92

第5章 微服务的事务与查询 93

5.1 分布式应用的事务一致性 94

5.2 基于事件的通信 96

5.3 Saga 98

5.3.1 编排型Saga 100

5.3.2 编配型Saga 102

5.3.3 交织型Saga 104

5.3.4 一致性模式 105

5.3.5 事件溯源 106

5.4 分布式世界中的查询操作 107

5.4.1 保存数据副本 108

5.4.2 查询和命令分离 110

5.4.3 CQRS挑战 112

5.4.4 分析和报表 114

5.5 延伸阅读 114

5.6 小结 114

第6章 设计高可靠服务 116

6.1 可靠性定义 117

6.2 哪些会出错 119

6.2.1 故障源 119

6.2.2 连锁故障 122

6.3 设计可靠的通信方案 125

6.3.1 重试 126

6.3.2 后备方案 128

6.3.3 超时 130

6.3.4 断路器 132

6.3.5 异步通信 134

6.4 *大限度地提高服务可靠性 135

6.4.1 负载均衡与服务健康 135

6.4.2 限流 136

6.4.3 验证可靠性和容错性 137

6.5 默认安全 140

6.5.1 框架 140

6.5.2 服务网格 141

6.6 小结 142

第7章 构建可复用的微服务框架 143

7.1 微服务底座 144

7.2 微服务底座的目的 146

7.2.1 降低风险 147

7.2.2 快速启动 147

7.3 设计服务底座 148

7.3.1 服务发现 149

7.3.2 可观测性 153

7.3.3 平衡和限流 159

7.4 探索使用底座实现的特性 161

7.5 差异性是否是微服务的承诺 163

7.6 小结 164

第三部分 部署

第8章 微服务部署 167

8.1 部署的重要性 167

8.2 微服务生产环境 169

8.2.1 微服务生产环境的特点 169

8.2.2 自动化和速度 170

8.3 部署服务的快捷方式 171

8.3.1 服务启动 171

8.3.2 配置虚拟机 172

8.3.3 运行多个服务实例 173

8.3.4 添加负载均衡器 175

8.3.5 开发者学到了什么 177

8.4 构建服务工件 178

8.4.1 工件的组成 179

8.4.2 不可变性 179

8.4.3 服务工件的类型 180

8.4.4 配置 184

8.5 服务与主机关系模型 185

8.5.1 单服务主机 185

8.5.2 单主机多静态服务 185

8.5.3 单主机多调度化服务 186

8.6 不停机部署服务 187

8.7 小结 190

第9章 基于容器和调度器的部署 191

9.1 服务容器化 192

9.1.1 镜像使用 192

9.1.2 构建镜像 194

9.1.3 运行容器 197

9.1.4 镜像存储 199

9.2 集群部署 200

9.2.1 pod的设计与运行 201

9.2.2 负载均衡 204

9.2.3 快速揭秘 205

9.2.4 健康检查 208

9.2.5 部署新版本服务 210

9.2.6 回滚 215

9.2.7 连接多个服务 215

9.3 小结 216

第 10章 构建微服务交付流水线 217

10.1 让部署变得平淡 217

10.2 使用Jenkins构建流水线 219

10.2.1 构建流水线配置 220

10.2.2 构建镜像 223

10.2.3 运行测试 224

10.2.4 发布工件 226

10.2.5 部署至预发布环境 227

10.2.6 预发布环境 230

10.2.7 部署生产环境 230

10.3 构建可复用的流水线步骤 233

10.4 降低部署影响以及实现功能发布的

技术 235

10.4.1 暗发布 235

10.4.2 功能标记 236

10.5 小结 237

第四部分 可观测性和所有权

第 11章 构建监控系统 241

11.1 稳固的监控技术栈 241

11.1.1 良好的分层监控 243

11.1.2 黄金标志 244

11.1.3 度量指标的类型 244

11.1.4 实践建议 245

11.2 利用Prometheus和Grafana监控

SimpleBank 246

11.2.1 配置度量指标收集基础

 设施 247

11.2.2 收集基础设施度量

 指标——RabbitMQ 253

11.2.3 监控下单功能 255

11.2.4 告警设置 257

11.3 生成合理的可执行的告警 261

11.3.1 系统出错时哪些人需要

 知悉 261

11.3.2 症状,而非原因 262

11.4 监测整个应用 262

11.5 小结 264

第 12章 使用日志和链路追踪了解系统

 行为 265

12.1 了解服务间的行为 265

12.2 生成一致的、结构化的、人类可读的

 日志 268

12.2.1 日志中的有用信息 268

12.2.2 结构化和可读性 269

12.3 为SimpleBank配置日志基础设施 271

12.3.1 基于ELK和Fluentd的解决

 方案 272

12.3.2 配置日志解决方案 274

12.3.3 配置应收集哪些日志 276

12.3.4 大海捞针 279

12.3.5 记录合适的信息 281

12.4 服务间的跟踪交互 281

12.4.1 请求关联:trace和span 282

12.4.2 在服务内配置链路追踪 283

12.5 链路追踪可视化 287

12.6 小结 291

第 13章 微服务团队建设 292

13.1 建设高效团队 292

13.1.1 康威定律 294

13.1.2 高效团队原则 294

13.2 团队模型 296

13.2.1 按职能分组 296

13.2.2 跨职能分组 298

13.2.3 设置团队边界 299

13.2.4 基础设施、平台和产品 300

13.2.5 谁负责值班 302

13.2.6 知识共享 303

13.3 微服务团队的实践建议 304

13.3.1 微服务变更的驱动力 305

13.3.2 架构的角色 305

13.3.3 同质性与技术灵活性 307

13.3.4 开源模型 307

13.3.5 设计评审 308

13.3.6 动态文档 309

13.3.7 回答应用的问题 310

13.4 延伸阅读 311

13.5 小结 311

附录A 在Minikube上安装Jenkins 312









展开全部

作者简介

摩根·布鲁斯 (Morgan Bruce)和保罗·A. 佩雷拉 (Paulo A. Pereira)都是经验丰富的开发团队领导者,他们的主要工作是运用本书中介绍的技术将微服务应用到生产环境中。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航