全书分为12个章节,我认为比较重要的章节是从第3章到第11章,下面开始分别总结:
第三章:Eureka框架
Eureka是服务注册中心,对整个微服务架构起着核心作用,它的架构图如下:
Eureka架构中有3个重要的组成部分:服务端、服务提供者和服务调用者;下面对这三者分别介绍:
① 服务器端(server)
server端,提供一个服务器以供后台使用;
② 服务提供者(provide)
client端的服务提供者,有如下工作:
一.向服务器注册服务;
二.发送心跳给服务器;
三.向服务器获取注册列表;
③ 服务调用者(invoke)
对服务进行查找和调用,也属于client端;
第四章:Ribbon框架
Ribbon是负载均衡项目,他在集群中为各个客户端的通信提供了支持,主要功能:实现中间层应用程序的负载均衡;
子模块:
ribbon-core:项目核心,包括负载均衡器接口定义、客户端接口定义、内置的负载均衡实现等API;
ribbon-eureka:eureka客户端的负载均衡实现类;
ribbon-httpclient:封装httpclient,提供含有负载均衡的rest客户端;
下面再介绍一个ribbon负载均衡器的子模块:
rule:逻辑组件,规定从服务器列表中返回哪个服务器实例;
ping:用定时器确保服务器网络可以连接;
serverlist:服务器列表,有静态和动态两种配置;
第五章:Feign框架
Feign是一个开源项目,目的是简化Web Service客户端的开发。可以利用Feign注释来修饰接口,这种接口可以方位web service;feign还支持插件式的编码器和解码器,利用它们可以对request和response进行不同的封装和解析;下面是feign注解举例;
第六章:Hystrix框架
Hystrix是集群容错框架,通过添加延迟阈值以及容错逻辑,来助我们控制分布式系统间组件的交互,它可以通过隔离服务间的访问点、停止它们之间的级联故障、提供可回退操作实现容错;它的容错机制如下图:
功能:
1.当所依赖的网路服务发生延迟或者失败时,对访问的client程序进行保护;
2.分布式系统中,停止级联故障;
3.网络服务恢复正常后,快速恢复客户端的访问能力;
4.调用失败时,执行服务回退;
5.可支持实时监控、报警和其他操作;
第七章 Zuul框架
Zuul框架用来构建微服务集群的网关,为微服务群提供代理、过滤、路由等功能;Zuul将外部的请求过程划分为不同阶段,每个阶段都提供了一系列过滤器,可以实现如下功能;
功能:
1.身份验证和安全性
2.观察和监控
3.动态路由:将请求动态路由到不同的服务集群;
4.负载分配:设置每种请求的处理能力,删除超出限制的请求;
5.静态相应处理:提供静态过滤器,直接响应请求;
6.路由的多样化
第八章 微服务中的消息驱动
1.stream框架
它是用来构建消息驱动的微服务框架,包括以下内容:
stream框架自己的模型;
绑定器抽象层,可与消息代理中间件进行绑定;
持久化订阅的支持;
消费组的支持;
Topic分区的支持;
2.RabbitMQ框架
它是一个轻量级的消息代理中间件,支持多种消息通信协定,其中最重要的是AMQP(高级消息队列协议),它定义了“消息客户端”和“消息代理中间件”之间的通信协议,因此两者可以不受开发语言、具体产品约束,AMQP协议图如下:
3.Kafka框架
它是一个用于处理数据流的分布式消息框架,有如下功能:
构建在系统间进行实时数据传输通道;
构建对数据流进行转换或响应的实时应用;
Kafka框架结构类似RabbitMQ,消息生产者向kafka服务器发送消息,kafka接收消息后,在投递给消费者;
第九章 Spring cloud config
它为分布式系统提供了配置服务器和配置客户端,以此来更好地管理集群中的配置文件;在实际应用中,我们会将这些配置文件存放到外部系统(Git库),而spring cloud config的C/S会读取这些配置;一下是它们各自的功能:
配置服务器:
提供访问配置的服务接口;
对属性进行加密和解密;
嵌入spring boot的应用中;
配置客户端:
绑定配置服务器,远程初始化spring容器;
对属性进行加密和解密;
属性改变时,对其进行重新加载;
提供配置相关的管理端点;
初始化引导程序上下文时,绑定配置服务器和属性解密等;
然后服务器和客户端的结构图如下:
第十章 sleuth框架
它能用于跟踪微服务的调用过程,一般用来整合Zipkin系统(分布式跟踪系统)和ELK系统(数据分析平台),下面作简要介绍:
Zipkin系统
该系统主要用于收集、管理微服务产生的数据,在实际应用中,各个微服务想Zipkin服务器报告过程数据;Zipkin在得到这些数据后,提供了数据查询、分析的功能;
ELK系统
该系统为数据存储、分析提供了一整套解决方案,它包括以下3个项目:
Elasticsearch:一个分布式数据仓库,提供了Restful服务,用来数据存储和分析;
Logstash:用于数据收集、转换,可将数据保存到指定的数据仓库中;
Kibana:可视化的数据管理平台,用于操作Elasticsearch的数据,能提供多种图表展示数据,支持动态报表;
ELK与微服务集群的关系如下图所示:
第十一章 Spring Data框架
该框架的目标是为数据访问提供一个通用模型,它有数据库的关系如下图所示:
spring data框架的核心作用是为DAO层提供统一的数据访问模型,它的功能如下:
提供数据与对象映射的抽象层,同一个对象可以映射为不同的数据库的数据;
根据数据存储接口的方法名,自动实现数据查询;
为各个领域模型提供增删改查的功能;
在原有逻辑基础上,实现自定义数据库操作逻辑;
使用spring data可以实现不同数据库的访问,;下面介绍Spring Data的子模块:
spring data JPA:该模块提供了基本的数据操作功能,可减少数据访问层的开发工作量;
spring data mongoDB:该模块可以轻松操作MongoDB的数据;
spring data Redis:该模块可以操作redis数据库,并简化操作过程;