本书通过每章具体的实战案例,来逐步演示Spring Cloud微服务生命周期所涉及的整体技术。内容涵盖构建Spring Cloud微服务体系所必须的绝大部分技术内容,包括微服务工程搭建、微服务网关、熔断限流、分布式任务调度、自动化CI/CD构建、Kubernetes容器化部署、微服务监控系统、分布式链路追踪等。
本书最大的特色是极具实战性,所涉及的章节完全是从作者多年的工作经验中整理出来的真实项目,内容涵盖构建Spring Cloud微服务体系所必须的绝大部分技术内容,包括微服务工程搭建、微服务网关、熔断限流、分布式任务调度、自动化CI/CD构建、Kubernetes容器化部署、微服务监控系统、分布式链路追踪等。而更独一无二的是,上述涉及的微服务技术并不是枯燥的叙述,而是根据每个实战项目的特点从原理到实践手把手式的教学,并且每章的实战项目都可以独立实践,代码的完整性精确到其所在的具体包路径。此外,案例所涉及的系统也具有较强的实用参考性,例如用户系统、SSO单点登录系统、电子围栏系统、钱包系统、支付系统、A/B测试系统等都是目前互联网产品系统中真实的存在,本书的实战案例都有明确的设计方案及代码实现。除此之外,在本书案例的实现过程中,还特别注重编程规范及软件分层架构,通过本书学习的初学者不仅能够快速掌握Spring Cloud微服务技术,还能从中感受到良好地编程思想,从而在潜移默化之中培养良好的编程习惯,提升编程水平。最后,本书所涉及的技术富有一定的前瞻性,特别是最后两章所涉及的Kubernetes容器编排、监控系统及分布式链路追踪等内容都是当前及下一个阶段流行和发展的技术,也是下一代微服务架构Service Mesh所依赖的平台基础。
Spring Cloud微服务体系在国内真正落地是在2017年左右,那时我所在的公司——摩拜单车风头正盛,后端系统也刚完成了从早期单体应用到Spring Cloud微服务架构的转型。在这次大规模的微服务架构实践中,我深刻感受到微服务架构给高速发展中的摩拜单车,在后端架构、系统负载、开发方式、组织架构等方面所带来的好处。
于是,我便有了将这些实践经验通过文章输出的想法,而当时我的同事兼好朋友、现在已经成为公众号知名技术博主的“程序员小灰”在得知这个想法后,便鼓励我开通微信公众号“无敌码农”。此后,我便陆续在公众号上输出了一些关于Spring Cloud微服务的实践文章,而这些内容也得到了出版界老师的关注,这便是这本书写作的由来。
写作过程并非一帆风顺。因为工作繁忙,所以本书的写作从2019年4月整整持续了两年多的时间。技术更新是非常快的,这样的写作时长存在着技术滞后的风险,不过幸好目前Spring Cloud微服务体系依然是主流,虽然新一代微服务架构Service Mesh也在迅猛发展,但短期内并不会完全取代Spring Cloud。
虽然写作过程进展不快,但这也正好有了更多的思考时间,因此书稿内容也都处于持续优化中,根据技术的变化进行同步。所以,本书在技术上不仅不滞后,反而具有一定的前瞻性。
【本书特色】
本书以项目实例的形式来展示Spring Cloud微服务生命周期所涉及的技术,具有以下特点。
(1)精选业界普遍采用的技术方案进行详细介绍。
虽然Spring Cloud微服务的技术生态非常丰富,但在实际应用中,并不是所有技术都是必需的。所以,本书并没有像其他某些Spring Cloud图书那样囫囵式地将各个技术组件都介绍一遍,而是以目前互联网业界普遍采用的技术方案进行详细介绍。
例如,关于注册中心的选择,大部分互联网公司并不会直接采用Eureka,而是会选择性能更高、支持微服务数量规模更大的方案,如Consul或Nacos等。而对于像微服务的分布式链路追踪方案,一般也不会选择Spring Cloud Sleuth,而是选择更流行的SkyWalking方案等。
(2)覆盖Spring Cloud微服务体系的绝大部分内容。
本书覆盖构建Spring Cloud微服务的绝大部分内容——包括微服务工程搭建、微服务网关、熔断限流、分布式任务调度、自动化CI/CD构建、Kubernetes容器化部署、微服务监控系统、分布式链路追踪等。
(3)循序渐进,实战性强。
本书对于微服务技术并不是枯燥地叙述,而是根据每个项目实例的特点,“从原理到实践”手把手地教学,并且每章的实例都可以独立学习。书中实例都提供了完整的源码,且精确到具体的包路径。
(4)实例具有较强的实用参考性。
本书所有实例都是作者从多年的工作实践中整理出来的真实项目,用户系统、SSO授权系统、车辆电子围栏系统、电子钱包系统、支付系统、A/B测试系统等,都是目前互联网业务系统中真实存在的。本书给出了这些系统的详细设计方案,以及具体代码实现。
(5)代码规范,注重编程思想的提炼。
本书实例中,注重编程规范及软件分层架构。通过学习本书,读者不仅能够快速掌握Spring Cloud微服务开发技术,还能感受到良好的编程思想,从而在潜移默化中培养良好的编程习惯,提升编程水平。
(6)技术前瞻,紧跟发展潮流。
本书所涉及的技术具有一定的前瞻性,特别是最后两章所涉及的Kubernetes容器编排、监控系统及分布式链路追踪等内容,都是当前流行及今后会流行的技术,也是下一代微服务架构Service Mesh所依赖的平台基础。
【涉及的技术及版本】
本书所采用的技术及相关版本较新,请读者将相关开发环境设置成与下方所列的配置,或不低于本书所列的配置。
-JDK 1.8。
-Apache Maven 3.6.1。
-Spring Boot 2.1.5.RELEASE。
-Spring Cloud Greenwich.SR1。
-Docker 19.03.5。
-Consul 1.9.1。
-MySQL 5.7。
-Redis 3.2。
-PostgresSQL 10.0。
-PostGIS 2.4。
-Spring Cloud Config Server 2.1.1. RELEASE。
-Spring Cloud Hystrix Dashboard 1.4.7.RELEASE。
-Vue 2.9.6。
-Npm 6.13.4。
-MyBatis Plus 3.3.0。
-Apache Zookeeper 3.7.0-bin。
-Elasticjob-Lite 3.0.0-RC1。
-Elasticjob-Lite-UI 3.0.0-RC1。
-Ubantu Linux 20.04 LTS。
-GitLab 13.2.2。
-Harbor 2.0.2。
-Kubernetes 1.18.1。
-Helm v3.4.0-rc.1。
-Prometheus-Operator 0.38.1。
-Prometheus 2.22.0
-SkyWalking OAP Server 8.3.0-es7。
-SkyWalking UI 8.3.0。
本书实例所采用的集成开发工具为IntelliJ IDEA ULTIMATE 2019.2。