本文通过Dubbo、SpringCloud、ServiceMesh等技术构建微服务体系,并深入浅出的介绍了微服务架构发展历程、领域驱动设计、稳定性保证的常用手段、分布式事务的一致性方案,以及通过大量的案例探讨微服务落地方案,例如双活体系建设,分布式监控,微服务编排,百亿流量微服务网关的设计与实现,基于支付场景下的微服务改造等,展示了实现微服务架构的完整蓝图,并让读者了解到如何借助于微服务来增强和重构现有的遗留系统。
不管你是还没听过或者刚接触过微服务的新手,还是正在尝试借助微服务解放生产力的开发人员或者运维人员,或者是立志于构建高可用可伸缩的微服务体系的架构师,都可阅读,对读者必有裨益。
目录第1章微服务架构概述1
1.1什么是架构1
1.2几个相关概念3
1.3从软件的生命周期看架构设计7
1.4架构的形式与特点9
1.5架构的目标与方法13
1.6架构的不同风格18
第2章微服务领域驱动设计30
2.1领域驱动设计31
2.1.1领域驱动设计概览31
2.1.2问题域与解决方案域34
2.1.3限界上下文35
2.1.4上下文映射40
2.1.5领域架构43
2.2微服务的设计48
2.2.1限界上下文的边界48
2.2.2限界上下文即微服务51
2.2.3识别限界上下文53
2.2.4微服务之间的协作59
2.3小结63
第3章ApacheDubbo框架的原理与实现64
3.1Dubbo框架的选型与使用64
3.1.1Dubbo框架的选型64
3.1.2Dubbo框架的使用65
3.2Dubbo框架的原理分析70
3.2.1总体架构分析70
3.2.2DubboBean的加载73
3.2.3DubboExtension机制77
3.2.4Dubbo消费端91
3.2.5Dubbo服务端126
3.2.6Dubbo的通信机制144
3.3基于Dubbo的自动化Mock系统165
3.3.1Mock模拟系统的产生166
3.3.2DubboMock的使用167
3.3.3DubboMock的原理解析168
3.3.4自动化Mock系统的实现170
第4章SpringBoot/SpringCloud实践177
4.1SpringBoot原理剖析178
4.1.1SpringBootQuickStart178
4.1.2SpringBoot之SpringApplication180
4.1.3spring-boot-loaded模块分析186
4.1.4spring-boot-autoconfigure模块分析190
4.1.5SpringBootConditional注解分析195
4.2DubboSpringBootStarter198
4.2.1DubboSpringBootStarter简介198
4.2.2DubboInitializr及sample198
4.2.3dubbo-spring-boot-autoconfigure模块201
4.2.4dubbo-spring-boot-actuator模块204
4.3SpringCloud栈211
4.3.1为什么微服务架构需要SpringCloud212
4.3.2SpringCloud技术栈总览214
4.3.3spring-cloud-scaffold基础库集合215
4.4基于MavenArchetype的脚手架239
4.4.1MavenArchetype239
4.4.2脚手架的搭建240
4.4.3生成脚手架247
第5章微服务稳定性保证的常用手段250
5.1微服务的稳定性250
5.2高可用250
5.2.1限流原理与实现250
5.2.2断路器原理与实现256
5.2.3超时与重试260
5.3高并发262
5.3.1异步263
5.3.2缓存270
5.4总结272
第6章微服务下如何保证事务的一致性273
6.1从本地事务到分布式事务的演变273
6.2强一致性解决方案276
6.2.1二阶段提交协议276
6.2.2三阶段提交协议278
6.3最终一致性解决方案280
6.3.1TCC模式280
6.3.2补偿模式285
6.3.3可靠事件模式286
6.4开源项目的分布式事务实现解读288
6.4.1ApacheRocketMQ288
6.4.2ServiceComb289
第7章百亿流量微服务网关的设计与实现293
7.1API网关概述293
7.1.1分布式服务架构、微服务架构与API网关293
7.1.3API网关的分类与技术分析298
7.2开源网关的分析与调研300
7.2.1常见的开源网关介绍300
7.2.2四大开源网关的对比分析308
7.2.3开源网关的技术总结309
7.3百亿流量交易系统API网关设计310
7.3.1百亿流量交易系统API网关的现状和面临问题310
7.3.2业务网关的设计与最佳实践313
第8章微服务编排317
8.1NetflixConductor317
8.2NetflixConductor的架构319
8.3Conductor的使用案例320
8.4NetflixConductor源码分析328
8.4.1Client层源码分析330
8.4.2Server端源码分析337
8.4.3core端源码分析344
第9章微服务数据抽取与统计356
9.1案例小故事356
9.2数据仓库概述358
9.2.1什么是数据仓库358
9.2.2数据仓库架构360
9.2.3数据仓库建模方法361
9.2.4数据抽取、转换和加载361
9.2.5数据统计362
9.3数据仓库工具Hive362
9.3.1安装Hive364
9.3.2Hive数据库366
9.3.3Hive表367
9.4使用Sqoop抽取数据369
9.4.1安装Sqoop370
9.4.2将MySQL表数据导入Hive表372
9.5ETL作业调度375
第10章微服务双活体系建设377
10.1系统高可用377
10.2双活数据中心379
10.2.1单机房部署379
10.2.2双机房部署380
10.2.3基于支付场景的双活体系建设383
第11章基于支付场景下的微服务改造与性能优化399
11.1支付场景的介绍399
11.2支付业务建模和服务划分400
11.3支付场景下微服务架构的详解与分析402
11.3.1业务架构分析402
11.3.2技术平台详解404
11.4从代码层面提升微服务架构的性能407
11.4.1从代码和设计的角度看407
11.4.2从整体架构的角度看418
11.5微服务架构中常见的一些故障分析技巧421
第12章遗留系统的微服务架构改造426
12.1代码分层结构的转变426
12.2遗留系统的债券与思考430
12.3从单体系统拆分服务的方法论431
12.4遗留系统的微服务架构改造436
12.4.1从代码重构开始436
12.4.2拆分服务需要面向服务进行架构设计437
12.4.3改造是一个渐进的过程437
12.4.4单元测试是基石440
12.4.5面向失败的设计440
12.4.6前后端分离441
12.4.7共享现有数据库441
12.4.8灰度发布的必要性442
12.4.9日志聚合与全链路监控442
第13章ServiceMesh详解443
13.1ServiceMesh是什么443
13.2ServiceMesh的背景443
13.3ServiceMesh介绍444
13.3.1ServiceMesh架构444
13.3.2ServiceMesh能做什么445
13.4ServiceMesh的价值446
13.5ServiceMesh现状447
13.6ServiceMesh存在的问题448
13.7Istio详解449
13.7.1Istio架构449
13.7.2数据平面450
13.7.3控制平面455
13.7.4Isito案例458
13.8ServiceMesh展望461
第14章微服务监控实战463
14.1APM原理与应用464
14.1.1什么是APM464
14.1.2APM监控点464
14.1.3APM深入解析464
14.2Prometheus监控系统介绍492
14.2.1Prometheus的主要特点493
14.2.2Prometheus的架构及组件介绍493
14.2.3Prometheus的安装494
14.2.4使用Prometheus对MySQL进行监控498
14.2.5Prometheus的告警机制501
本书共分为十四章:
第一章:微服务概述
从软件架构的发展历程讲起,分别对单体架构、SOA架构和微服务架构的演进过程做了深入浅出的讲解,同时也深入介绍了微服务架构的特点,本章以宏观的视角为读者打开微服务的大门。
第二章:微服务领域驱动设计
本章介绍了领域驱动设计是什么,常见的领域架构有哪些,如何将领域驱动应用到微服务中,以及如何使用领域驱动进行合理的服务划分等,帮助读者在正式学习微服务前修炼内功。
第三章:Dubbo原理与实现
目前Dubbo已经被阿里巴巴技术团队重新维护并且得到了大力的发展和推广,使用Dubbo依然可以很好的进行微服务建设,本章较为深入的讲解了Dubbo的使用和技巧,以及通过源码的深入分析能够让读者对Dubbo的原理实现有一个全面的认识。
第四章:SpringCloud实战案例
SpringBoot/Cloud是目前较为流行的微服务框架,本章以大量的实战案例为读者讲解如何才能应用好SpringCloud框架,以及如何避免在使用过程中遇到的坑。
第五章:微服务稳定性保证常用手段
当业务发展越来越快,规模也越来越大的情况下,我们所面临的就是如何在服务越来越多的情况下保证微服务架构的稳定性,本章带领读者逐步揭开保障稳定性的常用技巧和手段。
第六章:微服务下事务的一致性保证
本章介绍了从本地事务到分布式事务的演变,深入分析了微服务在强一致性场景和最终一致性场景下的解决方案,探讨了二阶段提交协议、三阶段提交协议、TCC模式、补偿模式、可靠事件模式等。同时,对开源项目的分布式事务进行解读,包括RocketMQ和ServiceComb。
第七章:微服务亿级网关设计
本章从百亿流量交易系统微服务网关(APIGateway)的现状和面临问题出发,阐述微服务架构与API网关的关系,理顺流量网关与业务网关的脉络,带来最全面的API网关知识与经验。
第八章:微服务编排
本章以NetflixConductor框架为核心,从框架的使用和原理深入介绍了什么是微服务编排,为微服务执行复杂的业务逻辑提供了一种新的思路。
第九章:微服务统计与数据抽取方案
在微服务架构下,服务必将越来越多,在这各情况下如何进行数据统计和分析将变得非常困难,本章将深入讲解如何从不同服务的数据库中抽取数据到统一的大数据平台中,帮忙使用者更方便的进行数据的统计。
第十章:微服务双活体系建设
在企业发展规模越来越大的情况下,用户对系统的稳定性要求也越来越高,那么单机房布署势必成为发展的瓶颈,本章将带领读者从零开始以实际案例出发进行同城双活的建设。
第十一章:基于支付场景下的微服务改造和性能优化
本章从实际的案例出发,在具体的支付业务场景下,从一个新项目开始逐步讲解如何利用领域驱动划分服务,如何利用微服务框架进行服务治理,以及项目完成后怎样提升微服务架构的性能。
第十二章:遗留系统的微服务改造
本章介绍了遗留系统的微服务架构改造,梳理了代码分层结构的转变,提出一个新的代码分层思路来应对微服务的流行与普及,并深入思考了遗留系统的债券,深入探讨单体系统拆分服务的方法论。同时,对遗留系统的微服务架构改造的解决方案给出9个切实可行的核心实践思路。
第十三章:ServiceMesh的入门与案例
随着微服务的持续发展,下一代微服务架构已然出现,本章将深入介绍ServiceMesh发展历程,以及结合具体案例带领读者使用Istio进行具体实践。
第十四章:微服务监控实战
本章重点介绍APM的原理,从零开始开发APM监控系统,还深入介绍Prometheus的安装和原理,以及如何使用Prometheus进行监控和预警。
总结本文的每一个章节都是相关领域的专家经过多年的技术积累提炼而成,秉承以理论为基础,以大量企业实战案例为核心,深入全面的介绍了微服务架构的实施方法以及在实施过程中所遇到的问题和解决方案,是一本内容详实、“可落地”的理论实践相结合的技术书籍。





