前 言
Spring Cloud/Spring Cloud Alibaba是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
本书理论与实践并重,采用一步一步的教学方法,较为系统地介绍Spring Boot、Spring Cloud、Spring Cloud Alibaba的生产级特性、重要组件及核心技术,并通过大量生动形象的原理图以及实践案例加深读者对分布式微服务架构的理解,希望对于拥有Java基础或1~2年开发经验、想突破开发瓶颈、进阶架构师的读者有所帮助。
让我们开始Spring Boot、Spring Cloud、Spring Cloud Alibaba的探险之旅吧!
本书结构
本书共14章,以下是各章节的内容概要。
第1章首先介绍环境准备,包括安装JDK、安装Intellij IDEA、安装Maven、Docker概述等;紧接着讲述Spring Boot核心功能和生产级特性、快速搭建第一个Spring Boot项目、Spring Boot原理解析、SpringApplication执行流程以及如何自定义starter组件。
第2章主要介绍Spring Cloud功能特性、模块以及版本信息,Spring Cloud和Spring Boot之间的关系,Spring Cloud Alibaba简介、主要功能以及相关组件,最后介绍Netflix、Spring Cloud以及Spring Cloud Alibaba之间的关系。
第3章主要介绍Spring Cloud Alibaba的服务注册和配置中心组件Nacos、Nacos单机模式/集群模式以及Nacos+Nginx集群模式搭建,Spring Boot如何注册到Nacos以及如何将配置文件抽到Nacos配置中心,Nacos配置中心和服务发现原理分享,Eureka简介以及如何通过Eureka搭建注册中心集群,Spring Cloud Consul简介、安装与启动,Spring Cloud Config简介和原理等内容。
第4章首先介绍Zuul网关、快速搭建Zuul网关、Zuul网关路由配置/过滤器/管理端点等内容;接着介绍Spring Cloud Gateway相关内容,包括如何快速入门Spring Cloud Gateway、Gateway路由断言工厂、全局过滤器、跨域、HTTP超时配置、TLS/SSL配置、Gateway底层原理等;最后对比Gateway和Zuul网关的区别。
第5章主要介绍Ribbon负载均衡器、常用负载均衡算法、如何自定义负载均衡算法、如何自定义Ribbon客户端,最后介绍Eureka/Nacos如何整合Ribbon客户端。
第6章主要介绍Spring Cloud OpenFeign声明式调用,包括OpenFeign简介、快速创建第一个Feign程序、@FeignClient注解详解、Feign @QueryMap支持、Feign请求响应压缩、Feign日志配置(Java方式、配置文件方式以及全局日志配置)、Feign自定义错误、Feign拦截器以及如何自定义Feign客户端等内容。
第7章主要介绍熔断、限流以及降级相关组件,包括Hystrix简介、Hystrix请求缓存和请求合并、Spring Boot应用配置Hystrix仪表盘、Turbine集群监控、阿里Sentinel组件简介、常用的限流算法、Sentinel与Hystrix的区别、Sentinel如何进行限流和熔断降级等内容。
第8章主要介绍Spring Cloud Bus消息总线、Spring事件机制、Spring Cloud Bus原理、如何使用Kafka实现消息总线、Kafka介绍与安装、Spring Cloud Stream简介和核心概念讲解、Stream应用编程模型/Binder抽象、Stream快速入门、Stream原理等内容。
第9章主要介绍Spring Cloud Alibaba Seata分布式事务组件,包括Seata简介、Seata部署、Seata原理与设计以及如何通过Seata解决分布式事务问题等。
第10章主要介绍Spring Cloud Sleuth服务链路追踪,包括Sleuth和Zipkin简介、Zipkin安装与快速启动、Spring Cloud Sleuth整合Zipkin、Spring Cloud Sleuth整合ELK、Sleuth原理浅析等内容。
第11章主要介绍Spring Cloud Commons公共包、Spring Cloud Context功能、Spring Cloud Commons功能、Spring Cloud LoadBalance负载均衡、Spring Cloud Circuit Breaker断路器介绍和核心概念等内容。
第12章主要介绍OAuth 2.0核心概念、OAuth 2.0协议流程、OAuth 2.0四种授权方式、快速搭建OAuth 2.0服务、授权码模式实现、JWT简介、JWT结构和应用,最后结合Spring Security + OAuth 2.0 + JWT开发的具体案例。
第13章主要介绍Spring Boot项目容器化、Spring Cloud Alibaba组件容器化,包括Nacos、Sentinel以及Seata等组件。
第14章主要介绍使用Spring Cloud、Spring Cloud Alibaba以及开源技术框架,一步一步搭建分布式微服务架构和服务治理平台,并提供具体的架构图和原理图,帮助读者理解分布式架构的具体细节。
学习本书的预备知识
Java基础
读者需要掌握J2SE基础知识,这是最基本的,也是最重要的。
Java Web开发技术
在项目实战中需要用到Java Web的相关技术,比如Spring、Spring MVC、Tomcat等技术。
Spring Boot技术
本书的很多内容都是建立在读者了解Spring Boot的基础上展开的,如果读者对微服务脚手架Spring Boot的知识和功能特性有更多的了解,会更顺利地阅读本书。
其他技术
读者需要了解目前主流的技术,比如数据库MySQL、缓存Redis、消息中间件Kafka、容器技术Docker等。
本书使用的软件版本
本书项目实战开发环境为:
? 操作系统Mac Pro
? 开发工具Intellij IDEA 2019.3
? JDK 1.8版本以上
? Spring Boot 2.2x以上
? Spring Cloud Hoxton版本
? Spring Cloud Alibaba 2.2.0 RELEASE
? 其他主流技术基本使用最新版本
读者对象
? 具有Java基础的大学生。
? 拥有1~2年开发经验的从业人员和运维人员。
? 网课、培训机构、大专院校教学用书。
源代码下载
可以用微信扫描下面的二维码获取本书配套的源文件。
如果阅读过程中遇到问题,请联系booksaga@126.com,邮件主题为“Spring Boot+Spring Cloud+Spring Cloud Alibaba微服务训练营”。
致谢
本书能够顺利出版,首先感谢清华大学出版社的王金柱老师及背后的团队为本书的辛勤付出,这是我第六次和王金柱老师合作,每次合作都能让我感到轻松和快乐,我很享受写作的过程。
感谢厦门海西医药交易有限公司,书中很多的知识点和项目实战经验都来源于贵公司,如果没有贵公司提供的实战案例,这本书就不可能问世。感谢技术总监赵定益认可和栽培,以及同事涂勇的鼎力支持解答。
感谢我的妻子郭雅苹,感谢她一路不离不弃的陪伴和督促,感谢她对我工作的理解和支持。感谢家人对我生活无微不至的照顾,使我没有后顾之忧,全身心投入本书的写作中。
由于水平所限,书中所存不足敬请广大读者不吝指正。
黄文毅
2021年4月1日
