“微服务架构”这个概念的提出已经有一段时间了,但是由于资料的匮乏以及实现的复杂性,使得大部分企业望而却步。

我是幸运的,从毕业至今,一直在与微服务打交道,其间参与了大大小小多个微服务项目的开发,是为数不多的有机会在实际生产环境中运用微服务架构的幸运儿。在使用微服务架构的过程中,我深深地体会到了这种架构对于一个大中型企业的好处:快速的开发与部署、轻量级的通信机制、有针对性的水平扩展、高度的解耦,等等,这加速了一个项目的迭代,很好地实现了敏捷开发,正是企业所需要的。但是微服务架构的实现也是有一定的复杂性的:服务拆分的边界怎么来定义;原本的单机事务在服务拆分之后变成了分布式事务,这怎么处理;由于服务拆分了,服务之间的通信需要走网络,怎样尽可能地减少网络通信的消耗;怎样防止服务雪崩;怎么梳理链路调用关系,怎么快速定位导致调用链发生错误的服务;怎样监控服务的健康状态,等等,这都是使用了微服务架构后需要解决的问题。本书结合我在实际使用微服务架构中积累的经验给出了其中大多数问题的解决方案,可以为读者朋友提供-一个参考。

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

本书分为三部分:基础框架篇(第1~6章)、服务框架篇(第7~10章)、监控部署篇(第11~13章),由浅入深地讲解了微服务的相关技术。基础框架篇从微服务架构的基本概念与技术选型出发,详细介绍了微服务基础框架SpringBoot、自动化API文档生成工具Swagger、动态数据源和缓存系统,并深入分析了Spring Boot启动过程的核心源码,这一部分是整本书的基础;服务框架篇详细介绍了服务注册与发现框架Consul、热配置管理框架Archaius、服务降级容错框架Hystrix,以及服务通信框架OkHtp、AsyncHttpClient和Retrofit, 这一部分 是整本书的核心;监控部署篇详细介绍了ELK日志系统的实现Zipkin全链路追踪系统的实现,最后介绍了持续集成与持续部署系统的实现,这一部分 是开发运维部分。

本书从组织结构.上来讲,分为三部分:基础框架篇(第1~6章)、服务框架篇(第7~10章) 、监控部署篇(第11~13章)

第一部分基础框架篇

第1章 微服务概述

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

 

第2章微服务基础框架

本章首先介绍了SpringBoot在微服务方面的优势,之后通过从零开始开发一个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个配置项。

 

第3部分监控部署篇

第11章微服务日志系统

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

 

第12章 微服务全链路追踪系统

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

 

第13章 微服务持续集成与持续部署系统

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

 

目录

 

需要获取这份资料的小伙伴可以转发加关注后私信(学习)免费获取哦!