云原生模式(博文视点出品)
第1部分 云原生上下文
第1章 什么是“云原生”...3
1.1 现代应用程序的需求 .7
1.1.1 零停机时间 ....7
1.1.2 缩短反馈周期 ...8
1.1.3 移动端和多设备支持...8
1.1.4 互联设备(物联网)....9
1.1.5 数据驱动....9
1.2 云原生软件简介 ..10
1.2.1 定义“云原生”......10
查看完整
第1章 什么是“云原生”...3
1.1 现代应用程序的需求 .7
1.1.1 零停机时间 ....7
1.1.2 缩短反馈周期 ...8
1.1.3 移动端和多设备支持...8
1.1.4 互联设备(物联网)....9
1.1.5 数据驱动....9
1.2 云原生软件简介 ..10
1.2.1 定义“云原生”......10
查看完整
Cornelia Davis 是 Pivotal 公司的技术副总裁,她负责为 Pivotal 公司和 Pivotal 公司的客户制定技术战略。目前,她正在研究如何将各种云计算模型(基础设施即服务、应用程序即服务、容器即服务和函数即服务 ) 整合到一个全面的产品中,使 IT 组织能够在**层面上运行。Cornelia 在图像处理、科学可视化、分布式系统和 web 应用程序架构,以及云原生平台方面有超过 30 年的经验。Cornelia 拥有加州州立大学北岭分校的计算机科学本科和硕士学位,并在印第安纳大学进一步研究了计算机原理和编程语言。因为内心一直想当一名老师,所以 Cornelia 在过去的 30 年里,一直致力于开发更好的软件,以及培养更好的软件开发人员。空闲的时候,Cornelia 更喜欢瑜伽锻炼和烹饪。
张若飞,曾任多家互联网金融公司CTO,在宜人贷、雅虎北研、金山云等知名…
查看完整
张若飞,曾任多家互联网金融公司CTO,在宜人贷、雅虎北研、金山云等知名…
查看完整
拥抱“云”,更多指的是如何设计你的应用程序,而不是你在哪里部署它们。本书是一本架构指南,指导你如何让应用程序在动态的、分布式的、虚拟的云世界中茁壮成长。本书介绍了云原生应用程序的多种思维模型,以及支持其构建的模式、实践和工具,同时提供了一些实际案例和专家建议,帮助你更好地开发和使用应用程序、数据、服务、路由等。本书分为两部分。第 1 部分定义了云原生的上下文环境,并展示了软件部署环境的特点。第2 部分深入探讨了云原生模式,包括请求 / 响应、事件驱动、断路器等。无论你是否有云原生的开发经验,通过本书提供的众多模式,一定可以更好地理解和掌握云原生开发。
第1部分 云原生上下文
第1章 什么是“云原生”...3
1.1 现代应用程序的需求 .7
1.1.1 零停机时间 ....7
1.1.2 缩短反馈周期 ...8
1.1.3 移动端和多设备支持...8
1.1.4 互联设备(物联网)....9
1.1.5 数据驱动....9
1.2 云原生软件简介 ..10
1.2.1 定义“云原生”......10
1.2.2 云原生软件的思维模型......12
1.2.3 云原生软件实战 .....17
1.3 云原生与世界和平 .....21
1.3.1 云和云原生 ......22
1.3.2 什么不是云原生 .....23
1.3.3 云原生的价值 ......24
小结 ....26
第2章 在生产环境中运行云原生应用程序.....27
2.1 面临的困难 .....28
2.1.1 碎片化的变化 ...30
2.1.2 有风险的部署 ....31
2.1.3 认为变化是例外 .....35
2.1.4 生产环境的不稳定性 ....35
2.2 解决办法.....36
2.2.1 持续交付 ....37
2.2.2 可重复性 ....41
2.2.3 安全部署 .....46
2.2.4 变化是一定的 .....49
小结 ....52
第3章 云原生软件平台.....53
3.1 云(原生)平台的发展 ...54
3.1.1 从云计算开始 ......54
3.1.2 云原生的“拨号音” ....56
3.2 云原生平台的核心原则 ....59
3.2.1 先聊聊容器......60
3.2.2 支持“不断变化” .....61
3.2.3 支持“高度分布式” ....64
3.3 人员分工 .....68
3.4 云原生平台的其他功能 .....70
3.4.1 平台支持整个软件开发生命周期 .....70
3.4.2 安全性、变更控制和合规性(管控功能) .....73
3.4.3 控制进入容器的东西 .....75
3.4.4 升级与安全漏洞修补 .....77
3.4.5 变更控制 ....79
小结 ....81
第2部分 云原生模式
第4章 事件驱动微服务:不只是请求/响应. ....85
4.1 我们(通常)学习的是命令式编程 .....86
4.2 重新介绍事件驱动的计算 .....88
4.3 我的全球食谱 ....89
4.3.1 请求 / 响应 ....90
4.3.2 事件驱动 ....96
4.4 命令查询职责分离模式 ....106
4.5 不同的风格,相同的挑战 ....108
小结 .....110
第5章 应用程序冗余:水平伸缩和无状态......111
5.1 云原生应用程序会部署许多实例....113
5.2 云环境中的有状态服务 .......114
5.2.1 解耦单体程序并绑定到数据库 ....115
5.2.2 错误处理会话状态 .......119
5.3 HTTP会话和黏性会话 .....133
5.4 有状态服务和无状态应用程序 ...136
5.4.1 有状态服务是特殊的服务 .....136
5.4.2 让应用程序变得无状态 ...138
小结 ......143
第6章 应用程序配置:不只是环境变量...144
6.1 为什么要讨论配置 .......145
6.1.1 动态伸缩 — 增加和减少应用程序实例的数量..146
6.1.2 基础设施变化会导致配置变化 ......146
6.1.3 零停机时间更新应用程序配置 ....148
6.2 应用程序的配置层 ....148
6.3 注入系统/环境值 .....153
6.3.1 实际案例 :使用环境变量进行配置 .....153
6.4 注入应用程序配置 .....162
6.4.1 配置服务器简介 ......163
6.4.2 安全方面的额外需求 .....171
6.4.3 实际案例 :使用配置服务器的应用程序配置 .....171
小结 .......174
第7章 应用程序生命周期:考虑不断的变化....175
7.1 运维同理心 .....177
7.2 单实例应用程序生命周期和多实例应用程序生命周期 ...178
7.2.1 蓝 / 绿升级 .....182
7.2.2 滚动升级 ......183
7.2.3 并行部署 ......184
7.3 协调多个不同的应用程序生命周期 ..................187
7.4 实际案例:密码轮换和应用程序生命周期 ..............191
7.5 处理临时运行时环境 ...............................200
7.6 应用程序生命周期状态的可见性 .........................202
7.6.1 实际案例 :健康端点和探测 ...............207
7.7 无服务器架构 ..............210
小结 ..................212
第8章 如何访问应用程序:服务、路由和服务发现......214
8.1 服务抽象 ........217
8.1.1 服务示例 :用 Google 进行搜索 ....218
8.1.2 服务示例 :我们的博客聚合器 ...........................................................220
8.2 动态路由 ....221
8.2.1 服务端负载均衡 ....221
8.2.2 客户端负载均衡 .....222
8.2.3 路由刷新 ....223
8.3 服务发现 .........226
8.3.1 Web 的服务发现 ........229
8.3.2 服务发现和客户端负载均衡 ......230
8.3.3 Kubernetes 中的服务发现 .......232
8.3.4 实际案例 :使用服务发现 ......234
小结 ........237
第9章 交互冗余:重试和其他控制循环....238
9.1 请求重试 ..........240
9.1.1 基本的请求重试 .......240
9.1.2 实际案例 :简单的重试 .....241
9.1.3 重试 :可能出了什么问题 .......246
9.1.4 创建一个重试风暴 .......247
9.1.5 实际案例 :创建一个重试风暴 .....248
9.1.6 避免重试风暴 :友好的客户端 ....259
9.1.7 实际案例 :成为一个更友好的客户端 .....259
9.1.8 什么时候不需要重试 ........265
9.2 回退逻辑 ............266
9.2.1 实际案例 :实现回退逻辑 ....266
9.3 控制循环 .........272
9.3.1 了解控制循环的类型 ....272
9.3.2 如何控制控制循环 ........273
小结 ......275
第10章 前沿服务:断路器和API网关.......277
10.1 断路器 ..............279
10.1.1 软件中的断路器 ...........279
10.1.2 实现一个断路器 ........282
10.2 API网关 ......294
10.2.1 云原生软件中的 API 网关 .........296
10.2.2 API 网关拓扑 ......297
10.3 服务网格 ......299
10.3.1 挎斗 .......299
10.3.2 控制平面 ......302
小结 ............304
第11章 故障排除:如同大海捞针.......305
11.1 应用程序日志 .....306
11.2 应用程序度量指标 ..........310
11.2.1 从云原生应用程序中获取指标 ....311
11.2.2 由云原生应用程序推送指标 ...314
11.3 分布式跟踪 .......317
11.3.1 跟踪器的输出 .........320
11.3.2 通过 Zipkin 组合跟踪轨迹 ......323
11.3.3 实现细节 ........328
小结 ...............329
第12章 云原生数据:打破数据单体....331
12.1 每个微服务都需要一个缓存 ..334
12.2 从请求/响应到事件驱动 ............337
12.3 事件日志 ...........339
12.3.1 实际案例 :实现一个事件驱动的微服务 .....341
12.3.2 主题和队列的新特点 .........354
12.3.3 事件载荷 ......358
12.3.4 幂等性 ......360
12.4 事件溯源 ............361
12.4.1 到目前为止的旅程 .....361
12.4.2 真实来源 .....363
12.4.3 实际案例 :实现事件溯源 ....365
12.5 我们只是介绍了一些皮毛 ........368
小结 ....
^ 收 起
第1章 什么是“云原生”...3
1.1 现代应用程序的需求 .7
1.1.1 零停机时间 ....7
1.1.2 缩短反馈周期 ...8
1.1.3 移动端和多设备支持...8
1.1.4 互联设备(物联网)....9
1.1.5 数据驱动....9
1.2 云原生软件简介 ..10
1.2.1 定义“云原生”......10
1.2.2 云原生软件的思维模型......12
1.2.3 云原生软件实战 .....17
1.3 云原生与世界和平 .....21
1.3.1 云和云原生 ......22
1.3.2 什么不是云原生 .....23
1.3.3 云原生的价值 ......24
小结 ....26
第2章 在生产环境中运行云原生应用程序.....27
2.1 面临的困难 .....28
2.1.1 碎片化的变化 ...30
2.1.2 有风险的部署 ....31
2.1.3 认为变化是例外 .....35
2.1.4 生产环境的不稳定性 ....35
2.2 解决办法.....36
2.2.1 持续交付 ....37
2.2.2 可重复性 ....41
2.2.3 安全部署 .....46
2.2.4 变化是一定的 .....49
小结 ....52
第3章 云原生软件平台.....53
3.1 云(原生)平台的发展 ...54
3.1.1 从云计算开始 ......54
3.1.2 云原生的“拨号音” ....56
3.2 云原生平台的核心原则 ....59
3.2.1 先聊聊容器......60
3.2.2 支持“不断变化” .....61
3.2.3 支持“高度分布式” ....64
3.3 人员分工 .....68
3.4 云原生平台的其他功能 .....70
3.4.1 平台支持整个软件开发生命周期 .....70
3.4.2 安全性、变更控制和合规性(管控功能) .....73
3.4.3 控制进入容器的东西 .....75
3.4.4 升级与安全漏洞修补 .....77
3.4.5 变更控制 ....79
小结 ....81
第2部分 云原生模式
第4章 事件驱动微服务:不只是请求/响应. ....85
4.1 我们(通常)学习的是命令式编程 .....86
4.2 重新介绍事件驱动的计算 .....88
4.3 我的全球食谱 ....89
4.3.1 请求 / 响应 ....90
4.3.2 事件驱动 ....96
4.4 命令查询职责分离模式 ....106
4.5 不同的风格,相同的挑战 ....108
小结 .....110
第5章 应用程序冗余:水平伸缩和无状态......111
5.1 云原生应用程序会部署许多实例....113
5.2 云环境中的有状态服务 .......114
5.2.1 解耦单体程序并绑定到数据库 ....115
5.2.2 错误处理会话状态 .......119
5.3 HTTP会话和黏性会话 .....133
5.4 有状态服务和无状态应用程序 ...136
5.4.1 有状态服务是特殊的服务 .....136
5.4.2 让应用程序变得无状态 ...138
小结 ......143
第6章 应用程序配置:不只是环境变量...144
6.1 为什么要讨论配置 .......145
6.1.1 动态伸缩 — 增加和减少应用程序实例的数量..146
6.1.2 基础设施变化会导致配置变化 ......146
6.1.3 零停机时间更新应用程序配置 ....148
6.2 应用程序的配置层 ....148
6.3 注入系统/环境值 .....153
6.3.1 实际案例 :使用环境变量进行配置 .....153
6.4 注入应用程序配置 .....162
6.4.1 配置服务器简介 ......163
6.4.2 安全方面的额外需求 .....171
6.4.3 实际案例 :使用配置服务器的应用程序配置 .....171
小结 .......174
第7章 应用程序生命周期:考虑不断的变化....175
7.1 运维同理心 .....177
7.2 单实例应用程序生命周期和多实例应用程序生命周期 ...178
7.2.1 蓝 / 绿升级 .....182
7.2.2 滚动升级 ......183
7.2.3 并行部署 ......184
7.3 协调多个不同的应用程序生命周期 ..................187
7.4 实际案例:密码轮换和应用程序生命周期 ..............191
7.5 处理临时运行时环境 ...............................200
7.6 应用程序生命周期状态的可见性 .........................202
7.6.1 实际案例 :健康端点和探测 ...............207
7.7 无服务器架构 ..............210
小结 ..................212
第8章 如何访问应用程序:服务、路由和服务发现......214
8.1 服务抽象 ........217
8.1.1 服务示例 :用 Google 进行搜索 ....218
8.1.2 服务示例 :我们的博客聚合器 ...........................................................220
8.2 动态路由 ....221
8.2.1 服务端负载均衡 ....221
8.2.2 客户端负载均衡 .....222
8.2.3 路由刷新 ....223
8.3 服务发现 .........226
8.3.1 Web 的服务发现 ........229
8.3.2 服务发现和客户端负载均衡 ......230
8.3.3 Kubernetes 中的服务发现 .......232
8.3.4 实际案例 :使用服务发现 ......234
小结 ........237
第9章 交互冗余:重试和其他控制循环....238
9.1 请求重试 ..........240
9.1.1 基本的请求重试 .......240
9.1.2 实际案例 :简单的重试 .....241
9.1.3 重试 :可能出了什么问题 .......246
9.1.4 创建一个重试风暴 .......247
9.1.5 实际案例 :创建一个重试风暴 .....248
9.1.6 避免重试风暴 :友好的客户端 ....259
9.1.7 实际案例 :成为一个更友好的客户端 .....259
9.1.8 什么时候不需要重试 ........265
9.2 回退逻辑 ............266
9.2.1 实际案例 :实现回退逻辑 ....266
9.3 控制循环 .........272
9.3.1 了解控制循环的类型 ....272
9.3.2 如何控制控制循环 ........273
小结 ......275
第10章 前沿服务:断路器和API网关.......277
10.1 断路器 ..............279
10.1.1 软件中的断路器 ...........279
10.1.2 实现一个断路器 ........282
10.2 API网关 ......294
10.2.1 云原生软件中的 API 网关 .........296
10.2.2 API 网关拓扑 ......297
10.3 服务网格 ......299
10.3.1 挎斗 .......299
10.3.2 控制平面 ......302
小结 ............304
第11章 故障排除:如同大海捞针.......305
11.1 应用程序日志 .....306
11.2 应用程序度量指标 ..........310
11.2.1 从云原生应用程序中获取指标 ....311
11.2.2 由云原生应用程序推送指标 ...314
11.3 分布式跟踪 .......317
11.3.1 跟踪器的输出 .........320
11.3.2 通过 Zipkin 组合跟踪轨迹 ......323
11.3.3 实现细节 ........328
小结 ...............329
第12章 云原生数据:打破数据单体....331
12.1 每个微服务都需要一个缓存 ..334
12.2 从请求/响应到事件驱动 ............337
12.3 事件日志 ...........339
12.3.1 实际案例 :实现一个事件驱动的微服务 .....341
12.3.2 主题和队列的新特点 .........354
12.3.3 事件载荷 ......358
12.3.4 幂等性 ......360
12.4 事件溯源 ............361
12.4.1 到目前为止的旅程 .....361
12.4.2 真实来源 .....363
12.4.3 实际案例 :实现事件溯源 ....365
12.5 我们只是介绍了一些皮毛 ........368
小结 ....
^ 收 起
Cornelia Davis 是 Pivotal 公司的技术副总裁,她负责为 Pivotal 公司和 Pivotal 公司的客户制定技术战略。目前,她正在研究如何将各种云计算模型(基础设施即服务、应用程序即服务、容器即服务和函数即服务 ) 整合到一个全面的产品中,使 IT 组织能够在**层面上运行。Cornelia 在图像处理、科学可视化、分布式系统和 web 应用程序架构,以及云原生平台方面有超过 30 年的经验。Cornelia 拥有加州州立大学北岭分校的计算机科学本科和硕士学位,并在印第安纳大学进一步研究了计算机原理和编程语言。因为内心一直想当一名老师,所以 Cornelia 在过去的 30 年里,一直致力于开发更好的软件,以及培养更好的软件开发人员。空闲的时候,Cornelia 更喜欢瑜伽锻炼和烹饪。
张若飞,曾任多家互联网金融公司CTO,在宜人贷、雅虎北研、金山云等知名公司担任架构师。十余年互联网研发及技术管理经验,对搭建海量数据、大型分布式系统有丰富经验。著有十余本技术译著,包括《Grails权威指南》《给大忙人看的JavaSE 8》《代码不朽:编写可维护软件的十大原则》《面向可伸缩架构》《云原生Java》等书,总计400余万字。
^ 收 起
张若飞,曾任多家互联网金融公司CTO,在宜人贷、雅虎北研、金山云等知名公司担任架构师。十余年互联网研发及技术管理经验,对搭建海量数据、大型分布式系统有丰富经验。著有十余本技术译著,包括《Grails权威指南》《给大忙人看的JavaSE 8》《代码不朽:编写可维护软件的十大原则》《面向可伸缩架构》《云原生Java》等书,总计400余万字。
^ 收 起
拥抱“云”,更多指的是如何设计你的应用程序,而不是你在哪里部署它们。本书是一本架构指南,指导你如何让应用程序在动态的、分布式的、虚拟的云世界中茁壮成长。本书介绍了云原生应用程序的多种思维模型,以及支持其构建的模式、实践和工具,同时提供了一些实际案例和专家建议,帮助你更好地开发和使用应用程序、数据、服务、路由等。本书分为两部分。第 1 部分定义了云原生的上下文环境,并展示了软件部署环境的特点。第2 部分深入探讨了云原生模式,包括请求 / 响应、事件驱动、断路器等。无论你是否有云原生的开发经验,通过本书提供的众多模式,一定可以更好地理解和掌握云原生开发。
比价列表
1人想要
公众号、微信群
缺书网
微信公众号
微信公众号
扫码进群
实时获取购书优惠
实时获取购书优惠