作 者:FreeWheel核心业务系统开发团队 著
定 价:108
出 版 社:电子工业出版社
出版日期:2021年11月01日
页 数:372
装 帧:平装
ISBN:9787121422744
●章云原生时代下的微服务1
1.1从微服务谈起1
1.1.1微服务架构的关键特性2
1.1.2微服务的取舍6
1.2云原生应用9
1.2.1什么是云原生9
1.2.2云原生技术12
1.2.3云原生应用的特点15
1.3从微服务到云原生17
1.3.1非功能性需求的调整17
1.3.2治理方式的改变18
1.3.3部署和发布的改变19
1.3.4从微服务应用到云原生应用20
1.4本章小结21
第2章微服务应用设计方法22
2.1应用架构设计22
2.1.1服务架构选型22
2.1.2服务通信策略27
2.1.3存储层设计和选型35
2.2遗留系统改造37
2.2.1绿地与棕地38
2.2.2绞杀者模式39
2.3业务逻辑设计43
2.3.1拆分服务43
2.3.2设计API50
2.4本章小结54
第3章服务开发与运维55
3.1敏捷开发流程55
3.1.1从瀑布模型到敏捷开发56
3.1.2基于Scrum的敏捷实践58
3.2搭建运行环境
3.2.1开发环境
3.2.2测试环境65
3.2.3预发布环境66
3.2.4生产环境67
3.3代码管理67
3.3.1Git分支管理67
3.3.2使用Sonar进行代码检查71
3.3.3代码评审75
3.3.4代码提交与合并76
3.4低代码开发平台77
3.4.1低代码与开发平台77
3.4.2低代码开发平台实践78
3.5服务管理与运维平台83
3.5.1平台要解决的问题83
3.5.2平台架构83
3.5.3平台功能模块85
3.6服务中台化87
3.6.1什么是中台87
3.6.2中台的构建之路88
3.7本章小结93
第4章微服务流量管理94
4.1云原生时代的流量管理94
4.1.1流量类型95
4.1.2服务网格96
4.2服务发现98
4.2.1传统服务发现上云后的问题98
4.2.2Kubernetes的服务发现机制99
4.3使用Istio服务网格进行流量管理102
4.3.1核心自定义资源102
4.3.2基于Istio的流量管理实践112
4.3.3常见落地问题与调试120
4.4使用Istio提升应用的容错能力127
4.4.1熔断器128
4.4.2超时和重试131
4.5本章小结.134
第5章分布式事务135
5.1分布式事务的挑战135
5.1.1从事务到分布式事务135
5.1.2ACID:传统意义上的事务约束137
5.1.3CAP:分布式系统的挑战138
5.1.4BASE:高可用的代价139
5.1.5写顺序139
5.2分布式事务框架的方案选型140
5.2.1现有研究与实践140
5.2.2分布式事务框架的设计目标143
5.2.3选择Saga144
5.2.4引入Kafka145
5.2.5系统架构148
5.2.6业务流程148
5.3基于Saga和Kafka的分布式事务落地实践149
5.3.1Kafka并行消费模型的改进149
5.3.2部署细节151
5.3.3系统可用性分析152
5.3.4线上问题及处理152
5.4本章小结155
第6章无服务器架构157
6.1什么是无服务器架构157
6.1.1无服务器架构的定义157
6.1.2无服务器架构的发展158
6.1.3无服务器架构的优势160
6.1.4无服务器架构的不足161
6.2无服务器架构应用163
6.2.1构建Web API后端服务163
6.2.2构建数据编排器165
6.2.3构建定时任务166
6.2.4构建实时流处理服务167
6.3无服务器架构的落地实践169
6.3.1为什么选择AWS Lambda169
6.3.2大量数据的导入和处理171
6.3.3日志数据的采集和处理179
本章小结190
第7章服务的可观察性191
7.1什么是可观察性191
7.1.1可观察性的定义191
7.1.2可观察性的三大支柱192
7.1.3可观察性与监控的联系与区别193
7.1.4社区产品现状及技术选型194
7.2云原生下的日志解决方案195
7.2.1日志分类与设计195
7.2.2云原生日志收集方案的演进206
7.2.3使用Kibana展示日志212
7.3分布式追踪222
7.3.1分布式追踪系统的核心概念222
7.3.2基于Jaeger的追踪方案223
7.4度量指标233
7.4.1利用Prometheus收集度量指标233
7.4.2使用Grafana展示度量指标241
7.5监控与告警设计242
7.5.1监控平台构建实践242
7.5.2告警系统的搭建254
7.6本章小结258
第8章质量保证实践259
8.1质量保证体系259
8.1.1质量挑战260
8.1.2测试策略260
8.1.3构建质量保证体系262
8.2测试实践265
8.2.1单元测试与mock实践266
8.2.2基于Godog的集成测试实践272
8.2.3基于Cypress的端到端测试实践277
8.2.4测试自动化280
8.3混沌工程285
8.3.1混沌工程的核心理念285
8.3.2如何运行混沌实验292
8.3.3系统资源类故障注入实验297
8.3.4基于服务网格的网络流量故障注入方法306
8.4类生产环境的质量保证311
8.4.1线上服务的监测与分析311
8.4.2Bug Bash实践313
8.4.3t-release Check实践317
8.4.4灾备策略与实践319
8.5本章小结322
第9章持续集成和持续部署323
9.1基于Git的持续集成323
9.1.1自动触发流水线324
9.1.2流水线差异化与统一协作331
9.1.3流水线产物存储规划334
9.2基于Helm的持续部署337
9.2.1部署规划338
9.2.2不同环境下多集群的部署框架339
9.2.3云原生的支持和任务维护345
9.3基于Kubernetes的持续部署实践348
9.3.1Pod资源配额及水平扩缩349
9.3.2服务上下线流程和故障分析351
9.4本章小结354
传统的微服务应用正在经历着云原生技术的"洗礼”。随着该领域技术的不断变革与完善,以原生方式开发基于云的微服务成了降本提效的重要手段。FreeWheel核心业务系统开发团队在多年的实践中探索出了一条云原生微服务应用构建之路。本书基于这些实践经验,从设计、开发到测试、部署,介绍了团队如何利用云原生技术为应用开发的全生命周期赋能。从架构技术选型到具体工程实践,书中内容理论联系实际,较为全面地剖析了容器落地、服务网格、无服务器计算、持续集成和持续部署等核心云原生技术,适合关注微服务、云原生技术的架构师、工程师及技术决策者阅读。