高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh(博文视点出品)pdf下载pdf下载

高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh(博文视点出品)百度网盘pdf下载

作者:
简介:本篇主要提供高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh(博文视点出品)pdf下载
出版社:
出版时间:2019-05
pdf下载价格:9.00¥


预览


内容介绍

产品特色

编辑推荐

适读人群 :不管是刚接触微服务的新手,还是正在尝试借助微服务解放生产力的开发人员或运维人员,甚至是立志于构建高可用可伸缩的微服务体系的技术Leader和架构师,阅读本书,对读者必有裨益。

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和架构师,阅读本书,对读者必有裨益。

作者简介

程超,网名小程故事多,现任某公司高级架构师,超过12年的Java研发经验,8年技术管理和架构经验,熟悉支付和电商领域,擅长微服务生态建设和运维监控,对Dubbo、Spring Cloud和gRPC等微服务框架有深入研究,帮助多家公司进行过微服务建设和改造。合著作品《深入分布式缓存》,阿里云MVP、云栖社区外部专家、Codingfly社区特聘技术专家、CSDN博主专家。


梁桂钊,现任某互联网公司高级开发工程师,参与过内容分发、K12 教育、淘系电商等项目。目前,专注于新零售电商服务的业务摸索和电商服务创新实践。具有Java核心技术、微服务、分布式、高并发等领域一线实战经验,并对新兴技术方向和各种开源框架有浓厚兴趣。公众号「服务端思维」的作者。

秦金卫(KimmKing),现任某公司高级技术总监/Apache Dubbo PPMC,阿里前架构师/某商业银行北京研发中心负责人。关注互联网、电商、金融、支付、区块链等领域,10多年研发管理和架构经验,对于中间件、SOA、微服务,以及各种开源技术非常热衷,活跃于Dubbo、Fastjson、Mule、ActiveMQ等多个开源社区。个人博客http://kimmking.github.io。

方志斌,现任某物联网公司高级研发工程师。目前专注于大型物联网平台架构的设计与开发工作。对于微服务、分布式、集群有一定的研究和实战经验。对Java领域的开源框架有浓厚的兴趣,喜欢深入分析、总结框架源码。SpringForAll社区核心成员,组织多次社区技术专题、问答等活动。


张逸,架构编码实践者,微服务架构设计者,领域驱动设计布道师,大数据平台架构师。著译作包括《软件设计精要与模式》《恰如其分的软件架构》《人件》等。个人微信公众号为「逸言」,个人博客:http://zhangyi.xyz。


杜琪,网名阿杜,现任蚂蚁金服高级研发工程师,2015年6月毕业于南开大学,计算机系统结构硕士。毕业后开始接触分布式业务系统开发,曾在有赞负责用户中心基础服务,对分布式业务系统的稳定性、可靠性有丰富的经验。喜欢研究底层技术,喜欢研究疑难技术问题,例如JVM内存问题排查、GC调优,等等。有对外输出分享的习惯,是公众号javaadu的维护者。


殷琦,网名涤生,现任“美团点评”技术专家,2015年3月毕业于东华大学,软件工程硕士。2015年3月加入“美团点评”基础架构部,开始接触微服务架构,之后一直从事服务框架的研发工作,对微服务架构发展与演进有非常深刻的认识。个人比较喜欢研究并分享新技术,时刻关注并实践微服务架构前沿的技术,如Service Mesh、Serverless 等。

肖冠宇,曾就职于小米、人民网等互联网公司,具有丰富的大数据一线实战经验,专注大数据处理技术及机器学习算法研究。著有《企业大数据处理:Spark、Druid、Flume与Kafka应用实践》《Python3快速入门与实战》等书籍。

精彩书评

经历了系统从单体架构到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实战》作者)

本书涉及微服务架构的众多方面,且每个章节都很『干』。虽说是关于微服务,但书中所讲的概念和模式,绝不仅仅是针对微服务,不管是经验丰富的程序员,还是初出茅庐的新手,都能在本书中获得所需的知识。

——泽彬(阿里巴巴技术专家)

目录

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

