猜你喜欢
微服务架构深度解析:原理、实践与进阶(博文视点出品)

微服务架构深度解析:原理、实践与进阶(博文视点出品)

书籍作者:王佩华 ISBN:9787121412387
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:6223
创建日期:2021-10-07 发布日期:2021-10-07
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

在当今的数字化经济时代,微服务架构已经成为公司业务构建的主流架构模式,代表了未来的技术发展趋势,同时微服务也成为开发者的必备技能。

本书从微服务架构的设计理念和方法论切入,从不同角度全面介绍微服务特性、使用场景、组织流程、构建交互、部署交付等软件工程各个关键环节和核心要素,既包含了具体微服务技术的源码解读、原理分析,也加入了作者在电信、金融领域积累的真实案例和实践经验。

全书分为原理篇、实践篇、进阶篇。原理篇涵盖微服务的概念、采用前提、领域驱动设计、DevOps;实践篇对Spring Boot、Spring Cloud治理框架、系统集成、微服务数据架构、微服务交付、微服务的监控等重要技术话题展开深入讲解;进阶篇主要介绍函数式编程及响应式微服务架构、Kubernetes、云原生架构生态。

本书不仅适合初学者深入理解微服务架构,也可以作为团队管理者或者架构师进阶微服务架构的技术参考手册。


作者简介

王佩华


毕业于天津理工大学,目前就职于京东,任架构师,从事多年金融及电信行业分布式系统架构的设计及研发管理工作。


多项微服务领域专利的发明人,热衷于参与开源社区并主导了公司微服务项目的开源和推广,擅长通信协议设计、分布式中间件设计、高并发系统架构设计及云原生架构等。

编辑推荐
适读人群 :具备基础软件开发经验的开发人员及想要了解微服务架构的IT从业人士

★ 十多年微服务架构一线实战摸爬滚打快速成长经验分享

★ 涵盖绝大部分微服务架构知识,内容充实、语言通俗

★ 从分布式到微服务,从Spring Boot到Spring Cloud各组件,

从Docker到Kubernetes,从领域驱动设计到响应式编程和云原生

★ 本书将信息梳理得井井有条,是提升学习效率的好途径

★ 还难能可贵地结合了作者在实际业务中的微服务落地实践

★ 本书是国内微服务方面少有的能够写这么详细的图书

★ 可以帮助微服务相关人员构建知行合一的能力,

对设计开发分布式应用系统有很好的指导作用,

也是技术管理者技术选型的参考书

互联网行业的工程师就好比运动员,要想在竞技场上获胜,需要在训练场里长期刻苦地练习技巧,想要成为一个不被时代抛弃的技术人,就需要不断地更新迭代自己的知识体系。加油,读者们,共勉!


前言

当前,微服务架构在国内正处于蓬勃发展的阶段,无论是大型互联网公司还是传统的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工作原理、微服务与云原生生态的技术融合演进、微服务未来的技术发展趋势。

由于我在编写本书的同时需要兼顾工作,时间和精力有限,书中难免有不足之处,恳请广大读者批评指正。

致谢

首先感谢工作中的各位同事,感谢生活中的朋友,感谢宜信公司的高蕾涵同学,感谢电子工业出版社董英老师的鼓励和帮助,因为你们我才有动力完成这本书。最后,谨以此书献给我的妻子和家人,感谢你们对我工作的大力支持!

王佩华


目录

原理篇

第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 总结


短评

干货满满,微服务理论结合实践,SpringBoot,Spring Cloud主要技术栈从源码到落地开发,全面而且深入。进阶篇中的函数式编程还有响应微服务框架、容器K8S技术是未来微服务发展方向,讲解非常详细,非常好。

2021-06-27 08:14:07

产品特色