描述
开 本: 128开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121412387丛书名: 深入理解精品
★ 十多年微服务架构一线实战摸爬滚打快速成长经验分享
★ 涵盖绝大部分微服务架构知识,内容充实、语言通俗
★ 从分布式到微服务,从Spring Boot到Spring Cloud各组件,
从Docker到Kubernetes,从领域驱动设计到响应式编程和云原生
★ 本书将信息梳理得井井有条,是提升学习效率的好途径
★ 还难能可贵地结合了作者在实际业务中的微服务落地实践
★ 本书是国内微服务方面少有的能够写这么详细的图书
★ 可以帮助微服务相关人员构建知行合一的能力,
对设计开发分布式应用系统有很好的指导作用,
也是技术管理者技术选型的参考书
互联网行业的工程师就好比运动员,要想在竞技场上获胜,需要在训练场里长期刻苦地练习技巧,想要成为一个不被时代抛弃的技术人,就需要不断地更新迭代自己的知识体系。加油,读者们,共勉!
在当今的数字化经济时代,微服务架构已经成为公司业务构建的主流架构模式,代表了未来的技术发展趋势,同时微服务也成为开发者的技能。
《微服务架构深度解析:原理、实践与进阶》从微服务架构的设计理念和方法论切入,从不同角度全面介绍微服务特性、使用场景、组织流程、构建交互、部署交付等软件工程各个关键环节和核心要素,既包含了具体微服务技术的源码解读、原理分析,也加入了作者在电信、金融领域积累的真实案例和实践经验。全书分为原理篇、实践篇、进阶篇。原理篇涵盖微服务的概念、采用前提、领域驱动设计、DevOps;实践篇对Spring Boot、Spring Cloud 治理框架、系统集成、微服务数据架构、微服务交付、微服务的监控等重要技术话题展开深入讲解;进阶篇主要介绍函数式编程及响应式微服务架构、Kubernetes、云原生架构生态。
《微服务架构深度解析:原理、实践与进阶》不仅适合初学者深入理解微服务架构,也可以作为团队管理者或者架构师进阶微服务架构的技术参考手册。
原理篇
第1章 微服务概述
1.1 微服务架构介绍
1.1.1 背景介绍
1.1.2 微服务的定义
1.1.3 微服务与云原生
1.2 微服务主要特性
1.2.1 粒度更细的服务
1.2.2 围绕业务划分团队
1.2.3 技术多样性
1.2.4 去中心化
1.2.5 自动化运维
1.2.6 快速演进
1.3 架构设计哲学
1.3.1 小即是美
1.3.2 做好一件事
1.3.3 快速建立原型
1.3.4 软件的复利效应
1.3.5 可移植性优先
1.4 小结
第2章 微服务的采用前提
2.1 微服务使用场景
2.1.1 项目复杂度
2.1.2 团队规模
2.1.3 变更频率
2.1.4 项目类型
2.1.5 遗留系统迁移
2.2 技术与理念
2.2.1 面向服务
2.2.2 底座技术
2.2.3 架构技术
2.2.4 服务监控与治理
2.2.5 容器和自动化技术
2.2.6 云原生12要素
2.3 康威定律
2.3.1 协作问题
2.3.2 沟通效率问题
2.3.3 组织的演进
2.4 流程管理
2.4.1 敏捷方法论
2.4.2 DevOps转型
2.4.3 自动化管理工具
2.5 小结
第3章 微服务构建
3.1 领域驱动设计
3.1.1 领域驱动设计概述
3.1.2 专注问题域
3.1.3 服务的拆分
3.1.4 界限上下文
3.1.5 领域建模
3.1.6 架构设计
3.2 微服务化改造
3.2.1 技术债务
3.2.2 微服务化改造时机
3.2.3 单体架构的改造模式
3.3 微服务构建进阶
3.3.1 软件构建
3.3.2 微服务构建实践
3.3.3 微服务架构反模式
3.4 小结
实践篇
第4章 脚手架
4.1 脚手架介绍
4.1.1 什么是脚手架
4.1.2 为什么需要脚手架
4.1.3 不要重新造轮子
4.1.4 常用脚手架
4.2 Spring Boot启动
4.2.1 Spring Boot概述
4.2.2 Spring Boot快速搭建
4.2.3 @SpringBootApplication注解详解
4.2.4 Spring Boot启动流程进阶
4.2.5 Spring Boot自动装配机制
4.2.6 Spring Boot功能扩展点详解
4.3 Spring Boot Starter技术
4.3.1 Spring Boot Starter概述
4.3.2 Spring Boot常用开箱即用Starter
4.3.3 Spring Boot生产就绪与环境配置
4.3.4 Spring Boot安全管理
4.3.5 Spring Boot实现自定义Starter
4.4 Spring Boot Web容器
4.4.1 Spring Boot Web容器配置
4.4.2 Spring Boot嵌入式Web容器原理
4.4.3 Spring Boot的ClassLoader加载机制
4.5 小结
第5章 关键技术
5.1 服务注册与发现
5.1.1 服务注册与发现原理
5.1.2 微服务注册中心技术选型
5.1.3 Spring Cloud Eureka
5.1.4 Eureka架构与设计原理
5.1.5 Eureka缓存机制
5.1.6 Eureka定制化开发
5.2 服务配置中心
5.2.1 服务配置中心管理
5.2.2 Spring Cloud Config
5.2.3 Config Server配置详解
5.2.4 Config Server定制化开发
5.3 微服务网关
5.3.1 微服务网关模式
5.3.2 网关的主要功能
5.3.3 网关的技术选型
5.3.4 Spring Cloud Zuul网关
5.3.5 Zuul的主要工作原理
5.3.6 Zuul的插件机制及定制化开发
5.3.7 Zuul的动态路由
5.3.8 Zuul Filter扩展功能实现
5.3.9 Zuul源码解析
5.4 负载均衡
5.4.1 负载均衡机制
5.4.2 四层与七层负载均衡
5.4.3 负载均衡算法
5.4.4 Spring Cloud Ribbon
5.4.5 Ribbon的核心工作原理
5.4.6 Ribbon源码解析
5.5 容错与隔离
5.5.1 隔离机制
5.5.2 微服务的风险
5.5.3 降级保护
5.5.4 限流保护
5.5.5 熔断保护
5.5.6 超时与重试
5.5.7 Spring Cloud Hystrix容错框架
5.5.8 Hystrix的核心工作原理
5.5.9 Hystrix源码解析
5.6 小结
第6章 系统集成
6.1 服务集成交互技术
6.1.1 网络协议
6.1.2 Linux I/O模式
6.1.3 序列化方式
6.2 REST服务集成
6.2.1 REST API
6.2.2 Swagger接口文档规范
6.2.3 JAX-RS提供REST服务
6.2.4 Feign实现REST调用
6.3 RPC远程过程调用
6.3.1 RPC框架概述
6.3.2 主流RPC通信框架
6.3.3 Dubbo架构进阶
6.3.4 Spring Cloud集成Dubbo
6.3.5 Spring Cloud集成gRPC
6.4 MOM异步通信
6.4.1 消息中间件概述
6.4.2 消息中间件的使用场景
6.4.3 常用消息中间件
6.4.4 RabbitMQ消息中间件
6.4.5 Kafka消息中间件
6.4.6 Spring Cloud Stream概述
6.4.7 Stream源码解析
6.4.8 Stream应用进阶
6.5 小结
第7章 微服务数据架构
7.1 数据分类及存储特性
7.1.1 关系数据库概述
7.1.2 NoSQL数据存储
7.1.3 Spring Data
7.1.4 使用spring-boot-starter-jdbc访问MySQL
7.1.5 Spring ORM框架访问数据库
7.1.6 Spring Data与NoSQL的集成
7.2 事务管理理论
7.2.1 事务管理概述
7.2.2 ACID理论
7.2.3 一致性理论
7.2.4 CAP理论
7.2.5 BASE理论
7.3 微服务架构的数据一致性
7.3.1 解决方案概览
7.3.2 两阶段提交模式
7.3.3 TCC补偿模式
7.3.4 Saga长事务模式
7.3.5 可靠消息模式
7.4 小结
第8章 微服务交付
8.1 软件交付演进
8.1.1 软件过程模型
8.1.2 交付演进历程进阶
8.2 微服务如何持续集成交付
8.2.1 配置管理概述
8.2.2 持续集成概述
8.2.3 持续集成Pipeline
8.2.4 持续交付概述
8.2.5 持续交付Pipeline
8.3 基于容器的交付
8.3.1 Docker概述
8.3.2 Docker的原理
8.3.3 Docker构建部署过程
8.3.4 Docker Compose编排服务
8.3.5 Maven插件构建Docker镜像
8.4 小结
第9章 服务监控治理
9.1 监控系统概述
9.1.1 监控系统原理及分类
9.1.2 监控分类
9.1.3 监控关注的对象
9.2 指标型数据监控
9.2.1 指标采集概述
9.2.2 JavaAgent技术
9.2.3 Javaassist技术
9.2.4 Spring Boot Admin监控详解
9.2.5 Spring Boot集成Prometheus
9.3 日志监控方案
9.3.1 日志采集方案
9.3.2 ELK日志的解决方案
9.3.3 Spring Boot的日志解决方案
9.4 服务调用链技术
9.4.1 APM与调用链技术
9.4.2 Dapper与分布式跟踪原理
9.4.3 Sleuth与Zipkin技术
9.4.4 SkyWalking技术
9.5 小结
进阶篇
第10章 响应式微服务架构
10.1 响应式编程
10.1.1 响应式编程的动机
10.1.2 响应式宣言
10.1.3 响应式编程详解
10.1.4 编程范式
10.2 响应式技术框架
10.2.1 响应式编程规范
10.2.2 Java Flow API
10.2.3 RxJava响应式框架
10.2.4 Reactor响应式框架
10.2.5 Vert.X响应式编程
10.2.6 Spring Boot 2响应式编程
10.3 Spring WebFlux框架
10.3.1 Spring WebFlux概述
10.3.2 WebFlux服务器开发
10.3.3 WebClient开发
10.3.4 服务端推送事件
10.3.5 Spring WebFlux的优势与局限
10.4 Spring Cloud Gateway
10.4.1 Spring Cloud Gateway概述
10.4.2 Spring Cloud Gateway的工作原理
10.4.3 Spring Cloud Gateway的动态路由
10.4.4 Spring Cloud Gateway源码解析
10.5 小结
第11章 Kubernetes容器管理
11.1 Kubernetes的基础
11.1.1 Kubernetes基本概述
11.1.2 Kubernetes的核心组件
11.2 Kubernetes的设计理念
11.2.1 Kubernetes的设计原则
11.2.2 Kubernetes与微服务
11.2.3 Kubernetes与DevOps
11.3 Spring Cloud与Kubernetes的生态融合
11.3.1 Spring Cloud与Kubernetes各自的优劣势
11.3.2 Spring Cloud与Kubernetes的融合
11.3.3 Spring Cloud Kubernetes项目
11.4 小结
第12章 微服务发展趋势
12.1 云原生应用架构
12.1.1 云原生应用架构进阶
12.1.2 Java的云原生应用优化
12.2 Service Mesh技术
12.2.1 微服务的SideCar模式
12.2.2 Service Mesh的技术前景
12.3 Serverless技术
12.3.1 Serverless的模式
12.3.2 Serverless的技术前景
12.4 总结
当前,微服务架构在国内正处于蓬勃发展的阶段,无论是大型互联网公司还是传统的IT企业,纷纷采用微服务架构构建系统。在过去几年里,DevOps、云原生、面向演进式架构等理念已经深入人心,围绕微服务生态也出现了大量的组件、框架、工具,这很好地支撑了海量的数据增长和用户业务需求的快速变化。本书将从微服务理论开始介绍,结合作者多年的工作经验,深入讲解分布式系统和微服务架构,从而帮助技术人员切实掌握微服务架构技术。
缘起
“物之所至者,志亦至焉;志之所至者,礼亦至焉;礼之所至者,乐亦至焉;乐之所至者,哀亦至焉。”
—楚简《民之父母》
2008年,在一次软件架构设计高端课程中,有人将中国传统的“五至”与软件工程做了形象的类比,提到从事软件开发工作的工程师要“以物为本”。这次课程学习让我印象深刻,也让刚刚从事软件开发工作的我次对“架构”这个词有了直观而深刻的认识,这次课程学习成了我后来的架构师之路的灯塔。
在“五至”中,对“物、志、礼”进行了明确的排序:先有物,而后有志,后有礼,所以重点是“物”。我们把这种思想对应到软件工程的项目实践中,可以这样理解:物就是终的交付物,即软件产品;志对应项目的利益相关人;而礼则对应项目的过程管理。这样的排序不无道理,在项目实践过程中,应该以终的交付物为中心,所以我们必须重视架构设计,只有经过完善的架构设计,才能呈现好的软件产品。在项目的初期就要做好架构设计,达到“物之所至”;协调项目的利益相关方,达成共识,达到“志亦至焉”;在项目的进行过程中,做好项目管理和流程监控,达到“礼亦至焉”。
由上可知,软件架构是决定软件工程成败的首要因素,架构之道就是面对不同的问题域找到的技术实现方案。在软件工程中,技术架构同时受到组织、流程管理的影响,然而软件产品终能否成功仍然需要“以物为本”。
与时俱进
纵观计算机产业,过去的半个世纪,遵从摩尔定律的规律,计算力一直保持着大跨度的提高。1956年,英特尔创始人戈登·摩尔提出,集成电路的集成度每两年会翻一番;而后这个周期缩短到18个月,微处理器的性能每隔18个月提高1倍。然而,硅芯片已逼近物理和经济成本上的极限,许多专业人士纷纷预测,摩尔定律在不久的将来会失效。界时,我们会面临CPU性能提升放缓,计算力增长势微的局面。同时云计算、大数据、物联网、边缘计算、人工智能等技术的进一步成熟所产生的海量数据,却加大了对后端数据中心计算力的需求。
数字化经济的快速发展和云计算给底层IT系统带来的巨大变革正是当下微服务架构快速发展的时代背景。Gartner预计,从2018年到2022年,PaaS将成为未来的主流平台交付模式,而PaaS平台需要更加灵活的云原生应用架构做技术支撑,微服务架构正是云原生架构落地的关键技术。
正所谓“大道至简”,微服务本身是一个化繁为简的过程,它采用细粒度的分布式架构模式,通过系统化的思考方式,将纷繁复杂的业务逻辑映射到底层技术。在软件构建方面,微服务倾向于使用面向服务和领域驱动设计(Domain Driven Design)的方法论,将现实中的问题投影到对象的世界。“抽象、分解、扩展、复用”是常见的微服务构建系统的内功心法。然而软件开发没有“银弹”,架构设计还要从使用、性能、成本、效率、团队、收益等多方面权衡(Trade-off),进行综合考虑。
微服务架构的目标是,将业务与技术的复杂度进行分离,使业务更专注于实现对客户的价值交付,而将非功能需求封装在平台或者底层SDK中。目前在企业的应用开发中,Spring Boot和Spring Cloud平台作为微服务的技术开发框架,依然占据主流地位;而伴随容器和Kubernetes平台的崛起,结合自动化和DevOps持续交付流程,微服务可以显著提升应用交付的效率和产品的质量,此外。微服务还有如下优势:
l 更加快速地响应业务需求。
l 可提升应用的开发效率。
l 可满足对云原生的支持。
l 可满足系统的弹性、扩展性的需求。
l 容错性及生产就绪特性可保证服务的高可用。
l 有标准化的服务实现和交付方式。
l 基于“不可变基础设施”模式,可以减少环境因素的影响。
l 可提升系统性能及资源利用率。
传统粗放式的开发和运维方式将逐渐被取代,而更加高效、智能化、自动化的开发和运维方式将使每个人从中获益。当前,微服务和云原生应用架构还在快速演进之中,其间充满了机遇和挑战。作为软件从业人员,面对技术的更新迭代,我们唯有整装待发,才能与时俱进。
关于本书
本书的原理篇将深入讲解当前微服务架构的理念和方法论;实践篇主要讲解Spring Boot和Spring Cloud微服务框架体系;进阶篇关注微服务发展的技术趋势。本书既涵盖了我多年在传统电信企业中积累的分布式架构设计经验,也涵盖了互联网金融行业的前沿技术实践;本书既有我在大型项目中的经历分享和痛点复盘,也有开源软件的案例介绍,以及当下微服务技术趋势的深度剖析和预测。在本书的代码案例中,使用的是Spring Boot 1.5.11,在进阶篇中使用了Spring Boot 2.x,这两种版本在使用和配置方面有诸多不同,并且其中一些功能仅支持JDK1.8及以上版本,读者在阅读中需要注意。
内容结构
本书在结构上从3个层次深入解读微服务架构,希望读者能够循序渐进地深入了解微服务架构的理论及技术实践;当然,具备一定微服务架构经验的工程师也可以根据需要选择性地阅读。
l 原理篇
原理篇主要讲解微服务的概念、微服务与云原生的关系、微服务的主要特性及设计哲学、采用微服务的前提、微服务构建的理论基础及基本原则,以及领域驱动设计和微服务构建方法论、DevOps方法论等相关知识。
l 实践篇
实践篇主要对微服务架构落地的脚手架、关键技术、系统集成、数据架构、持续交付、服务治理监控等重要技术话题展开讲解。另外,针对初学者对Spring Boot和Spring Cloud体系“入门容易、精通难”的问题,实践篇中结合框架源码详细解构了Spring Boot的框架底层运行机制,并具体介绍了Spring Cloud核心治理组件及其工作原理,还会讲解如何基于开源软件做扩展性开发。
l 进阶篇
进阶篇主要介绍函数式编程、响应式微服务架构设计原理、常用的响应式编程框架、Spring Boot 2新特性,讲解Kubernetes工作原理、微服务与云原生生态的技术融合演进、微服务未来的技术发展趋势。
由于我在编写本书的同时需要兼顾工作,时间和精力有限,书中难免有不足之处,恳请广大读者批评指正。
致谢
首先感谢工作中的各位同事,感谢生活中的朋友,感谢宜信公司的高蕾涵同学,感谢电子工业出版社董英老师的鼓励和帮助,因为你们我才有动力完成这本书。后,谨以此书献给我的妻子和家人,感谢你们对我工作的大力支持!
王佩华
微服务化是近年来系统架构领域的一场重要变革,本书作者不仅从理论上带大家理解微服务,还难能可贵地结合了自己在实际业务中的微服务落地实践。
相信这些凝结了作者智慧的宝贵经验,会让有志于此领域的读者受益良多。
—祁宁 SegmentFault社区CTO,Typecho作者
微服务经过了长足的发展,在每个阶段所产生的信息都很多。在信息爆炸的当今,找到一本将信息梳理得井井有条的好书,是提升学习效率的途径。
本书层次分明,分为原理篇、实践篇和进阶篇,适用于广泛的人群。理论篇对新手入门非常友好,实践篇非常适合在工作中解决实际问题的开发者,进阶篇则面向响应式编程和云原生架构,是高手的技能。
—张亮 Apache Member,ShardingSphere PMC Chair
本书讲解了微服务架构落地过程中的领域驱动设计、服务注册与发现、负载均衡、限流熔断、网关和微服务监控等实战技巧,并从Service Mesh、Serverless、云原生等视角讲解了未来微服务架构的走向。本书值得一读,读者必定能从中取长补短,构建或补充自己的微服务架构知识体系。
—许进 《重新定义Spring Cloud实战》作者,
Spring Cloud中国社区(spring cloud.cn)创始人
本书结构清晰,从原理、实践、进阶三个方面对微服务架构进行深度解析。涵盖内容丰富,从领域驱动设计到微服务治理,从Spring Cloud生态到响应式微服务架构体系建设。如果你正在进行Java微服务架构设计,或者正打算快速学习基于Spring Cloud的微服务架构,本书将为你节省许多宝贵时间。
—黄勇 《架构探险》作者,阿里巴巴前高级架构师
佩华的新书内容覆盖面非常广。从分布式系统到微服务架构,从Spring Boot到Spring Cloud的各种组件,从Docker到Kubernetes,从领域驱动设计到响应式编程和云原生开发,都有作者很多独到的见解。致力于微服务开发的工程师从中汲取并归纳为自己的知识,真是再好不过了。
—梁鑫 SIA开源项目创始人,互联网金融公司高级架构师
本书深入浅出地讲解了微服务的前生今世,包含了丰富的实践经验,对微服务架构进行了全面的解构,无论是广度还是深度都颇为经典,个人觉得踩坑复盘经验为珍贵,也是国内微服务方面少有的能够写这么详细的图书。
—耿航 中国电子技术标准化研究院木兰开源社区运营负责人
本书对微服务的理论和实践,都进行了由浅入深的剖析,同时从技术体系的纵深出发,对微服务架构的技术栈进行逐一拆解,指导实践落地。对于初识微服务的同学,可以较快地理解微服务,包括理念、概念、架构思想、边界等,在结合实践的同时快速上手微服务架构;对于资深的微服务玩家,这是一个完整的、体系化的复盘和总结,对于微服务架构的利与弊、架构处理的平衡都进行了详细的分解与剖析,有助于推动读者对架构演进的思考。
—张真 百信银行首席架构师
在云原生时代,微服务架构是企业PaaS化演进及中台建设的技能。本书系统性地解析了微服务架构领域相关的理论知识、实践落地经验及技术发展趋势,可以帮助微服务相关人员构建知行合一的能力,对设计开发分布式应用系统有很好的指导作用,也是技术管理者技术选型的参考书。
—向江旭 美的集团IoT技术副总裁兼首席技术官
微服务是当前软件开发的发展趋势,越来越多的系统采用微服务方式构建。作者基于十余年的经验积累,深入浅出地介绍了微服务系统的原理、模式、实践,为我们构建微服务系统提供了非常有价值的指引和参考。我向大家推荐这本书。
—高崇 伦敦证券交易所集团高级技术专家
本书中的内容来源于作者多年的工作积累和实践总结,从理论到实践再到进阶,以全方位递进的方式对微服务的设计和应用进行了解读,能够让大家在日常开发工作中少走弯路,有很强的指导意义。
—王新栋 极客时间《OAuth 2.0 实战》专栏作者,技术专家
评论
还没有评论。