前言/序言

  微服务这个概念最早是在2011年5月在意大利威尼斯的一个软件架构会议上讨论并提出的,用于描述一些作为通用架构风格的设计原则。2012年3月在波兰克拉科夫举行的“第33届学位会议”上,ThoughtWorks公司的首席咨询师James Lewis做了题为“Microservices - Java, the Unix Way”的演讲(http://2012.33degree.org/talk/show/67),这次演讲里James讨论了微服务的一些原则和特征,例如单一服务职责、康威定律、自动扩展、DDD等。
  微服务架构则是由Fred George在2012年的一次技术大会上所提出的(http://oredev.org/ oredev2012/2012/sessions/micro-service-architecture.html),在大会的演讲中,他讲解了如何分拆服务,以及如何利用MQ来进行服务间的解耦,这就是最早的微服务架构的雏形。而后由Martin Fowler发扬光大,并且在2014年发表了一篇著名的文章(https://martinfowler.com/articles/ microservices.html),这篇文章深入全面地讲解了什么是微服务架构。随后,微服务架构逐渐成为一种非常流行的架构模式,一大批的技术框架和文章涌现出来,越来越多的公司借鉴和使用微服务架构。
  然而微服务并不能“包治百病”,我们在实施的过程中不能简单地使用某些个微服务框架或组件一蹴而就,而是需要将业务、技术和运维有机地结合起来,配合同步实施,并且在此过程中还需要踩过很多的“坑”才能取得成功。
  本书的每一个章节都是相关领域的专家经过多年的技术积累提炼而成的。秉承以理论为基础,以大量企业实战案例为核心的宗旨。本书深入全面地介绍微服务架构的实施方法,以及在实施过程中所遇到的问题和解决方案,是一本内容翔实、“可落地”的理论与实践相结合的技术书籍。
  不忘初心,方得始终
  在2017年8月份的一次技术大会上,我与电子工业出版社博文视点公司的编辑陈晓猛相识。我们沟通了很久,并且在很多想法上是高度一致的,由此我萌生了想写一本技术书籍的念头。关于书的主题,我考虑了很久,特别是对于自己近几年的工作经验的思考和总结,最终决定以“微服务”作为主题。
  最初我邀请了秦金卫和方志斌作为写作团队的成员。我们三人在创作思路上一拍即合,计划以微服务架构的概念和内容,Dubbo和Spring Cloud的原理和实践,以及我们在工作中的各种思考和最佳实践为主体内容,三人分工协作,创作一本业内前沿的微服务架构书籍。然而写作却是一个漫长的过程,需要的不仅是一腔热血,还需要持之以恒的精神。这个过程中我们三人都因为各自的事情很忙导致写作时停时续,甚至想过放弃,但我们始终没有忘却初心,互相鼓励坚持下去。志斌工作较忙经常出差,以至于我看到他经常在凌晨二三点的时候还在更新文章;金卫一直有很多好的想法,给我们写作提供了很多有用的建议,我们也是经常沟通到半夜。在这个不断有思想火花碰撞的过程中,我们决定增加了一些章节使本书的整体内容更丰富全面、实用性更强。于是我又邀请了梁桂钊、杜琪、张逸、殷琦和肖冠宇五位朋友加入,为本书注入新的能量。桂钊虽然加入较晚,但却非常投入,参与写作了很多章节;杜琪在加入写作之时宝宝还没有降生,现在应该也有半岁了;张逸、殷琦和冠宇在本书快完成之时紧急驰援,高效地完成了各自负责的章节。我们写作团队的成员都不在一个城市,来自祖国各地,但我们为了初心而凝聚在一起,这就是大家的团队精神。
  历时近一年半的书即将出版了,我内心的激动难以言表。除了感谢写作团队,我还要感谢编辑陈晓猛对我的不断鼓励和大力支持,感谢好友王文斌提供了好多有用的建议。我也要感谢家人对我的支持,在这本书出版之际,我的儿子多多刚满三岁,我要感谢儿子,让我“借用”了很多原本陪伴他成长的宝贵时间。
  最后我想说的是,我们团队不全是微服务架构方面的技术专家,但是大家基于共同的对微服务架构技术的热爱和乐于分享知识经验的精神,我们把微服务架构领域的各类知识,以及自己平常的经验和积累做了完整的梳理和总结,凝结为这样一本技术书,作为2019年的一份礼物呈现给大家,欢迎大家共同探讨和交流。
  本书适合的读者
  本书讲解如何通过Dubbo、Spring Cloud、Service Mesh等技术来构建微服务体系,并深入浅出地介绍了微服务架构发展历程、领域驱动设计、稳定性保证的常用手段、分布式事务的一致性方案;本书还通过大量的案例探讨微服务落地方案,例如双活体系建设、分布式监控、微服务编排、百亿流量微服务网关的设计与实现、基于支付场景下的微服务改造等;书籍后半部展示了实现微服务架构的完整蓝图,并让读者了解如何借助微服务来增强和重构现有的遗留系统。无论刚接触微服务的新手,还是正在尝试借助微服务解放生产力的开发人员或运维人员,或者是立志于构建高可用可伸缩的微服务体系的架构师,阅读本书,对读者必有裨益。
  本书内容
  本书共14章,每章的具体内容如下。
  第1章:微服务架构概述(作者秦金卫)。
  本章从软件架构的发展历程讲起,分别对单体架构、SOA架构和微服务架构的演进过程做了深入浅出的讲解,同时深入介绍了微服务架构的特点,希望以宏观的视角为读者打开微服务的大门。
  第2章:微服务领域驱动设计(作者张逸)。
  本章介绍了领域驱动设计是什么,常见的领域架构有哪些,如何将领域驱动应用到微服务中,以及如何使用领域驱动进行合理的服务划分等,帮助读者在正式学习微服务前修炼“内功”。
  第3章:Apache Dubbo框架的原理与实现(作者程超)。
  目前Dubbo已经被阿里巴巴技术团队重新维护并且得到了大力的发展和推广,使用Dubbo可以很好地进行微服务建设,本章较为深入地讲解了Dubbo的使用和技巧,以及通过时源码的深入分析能够让读者对Dubbo的原理实现有一个全面的认识。
  第4章:Spring Boot/Spring Cloud实践(作者方志斌)。
  Spring Boot/Cloud是目前较为流行的微服务框架,本章以大量的实战案例为线索,为读者讲解如何才能使用好Spring Cloud框架,讲解如何避免在使用过程中“踩坑”。
  第5章:微服务稳定性保证的常用手段(作者杜琪)。
  在业务发展越来越快,规模也越来越大的情况下,我们所面临的就是如何在服务越来越多的情况下保证微服务架构的稳定性,本章讲解保障稳定性的常用技巧和手段。
  第6章:微服务下如何保证事务的一致性(作者梁桂钊)。
  本章介绍了从本地事务到分布式事务的演变,深入分析了微服务在强一致性场景和最终一致性场景下的解决方案,探讨了二阶段提交协议、三阶段提交协议、TCC模式、补偿模式、可靠事件模式等。同时,对开源项目的分布式事务进行解读,包括 RocketMQ 和 ServiceComb。
  第7章:百亿流量微服务亿级网关的设计与实现(作者秦金卫)。
  本章从百亿流量交易系统微服务网关(API Gateway)的现状和面临问题出发,阐述微服务架构与 API 网关的关系,理顺流量网关与业务网关的脉络,分享全面的API网关知识与经验。
  第8章:微服务编排(作者程超)。
  本章以Netflix Conductor框架为核心,从框架的使用和原理的角度深入介绍了什么是微服务编排,为微服务执行复杂的业务逻辑提供了一种新的思路。
  第9章:微服务数据抽取与统计(作者肖冠宇)。
  在微服务架构下,服务必将越来越多,在这种情况下进行数据统计和分析将变得非常困难,本章将深入讲解如何从不同服务的数据库中抽取数据到统一的大数据平台中,帮忙使用者更方便地进行数据的统计。
  第10章:微服务双活体系建设(作者程超)。
  在企业发展规模越来越大的情况下,用户对系统的稳定性要求也越来越高,那么单机房部署势必成为发展的瓶颈,本章将以实际案例出发讲解同城双活的建设。
  第11章:基于支付场景下的微服务改造与性能优化(作者程超)。
  本章从实际的案例出发,在具体的支付业务场景下,从一个新项目开始逐步讲解如何利用领域驱动划分服务,如何利用微服务框架进行服务治理,以及项目完成后怎样提升微服务架构的性能。
  第12章:遗留系统的微服务架构改造(作者梁桂钊)。
  本章介绍了遗留系统的微服务架构改造,梳理了代码分层结构的转变,提出一个新的代码分层思路来应对微服务的流行与普及,并深入思考了遗留系统的债券,深入探讨单体系统拆分服务的方法论。同时,对遗留系统的微服务架构改造的解决方案给出9个切实可行的核心实践思路。
  第13章:Service Mesh详解(作者殷琦)。
  随着微服务的持续发展,下一代微服务架构已然出现,本章将深入介绍Service Mesh的发展历程,以及结合具体案例带领读者使用Istio进行具体实践。
  第14章:微服务监控实战(作者程超)。
  本章重点介绍APM的原理,从零开始开发APM监控系统,还深入介绍Prometheus的安装和原理,以及如何使用Prometheus进行监控和预警。
  由于本书写作匆忙,难免有错漏之处,后续可以通过勘误的方式不断优化,欢迎读者多提宝贵意见。
  
  序一
  微服务是软件架构设计领域近年最重要的创新之一,伴随着容器化、Devops和敏捷开发滚滚而来,短短几年从新鲜名词成为互联网行业主流架构理念,满足互联网业务高速发展对系统高可用可伸缩的需求。软件架构设计的概念来自于建筑学,描述了构成系统的代码模块组织形态,是团队协作开发的必要共识。与建筑架构相同,软件架构设计在继承中不断创新,而规模和更新速度远超依赖实体的建筑行业。微服务是对大型互联网系统架构最佳实践的提炼总结,是SOA思想的延伸,并没有统一标准,比如本书中讲解的Dubbo和Spring Cloud,当然还有许多其他的实现方式可供选择,无数业界的同仁们正在代码的世界里构建着自己心中的微服务。
  服务即能力,无论云计算的SaaS、PaaS、IaaS,还是衍生出的各种“*aaS”,都强调输出能力,而非技术——谓之“赋能”。20年来,我见证了系统架构从C/S到云原生一路进化、推陈出新,也曾纠结于对比微服务和SOA的异同,最终则是领悟到一切应用皆服务,与多年来言必称系统的思维定式挥手道别。微服务不会是大型系统架构的终态,新的趋势正在崛起,一切都不是设计出来的,而是在开源时代,凝结在灵光和业务创新之中。涓涓细流,汇成江海,也许更新一代的架构萌芽正在你的指尖敲出。这正是我们所处的行业激动人心之所在,这是我们最好的时代。
  四季有轮转,行业有冷暖,人生有起落,智慧可传承。本书的作者全部来自行业一线,具有相当丰富的微服务实战经验,更难得的是倾囊相授,总结最新案例结集成册,分享给业界同仁。互联网行业竞争激烈,技术日新月异,唯有持续学习成长,方能保持核心竞争力,在职业道路上站得稳走得远。传道授业解惑皆为我师,此行当以同怀报之。
  天行健,君子以自强不息;地势坤,君子以厚德载物。赞几位作者老师,并与诸君共勉!
  史海峰
  (微信公众号“IT民工闲话”作者,贝壳金服小微企业生态CTO)
  
  
  序二
  微服务是近几年流行起来的软件架构风格。回顾历史,从传统的单体应用架构,到面向服务架构SOA,再到今天逐渐被大众接受的微服务架构MSA,本质上来说,都是为了解决随着软件复杂度的上升,如何有效提升开发效率、发布效率的问题。
  同样,这个问题在阿里巴巴电商系统的发展历程中也遇到过。由于业务体量巨大、需求变更频繁,导致淘宝和淘宝商城(天猫的前身)的研发效率变得低下,在这个背景下,2008年10月立项了著名的“五彩石”项目,对电商系统做了系统的拆分,完成了服务化改造。通过这个项目,孕育出了以HSF、Notify 为代表的分布式中间件组件。并且,在随后的十年中,分布式中间件蓬勃发展,从软负载中心Config Server、配置中心Diamond Server,到全链路追踪 EagleEye、限流Sentinel,再到全链路压测体系,可以说,基于分布式中间件构建的整个服务化体系是支撑“双11”GMV从2019年的5000万元到今天惊人的2135亿元的技术基石。正是服务化改造的成功实施和不断演进,为每年万亿流量的洪峰及层出不穷的大促玩法保驾护航了有10个年头。
  当然,“没有银弹”的定律是亘古不变的。微服务架构在提升开发效率、提升系统扩展能力的同时,也带来了诸多复杂性,比如:运维上的开销、跨进程通信联调的问题、分布式系统的学习成本、排查问题的难度,以及测试回归上的诸多问题。所以,在采用微服务架构之前,要对上面提到的这些挑战、自己的业务,以及自己团队的技能集有着很清醒的了解,切勿为了微服务而微服务。即使是在选择了微服务架构之后,也会面临技术栈选型的问题,从国内广泛使用的Apache Dubbo,到国际上的Spring Cloud,JavaEE Micoprofile领域的JBoss Wildfly,再到最近开始提出的Cloud Native MicroServices,选择并成功实施其中的一种技术栈,成为广大架构师们挠头的事情。好在现在出现了一本《高可用可伸缩微服务架构》,从微服务基础介绍起,横向地比较了三种有代表性的微服务架构选型,探讨了微服务架构中后期需要解决的事务、网关、服务编排、高可用等高级话题,并深入分享了实战案例。整本书从基础概念到高级话题,从理论到实践都有涉及,面面俱到,实属架构师案头不可或缺的参考书。
  很荣幸在Apache Dubbo准备从阿帕奇软件基金会毕业并成为顶级项目之际,应本书作者之一,也是Apache Dubbo PPMC之一的秦金卫先生的邀请来为本书作序。在今年Apache Dubbo的规划中,云原生微服务是路线图中的重点。也以此序与诸位读者共勉,期望Apache Dubbo能够成为各位在架构选型中重点考虑的一环。
  罗毅
  (花名北纬,阿里巴巴高级技术专家,Apache Dubbo负责人)