1.基于Dubbo、Spring Cloud、Service Mesh等技术来构建微服务体系。
2.深入浅出地介绍微服务架构发展历程、领域驱动设计、稳定性保证的常用手段、分布式事务的一致性方案。
3.通过大量的案例探讨微服务落地方案,例如双活体系建设、分布式监控、微服务编排、百亿流量微服务网关的设计与实现、基于支付场景下的微服务改造等
4.展示实现微服务架构的完整蓝图,并让读者了解如何借助微服务来增强和重构现有的遗留系统。
近年来微服务架构已经成为大规模分布式架构的主流技术,越来越多的公司已经或开始转型为微服务架构。《高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh》不以某一种微服务框架的使用为主题,而是对整个微服务生态进行系统性的讲解,并结合工作中的大量实战案例为读者呈现一本读完即可实际上手应用的工具书。
《高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh》中的理论部分介绍了微服务架构的发展历程,通俗地讲解了领域驱动设计,帮助读者更好地利用DDD来建模和划分服务;微服务稳定性保证的常用手段和微服务下如何保证事务的一致性这两章凝聚了作者多年的积累和思考,相信读者看完后会有不一样的感触和收获;书中实战部分的内容非常丰富,以项目为基础,逐层介绍常见的Dubbo、Spring Cloud和Service Mesh框架的具体使用方法,并对实现原理进行剖析;书中还以具体案例全面介绍了微服务双活体系建设、微服务监控与告警、微服务编排、百亿流量微服务网关的设计与实现,以及基于支付场景下的微服务改造等,并让读者了解如何借助微服务来增强和重构现有的遗留系统。
不管是刚接触微服务的新手,还是正在尝试借助微服务解放生产力的开发人员或运维人员,甚至是立志于构建高可用可伸缩的微服务体系的技术Leader和架构师,阅读本书,对读者必有裨益。
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章 Apache Dubbo框架的原理与实现 64
3.1 Dubbo框架的选型与使用 64
3.1.1 Dubbo框架的选型 64
3.1.2 Dubbo框架的使用 65
3.2 Dubbo框架的原理分析 70
3.2.1 总体架构分析 70
3.2.2 Dubbo Bean的加载 73
3.2.3 Dubbo Extension机制 77
3.2.4 Dubbo消费端 91
3.2.5 Dubbo服务端 126
3.2.6 Dubbo的通信机制 144
3.3 基于Dubbo的自动化Mock系统 165
3.3.1 Mock模拟系统的产生 166
3.3.2 Dubbo Mock的使用 167
3.3.3 Dubbo Mock的原理解析 168
3.3.4 自动化Mock系统的实现 170
第4章 Spring Boot/Spring Cloud实践 177
4.1 Spring Boot原理剖析 178
4.1.1 Spring Boot Quick Start 178
4.1.2 Spring Boot之SpringApplication 180
4.1.3 spring-boot-loaded模块分析 186
4.1.4 spring-boot-autoconfigure模块分析 190
4.1.5 Spring Boot Conditional注解分析 195
4.2 Dubbo Spring Boot Starter 198
4.2.1 Dubbo Spring Boot Starter简介 198
4.2.2 Dubbo Initializr及sample 198
4.2.3 dubbo-spring-boot-autoconfigure模块 201
4.2.4 dubbo-spring-boot-actuator模块 204
4.3 Spring Cloud栈 211
4.3.1 为什么微服务架构需要Spring Cloud 212
4.3.2 Spring Cloud技术栈总览 214
4.3.3 spring-cloud-scaffold基础库集合 215
4.4 基于Maven Archetype的脚手架 239
4.4.1 Maven Archetype 239
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.1 TCC模式 280
6.3.2 补偿模式 285
6.3.3 可靠事件模式 286
6.4 开源项目的分布式事务实现解读 288
6.4.1 Apache RocketMQ 288
6.4.2 ServiceComb 289
第7章 百亿流量微服务网关的设计与实现 293
7.1 API网关概述 293
7.1.1 分布式服务架构、微服务架构与 API 网关 293
7.1.2 API网关的定义、职能与关注点 296
7.1.3 API网关的分类与技术分析 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.1 Netflix Conductor 317
8.2 Netflix Conductor的架构 319
8.3 Conductor的使用案例 320
8.4 Netflix Conductor源码分析 328
8.4.1 Client层源码分析 330
8.4.2 Server端源码分析 337
8.4.3 core端源码分析 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 数据仓库工具Hive 362
9.3.1 安装Hive 364
9.3.2 Hive数据库 366
9.3.3 Hive表 367
9.4 使用Sqoop抽取数据 369
9.4.1 安装Sqoop 370
9.4.2 将MySQL表数据导入Hive表 372
9.5 ETL作业调度 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章 Service Mesh详解 443
13.1 Service Mesh是什么 443
13.2 Service Mesh的背景 443
13.3 Service Mesh介绍 444
13.3.1 Service Mesh架构 444
13.3.2 Service Mesh能做什么 445
13.4 Service Mesh的价值 446
13.5 Service Mesh现状 447
13.6 Service Mesh存在的问题 448
13.7 Istio详解 449
13.7.1 Istio架构 449
13.7.2 数据平面 450
13.7.3 控制平面 455
13.7.4 Isito案例 458
13.8 Service Mesh展望 461
第14章 微服务监控实战 463
14.1 APM原理与应用 464
14.1.1 什么是APM 464
14.1.2 APM监控点 464
14.1.3 APM深入解析 464
14.2 Prometheus监控系统介绍 492
14.2.1 Prometheus的主要特点 493
14.2.2 Prometheus的架构及组件介绍 493
14.2.3 Prometheus的安装 494
14.2.4 使用Prometheus对MySQL进行监控 498
14.2.5 Prometheus的告警机制 501
经历了系统从单体架构到ESB企业总线架构,再到全面的微服务化架构的整个改造过程,深知微服务看似美好,但在企业中落地实施其实是一件很困难的事情,本书不仅从理论高度上阐述了微服务架构,也有丰富的可操作的实践案例,涉及服务划分、框架选型、服务治理,尤其是当前流行的服务网格,恰如我们在微服务架构改造过程的真实写照,相信大家也会从本书中获得微服务佳实践的灵感和方向。
——王明华(北京多来点信息技术有限公司CTO)
分而治之、高内聚、松耦合等是软件开发领域的高频词汇,现阶段,代表这类思路的热门架构方法非微服务莫属。恰如武术中的“见招拆招”,把各种变招加以拆解和演练,才能理解招式,若干招式组成套路,再结合时间、空间、身体结构,灵活运用,终做到“拳无定势”。 本书帮你拆解微服务奥秘,从实战角度带你领略目前构建微服务的几种主要工具,结合案例,细细道来,值得开发人员学习。
——曹中胜(海康威视开发总监)
本书围绕微服务架构高可用方面进行深度剖析,从实战角度对微服务相关技术进行讲解,教会我们如何轻松搭建可伸缩的微服务架构,以及所需要的基础知识和技能,对一线架构师的工作有着非常大的指导意义。作者程超对微服务架构理解透彻,功力深厚,强烈向各位技术同行们推荐这本书!
——黄勇(《架构探险》作者)
本书从微服务和领域驱动开发的角度阐述高可用和可伸缩架构,知识点覆盖全面。书籍由多名一线互联网资深人员联合出品,体现了现代技术书籍的合作共赢的模式。各位作者取长补短,将好的内容呈现至读者面前。在架构类的书层出不穷的当今,本书特点鲜明,是我眼中的优秀书籍,推荐读者品读。
——张亮(京东数科数据研发负责人,Apache ShardingSphere发起人& PPMC,
《未来架构——从服务化到云原生》作者)
“微服务”早已成为广大“码农”们的聊天必备佳品,可每每深入“微服务架构在具体实践中是怎样实施的?微服务架构在实施过程中存在怎样的困难和挑战?服务以什么原则拆分?拆分成什么样的颗粒度才算微?如何选型?”等一类的话题时,大家往往会三缄其口或乏善可陈。作者将自身多年的一线项目实践经验以文字形式将微服务的原理到项目实践应用深入浅出地完整呈现出来,同时通过案例对微服务架构实施过程中存在问题及解决方法进行了总结,对于想快速学习、应用微服务架构的读者来说是不可多得之作。
——曾波(波姐,鹏博士电信传媒集团OTT业务技术负责人)
微服务(MicroServices)定义较早见于Martin Fowler的著作和博客中,但在此之前,有几家公司早已开始了微服务的实践探索,并建立了具备相当规模和影响力的产品,例如,阿里巴巴开源的Dubbo。而秦金卫正是在这一阶段任职于阿里巴巴,从事微服务相关的研发工作。近几年,微服务领域的基础软件层出不穷,由开源社区或一些大公司主导的方案都逐渐成熟,然而,却也给微服务方案的选型带来一些不便。本书结合常见的微服务产品,在服务研发、性能优化、监控、管理甚至遗留系统改造方面都做了全面的介绍,非常值得一读。
——宓学强(陌陌前技术主管,淘宝微服务框架负责人)
微服务架构对大型分布式后端的改造和优化非常有帮助,但是它并不容易实现,搞不好就会事倍功半。本书理论与实践相结合,介绍了时下流行的Dubbo、Spring Cloud、容器化等技术,以及实践经验,对于想了解微服务技术的你是一个不错的选择。
——付磊(《Redis开发与运维》作者)
微服务这两年的热度持续不减,支持这种理念的中间件、开发框架等产品也不断迭代演进,我们可以运用的武器越来越多,但是这也使得技术人员在学习与选择上增加了不少的难度。本书基于实战,从架构的本质,微服务设计的原则到各环节重要技术点的分析等环节做了详细的思路讲解。其中也涵盖了目前流行的一些框架与产品,紧跟时代的步伐,所以我推荐想要深入了解微服务架构全貌的读者阅读此书。
——翟永超(公众号“程序猿DD”、《Spring Cloud微服务实战》作者)
很高兴看到《高可用可伸缩微服务架构》一书问世,作者老师们是社区挚友,多年以来致力于技术架构研究与落地,本书集合了技术大咖精华,结合业界佳实践,展示微服务架构精华,是技术架构师们不可或缺的工具书。
——王友强(中生代技术社区发起人)
微服务架构时下不断升温,如何针对自己当前业务场景进行微服务架构改造变得迫在眉睫,若同时还要兼顾高可用性、可伸缩性,这就要求架构师们具备庞大的技术体系,且不说容器化、DevOps、微服务监控和网关,光是核心的服务治理学习曲线就异常陡峭,这本书无疑如久旱甘霖,值得大家细细品读。
——兰小伟(《Solr木又威指南》作者)
本书深入浅出地讲解了微服务架构的理论与设计方法,并聚焦高可用和可伸缩这两大特性,详细分析了实现这两大特性需要关注的方向,包括高可用、高并发、分布式事务等。而且介绍和分析了微服务实践中使用的一系列基础组件,包括远程过程调用、网关、服务编排等。本书还通过具体的业务场景——支付场景来介绍如何在具体业务中实践高可用、可伸缩的微服务架构。非常值得阅读。
——韦韬晟(Apache Dubbo Committer,某互联网金融公司架构师)
本书系统解答了IT企业在服务演进主线过程中,在微服务化技术升级和服务迁移过程中的一些核心节点的关键痛点问题。终让服务演进成基于领域建模,高可用、可伸缩的微服务架构,从而在技术层面解决当前一些大型企业和一些独角兽企业遇到的服务化进程推进之痛,强烈建议大家阅读学习。
——徐凌云(新华网在线教育平台技术负责人,京东云网关研发负责人)
微服务架构对于金融行业从“稳态”到“敏态”的数字化转型意义非凡,极大提升业务系统的可用性、扩展性和应变能力。作者基于一线实战项目,深入浅出介绍微服务架构的各种技术细节。此刻此书,恰逢甘霖,给大家提供了一个学习微服务的捷径。
——胡晓磊(华为金融行业解决方案专家)
想知道怎样建立起微服务架构的完整思维吗?我觉得你应该看看这本书。它勾勒出微服务架构的编程思想和原理,介绍了微服务架构实例,让我们对微服务架构的认识变得立体、系统起来。并且深入浅出、通俗易懂,既具有精炼的微服务架构之道,又包含精彩具象的实践代码。不论初学编程的菜鸟,还是经验丰富的大牛,都值得一读。
——周智勇(融贯电商高级研发总监)
本书阶梯指引读者深入微服务框架,满满的都是干货,从架构发展历程引入微服务架构,通过与近炙热的领域驱动设计(DDD)结合碰撞出“感情火花”把架构设计讲得通俗易懂,加上各个框架实现原理的深入解读,让读者无论对框架还是微服务架构都有了更深刻的理解,再结合实际项目的实战部分,让微服务架构更加清晰地呈现在脑海里。是一本通俗易懂的微服务架构工具书,非常值得拥有。
——杨进京(美团金融技术专家)
本书覆盖了微服务的方方面面——微服务理论、拆分依据、开发框架、稳定性保障、分布式事务、监控、微服务编排、重构乃至性能优化,甚至目前火热的“Service Mesh”均有覆盖。很难想象一本书竟然能介绍这么庞大的技术体系,而且还能无缝地承接。阅读本书,能让您对微服务的完整生态有一个相对完整的认识,对于想快速了解并应用微服务构建系统的读者来说是一部不可多得之作。
——周立(《Spring Cloud与Docker微服务架构实战》作者)
本书从微服务架构概念开始,指出微服务的业务领域模型设计。重点讲了微服务设计的重点和痛点:性能优化、监控、一致性、可用性等。既有理论依据、设计心得,又有工程实施方案;既有应用框架源码分析,又有自动化运维工具介绍。各位作者都是在金融和电商等行业一线出来的资深人员,内容深入浅出,是讲述微服务的一本不可多得的好书。
——王欣(Apache Dubbo PPMC)
时至今日,无论大型互联网公司还是创业型公司,大家越来越多地选择微服务架构。众所周知,实现微服务架构是非常困难的,本书从理论到实践阐述了如何搭建高可用可伸缩的微服务系统。这本书不单单介绍常用的 Apache Dubbo、Spring Cloud 等框架的使用,更重要的是告诉读者使用微服务架构所遇到的常见问题及解决方案,是一本诚意十足和干货满满的书。
——沈哲(《RxJava 2.x 实战》作者,爱回收创新业务部技术专家)
几位熟悉的朋友合著的这本书我觉得担得起两个字“干货”,既有Dubbo、Spring Cloud,还有近讨论比较多的Service Mesh,关注案例的朋友重点看一下支付平台、遗留系统改造等章节。赠人玫瑰、手有余香,感谢诸位为微服务原创图书再添佳作。如果说遗憾的话,就是读完意犹未尽,期待续篇。
——于君泽(《深入分布式缓存》联合作者)
我和本书作者程超在多年前相识于技术中,他的踏实、认真、对技术的孜孜不倦的精神给我留下了深刻的印象,我们惺惺相惜、相见恨晚。微服务架构是这些年非常火的名词,不论是阿里等巨型互联网公司还是中小型企业,微服务均承载了大量的商业系统。本书紧密围绕微服务架构,通过DDD、Dubbo、Spring Cloud、网关、监控、稳定性等维度全方位地展示了如何将微服务架构做到高可用、可伸缩。本书内容丰富,对于体系化的思考和认知微服务系统的架构,有着非常重要的参考价值。
——朱政科(《HikariCP实战》作者)
本书涉及微服务架构的众多方面,且每个章节都很『干』。虽说是关于微服务,但书中所讲的概念和模式,绝不仅仅是针对微服务,不管是经验丰富的程序员,还是初出茅庐的新手,都能在本书中获得所需的知识。
——泽彬(阿里巴巴技术专家)