Spring Cloud 简介
总说
这里将会首先简单介绍一下Spring Cloud 。
其Logo 如下
Spring Cloud 是一系列有序框架的集合,其主要的设施有,服务发现与注册,配置中心,消息总线,负载均衡,断路器,数据监控等,通过Spring Boot的方式,可以实现一键启动,和部署。
Spring 没有重新造车轮,只是把各家的应用给综合起来。最后给开发者遗留下了一个足够简单的,相当容易部署的,相当容易学习的Spring 体系。
至于为什么要学习Spring Cloud的体系,因为原先的体系过于复杂了,导致开发的环境艰难,正是由于开发的环境的艰难,Spring Cloud 的是Spring体系的简化版,简化了原有的复杂,使得开发变的更加的简单快速。
其核心如下:
Spring Cloud Config、Spring Cloud Netflix(Eureka、Hystrix、Zuul、Archaius…)、Spring Cloud Bus、Spring Cloud for Cloud Foundry、Spring Cloud Cluster、Spring Cloud Consul、Spring Cloud Security、Spring Cloud Sleuth、Spring Cloud Data Flow、Spring Cloud Stream、Spring Cloud Task、Spring Cloud Zookeeper、Spring Cloud Connectors、Spring Cloud Starters、Spring Cloud CLI
这里将会一一的介绍。
服务注册与发现
其英文名称为 Spring Cloud Eureka,为Spring Cloud Netflix 子项目的核心组件之一,主要用于微服务的服务治理与发现。
在微服务的架构中,往往都有一个注册中心,每个微服务都会向注册中心,注册自己的微服务,注册中心,维护着,服务名称与服务实例对应的关系,每个微服务都会定时的从注册中心,获取注册列表,同时汇报自己的运行情况,这样当有其他服务需要调用该服务的时候,就可以向自己获取到的列表中,获取地址进行调用,Eureka实现了这套机制。即服务注册与发现。
其为微服务架构体系中最为核心的一点,用于其他微服务注册到该注册中心,配合路由可以实现路由的转发。通过寻找,遍历出其微服务。
同类型产品的还有Apahe Zookeeper 相对于高可用来说,zk 将不会保证,服务的可用性,当节点挂掉以后,需要进行Leader 选举,选举的时候会出现短暂的挂掉。而 eureka 当一个节点宕机以后,会进行自动的转移。所以其高可用性比zookeeper 相比更高。
配置中心
伴随着配置的增长,服务也有很多个配置,每个配置文件都各个不相同,其中,许多配置文件都是可以共用的,如果每个服务都去管理这些配置,会带来极大的麻烦,这个时候,需要引入基于Git的配置中心,去配置这个服务,例如Spring Cloud 体系中的,Spring Cloud Config,但是服务之间如何通信,这里使用 Spring Cloud Bus,即消息总线,作为配置中心,通知到配置体系中。
服务消费者
这里是相当经典的生产者,消费者模型,通过生产者,和消费者,统一进行布置,通过Spring Cloud Feign 远程调用,实现服务消费者,和生产者之间的相关联。实现经典的服务消费者和生产者之间的关系。
服务容错
当调用服务出错以后,服务如何保证整个体系不崩塌,这里就需要使用服务容错进行处理。这里称为服务雪崩,当出现服务雪崩的时候,整个服务链路会出现调用崩塌的情况。
Spring Cloud 组件中的 Spring Cloud HyStrix 实现了这种服务降级,与故障隔离。
网关
网关为整个系统,提供路由,鉴权,监控,负载均衡等功能,Spring Cloud 为此提供的解决方案有Zuul,与Gateway。
服务追踪
伴随着整个服务链路的增长,服务越来越多,排查问题,监控指标的时候,服务追踪变的相当的重要,Spring Cloud 体系提供的是,Sleuth,对整个服务链路进行追踪,并以图表的形式表现出来。
服务测试
在微服务体系中,一个服务可能会依赖其他的服务,这里使用服务测试来使用。通过Mock数据,实现服务的测试。
这里使用的是 Spring Cloud Contract
更多工具
Spring Cloud Security
Spring Cloud Security 的安全工具包,用于对Spring Security 提供基本的RBAC服务。
Spring Cloud Sleuth
用于进行相关的日志收集,实现分布式追踪的一种解决方案。
Spring Cloud Data Flow
用于进行大规模的数据处理。
Spring Cloud Stream
事件触发的机制,让其实现事件触发。
Spring Cloud Task
调度工作,定时任务,需要使用 Task
Spring Cloud Zookeeper
同属于 注册中心 Zookeeper 体系。
Spring Cloud Connectors
利用 Spring Cloud Connectors 实现云平台的搭建。
Spring Cloud Starters
开箱即用,可以实现Boot形式的启动项目。
Spring Cloud CLI
同上,使用命令行的方式实现开箱即用。