这本书很***

国内关于微服务架构的开发学习资料与课程都非常有限,这使得微服务架构在国内的推广并没有想象中那样火热。而且,国内的相关资料大多数以理论为主或者没有实战基础。所以,当电子工业出版社博文视点的付睿老师提议写一本以实战为主的微服务书籍之后,我毫不犹豫地抓住了这个机会。本书以实战为主,以理论为辅,真正给出了能在实际生产中使用的技术方案。由于篇幅限制以及以实战为主的特点,本书不会介绍太多的理论(哪怕这个理论很重要),比如在介绍Consul的时候,本书不会详细介绍Raft一致性协议,但是会介绍与其相关的一些在使用中需要注意的问题,如果读者对相关问题有兴趣,可以查看相关的论文资料。

 

内容详情

本书分为三部分:基础框架篇(第1~6章)、服务框架篇(第7~10章)、监控部署篇(第11~13章)

第一篇:基础框架筒

第1章微服务概述:本章首先介绍了微服务架构的概念与优缺点,之后简略介绍了微服务中需要的各种组件与常见的技术选型。

 

第2章微服务基础框架:本章首先介绍了Spring Boot 在微服务方面的优势,之后通过从零开始开发一个SpringBoot项目来介绍Spring Boot的基本使用方法,使没有使用过Spring Boot的同学可以快速入门。最后在“再学一招”部分,介绍了一个非常好用的Maven命令:Maven依赖树,该命令是查看SpringBoot-Starter的依赖以及处理依赖冲突的利器。

 

第3章微服务文档输出:本章首先介绍了自动化文档输出工具Swagger的概念,之后介绍了Swagger与SpringBoot的集成以及Swagger的常用注解。最后在“再学一招”部分,介绍了一个很好用的消除模板代码的框架Lombok的安装与使用方法。

 

第4章微服务数据库:本章以MySQL为例,首先介绍了在单数据源的情况下,Spring Boot与MyBatis的集成。之后使用AbstractRoutingDataSource实现了对多数据源情况的处理,并简要介绍了实现多数据源的原理。最后在“再学一招”部分,介绍了MyBatis-Generator的基本用法。

 

第5章微服务缓存系统:本章首先介绍了常用的缓存技术的优缺点与选型方案,之后介绍了当使用Redis2.x版本时,使用Spring Boot集成ShardJedis实现客户端分片的方法。然后介绍了Redis 3.x集群的搭建与使用Spring Boot集成JedisCluster实现服务端集群的方法。最后简要分析了JedisCluster的源码。在本章的“再学一招”部分,介绍了使用GuavaCache实现本地缓存的方法。

 

第6章Spring Boot启动源码解析:本章详细分析了Spring Boot启动过程的源码,掌握这一章对于后续章节的学习至关重要。在本章的“再学一招”部分,简要介绍了在开发过程中获取配置信息的4种方法。

 

第二篇:服务框架筒

第7章微服务注册与发现:本章首先介绍了Consul的基本概念和功能,之后搭建了服务提供者和服务调用者两个项目来实现使用Consul进行服务注册和服务发现的功能,最后介绍了使用Consul与SpringBoot-Actuator实现服务健康检查的功能。在本章的“再学一招”部分,简要介绍了Consul自身提供的几种健康检查的方式及原理。

 

第8章微服务配置管理:本章首先介绍了为什么要使用Archaius 以及Archaius 实现服务热配置的原理,之后展示了使用Consul-KV实现配置中心的方式以及结合Archaius实现配置动态获取的方式,最后提供了一种将Archaius配置信息与Spring的PropertySource结合的方案。在本章的“再学一招”部分,笔者详细分析了使用Archaius构造动态属性源以及动态获取属性的源码。

 

第9章微服务进程间通信:本章首先介绍了三种服务通信框架:OkHttp、AsyncHttpClient和Retrofit,之后分别展示了使用三种框架进行服务通信的代码编写方法。最后在本章的“再学一招”部分,详细分析了使用Retrofit进行服务通信的核心源码。

 

第10章微服务降级容错:本章首先详细介绍了为什么使用Hystrix、Hystrix的工作原理以及执行流程,之后展示了在实际项目中如何使用Hystrix实现服务降级容错,最后展示了怎样结合Turbine来搭建一个完整的Hystrix监控系统。在本章的“再学一招”部分,介绍了设置Hystrix配置参数的两种方法以及最常使用的11个配置项。

 

第三篇:监控部署篇

第11章微服务日志系统:本章首先详细介绍了为什么使用ELK以及ELK最常用的两种架构,之后搭建了ELK缓冲系统,然后展示了怎样将项目中的日志发送到日志系统中,最后简单介绍了Kibana的常见用法。在本章的“再学一招”部分,介绍了怎样使用Elasticsearch-Curator进行日志的定时删除。

 

第12章微服务全链路追踪系统:本章首先详细介绍了为什么使用Zipkin、Zipkin的工作流程、数据模型以及工作原理,之后搭建了Zipkin全链路追踪系统,然后分别展示了使用AsyncHttpClient和OkHttp实现服务通信时进行链路追踪的方式,并且介绍了将追踪信息进行持久化的方法。在本章的“再学一招”部分,详细分析了Brave(Zipkin的官方Java客户端)的核心源码。

 

第13章微服务持续集成与持续部署系统:本章首先详细介绍了为什么需要搭建持续集成与持续部署系统,之后介绍了构建这套系统的技术选型:GitLab、Jenkins、Docker-Registry与总体架构,然后分别介绍了使用jar包部署服务和使用Docker镜像部署服务时持续集成与持续部署系统的工作原理。之后,搭建了这套系统,最后分别展示了在使用jar包部署服务和使用Docker镜像部署服务时,持续集成与持续部署系统的实现方式。在本章的“再学一招”部分,介绍了最常用的10条Docker命令。