1.7 Spring Cloud工具套件介绍
Spring Cloud工具套件是一个庞大的家族,并且它对第三方的工具有很好的兼容性。限于篇幅,我们无法对所有组件进行一一介绍,所以这里只对一些核心的和常用的组件进行一个简要说明,帮助读者从整体上认识和了解这个工具套件。Spring Cloud工具套件的思维导图如图1-4所示。
图1-4
(1)Spring Cloud Netflix
这是Spring Cloud工具套件的核心,包含Netflix OSS的一些基础组件,如Eureka、Hystrix、Zuul、Archaius、Ribbon和Turbine等,其中:
◎ Eureka是云端服务发现,用于云端服务注册与定位,以实现云端服务发现和故障转移等服务治理。
◎ Hystrix是一个可提供断路器、容错机制、降级机制等功能的管理工具,通过这一工具可以实现对第三方库的延迟,以及对故障转移提供全面的监测和调控。
◎ Zuul是在云平台上提供动态路由、监控和安全等边缘服务的管理框架。Zuul相当于设备和微服务应用的Web网站后端所有请求的前门。
◎ Archaius是一个配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
◎ Ribbon提供云端负载均衡管理,有多种负载均衡策略可供选择,能自动配合服务发现和断路器使用。
◎ Turbine是聚合服务发送事件流数据的一个工具,使用可配置方式监控集群中服务的运行情况。
(2)Spring Cloud Bus
一个事件、消息总线,用于在集群中传播状态变化,可与Spring Cloud Config联合使用,实现动态配置管理。
(3)Spring Cloud Cluster
提供Leadership选举,如ZooKeeper、Redis、Hazelcast和Consul常见状态模式的抽象和实现。
(4)Spring Cloud Consul
封装了Consul操作,Consul是一个服务发现与配置工具,可以与Docker容器无缝集成。
(5)Spring Cloud Security
基于Spring Security的安全工具包,可以为应用添加安全控制。
(6)Spring Cloud Sleuth
日志收集工具包,封装了Dapper和log-based追踪,以及Zipkin和HTrace操作,为微服务应用实现了一种分布式追踪解决方案。
(7)Spring Cloud Data Flow
大数据操作工具,是Spring XD的替代产品。它是一个混合计算模型,结合了流数据与批量数据的处理方式。
(8)Spring Cloud Stream
数据流操作开发包,封装了与Redis、Rabbit、Kafka等发送和接收消息的方法。
(9)Spring Cloud Starters
使用Spring Boot方式启动项目工具包,为Spring Cloud提供开箱即用的依赖管理。
(10)Spring Cloud Pipeline
提供了一个有步骤的固定部署管道,以确保应用程序可以以零停机的方式部署,并且很容易在出错后进行回滚。
Spring Cloud工具套件除自身包含丰富的组件库外,对于第三方库,也具有很好的兼容性。借助于Spring Cloud Consul,我们可以很方便地使用Consul搭建注册中心,在提供服务注册与发现的基础上,实现远程配置管理功能。
下面两个组件是由第三方提供的。
(1)Spring Boot Admin
Spring Boot Admin通过Spring Boot提供的监控接口,如/health、/info等,加上对当前处于活跃状态的会话数量、当前应用的并发数、延迟及其他度量信息等,可以对分布式环境中的Spring Cloud应用实现实时的全程监控。
(2)zipkin-dependencies
zipkin-dependencies是由第三方封装的可运行应用程序包,可以对Spring Cloud应用的运行和调用关系进行全程跟踪,从而为故障诊断和检查提供帮助。它可以使用Web方式或与Kafka结合使用的方式传递日志数据,然后自动分析数据,生成应用之间的调用路线图。
在应用及其接口的调用中,Spring Cloud工具套件提供了Gateway和OpenFeign等组件,以支持在不同环境下对应用之间的快速调用。
Spring Boot是Spring Cloud的基础组成部分,也是Spring开发框架的根本所在。其中:
◎ Netty是一个以事件驱动的非阻塞的高并发服务。
◎ WebFlux是一个全新的反应式Web框架。
◎ Spring Data是一个通用的基于Spring编程模型并且能够保留数据底层特殊性的数据存取组件。
◎ Spring Security是一个功能强大、高度可定制的身份验证和访问控制框架。
◎ Spring AMQP是基于Spring框架的AMQP消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的POJO消息监听等,极大地方便我们基于RabbitMQ等消息中间件进行相关开发。