前言
最近几年,随着DevOps和以Docker为主的容器技术的发展,云原生应用架构和微服务变得流行起来。云原生包含的内容很多,如DevOps、持续交付、微服务、敏捷等,本书关注的是其中的微服务。在大概三年前,我在互联网上查找关于微服务落地的方案,搜索到了Spring社区推出的Spring Cloud项目,在那个时候就开始关注Spring Cloud,发现Spring Cloud基于Spring Boot,引入依赖后开箱即用,使用非常方便。当时Spring Cloud中的组件数量和成熟度远不如现今,Spring Cloud的版本为Brixton。后来我在项目中尝试使用Spring Cloud,主要用了Spring Cloud Config和Spring Cloud Stream,使用过程中发现这两个组件在易用性、功能性等各方面都令人满意,慢慢地便在项目中铺开使用。
在应用Spring Cloud的过程中,我见证了它的不断完善和丰富。在其间也遇到了一些“坑”,通过源码分析才解决了一些问题。Spring Cloud并没有重复造轮子,这些组件有些是Spring Cloud的全新项目,如Spring Cloud Gateway、Spring Cloud Config等,还有很多是基于业界现有的开源组件,如Netflix的合集Netflix Ribbon等。
在2017年下半年的时候,我开始对每个组件进行梳理,深入到每个组件的实现原理和源码。毕竟Spring Cloud中包含了众多组件,我断断续续花了半年时间把各个组件大概梳理了一遍,没想到这些积累成为了本书的写作基础。
本书详细介绍Spring Cloud相关组件及其在微服务架构中的应用。全书共13章,第1章介绍微服务架构相关的基本概念;第2章介绍Spring Cloud中包含的组件以及Spring Cloud约定的上下文;第3章介绍Spring Cloud的基础Spring Boot,包括如何构建一个Spring Boot服务、Spring Boot的配置等;第4~13章详细讲解Spring Cloud组件,包括Eureka(服务注册与发现)、OpenFeign(声明式RESTful客户端)、Hystrix(断路器)、Ribbon(客户端负载均衡器)、Gateway(API网关)、Config(配置中心)、Stream(消息驱动)、Bus(消息总线)、Security(认证与授权)、Sleuth(服务链路追踪)。本书的目标是深入到Spring Cloud组件实现的技术内幕,并介绍了进阶应用的思路,为读者提供使用Spring Cloud进行微服务架构实践的参考。
本书在介绍Spring Cloud中的重要组件时,从基础应用的案例着手,尽可能将这类组件的设计思路和实现原理讲清楚,以帮助读者加深理解,并结合源码讲解组件的实现原理,最后还介绍了组件的进阶功能与应用。本书适合具有一些Java基础的开发人员,特别适合正在尝试微服务实践并想要深入了解Spring Cloud各个组件原理的开发人员和架构师。书中的很多案例都提供了源代码,可以随时下载,下载地址为:
□ github地址:https://github.com/Advanced-SpringCloud/cloud-book
□ gitee地址:https://gitee.com/Advanced-SpringCloud/cloud-book
本书最终由三个人共同完成,具体分工如下:第1、8、9、11、13章由朱荣鑫编写,第2、5、7、10章由张天编写,第3、4、6、12章由黄迪璇编写,全书由朱荣鑫统稿。能够完成本书需要感谢很多人,丁二玉老师在本书的撰写过程中提供了很多内容组织方面的建议,花了很多休息时间帮助审稿,非常感谢丁老师的大力帮助;感谢笔者所在的公司,一个年轻而富有活力的公司,为我们提供了很好的平台,从而积累了很多微服务架构实践的经验;感谢机械工业出版社的吴怡编辑及其他工作人员,为本书投入了很多精力。由于时间有限,书中难免存在一些问题,请读者不吝赐教。
朱荣鑫
2018年5月