初识Spring Cloud
Spring Cloud概述
Spring Cloud是一个基于Spirng Boot实现的微服务开发架构。它利用Spring Boot的卡法便利性巧妙地简化了分布式系统的开发。例如配置管理、服务发现、熔断器使用、智能路由、控制总线等操作,都可以使用Spring Boot框架进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
Spring Cloud之所以成为当下流行的微服务架构,是因为其具有以下特点。
- 组件丰富,功能齐全
Spring Cloud拥有Spring这个强大后端,框架的源码也是开源的,而且开发者在不断完善Spring Cloud下的组件,其中包括Eureka服务注册发现中心,可以实现动态修改和配置文件;Hystrix熔断器,通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供强大的容错能力。这些组件基本覆盖了日常开发的各个方面。
- 开箱即用,快速启动
Spring Cloud是基于Spring Boot开发的,Spring Boot具有快速构建Spring应用、直接嵌入服务器、自动化配置的优点,Spring Cloud继承了Spring Boot快速构建和自动化配置的优点,有开箱即用、快速启动的特点。
- 模块部署方便,项目维护难度降低
Spring Cloud采用模块化开发,按照项目功能将项目拆分为不同的模块,每个模块独立开发运行,模块之间不会互相影响。模块开发完成后,每个模块部署时可以使用Docker进行自动化部署,使得项目部署更加方便。维护时只需要维护具体的模块,不需要改动其他模块的代码,从而降低了模块后期维护的成本。
- 项目扩展性和稳定性好
基于Spring Cloud的微服务架构中,每个模块基本都是一个Spring Boot项目,它们都有独立的数据库,模块下的功能是横向开发的。如果需要拓展新的功能,就可以新建该功能对应的独立数据库以及新的模块,不需要再之前那的模块上修改,这样项目拓展更方便,项目稳定性更好。
- 具有容错处理机制
项目实际开发中会因为网络连接失败、超时、服务器硬件故障等原因导致其中某个模块无法正常运行,从而导致整个项目发生异常,所以容错机制变得尤为重要。Spring Cloud提供了Hystrix组件,该组件专门用于处理容错,从而能保证某个模块出错后系统有其他备用模块或者善后处理。
Spring Cloud微服务架构的组件
Spring Cloud是一系列框架的有序集合,为开发人员构建微服务架构提供了完整的解决方案。Spring Cloud根据分布式服务协调治理的需求成立了许多子项目,每个项目通过特定的组件去实现。
Spring Cloud包含的常用组件以及模块。
- Spring Cloud Config:分布式配置中心,负责把配置放到远程服务器上,集中化管理集群配置。支持本地存储、Git和Subversion。
- Spring Cloud Netfix:核心组件,负责对多个Netfix OSS开源套件进行整合。
- Eureka:服务注册发现中心,基于REST服务的分布式中间件,主要用于服务管理。
- Hystrix:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
- Ribbon:云端负载均衡器。支持多种负载均匀策略,可配合服务发现和熔断器使用,在客户端实现负载均衡。
- Feign:一个REST客户端,基于Ribbon和Hystrix的声明式服务调用组件。
- Spring Cloud Bus:事件、消息总线,用于在集群(例如配置变化事件)中传播状态变化,可以Spring Cloud Config联合实现热部署。
- Spring Cloud Stream:数据流操作开发包,可与Redistribution、RabbitMQ、Kafka等架构进行消息发送与接收。
- Spring Cloud Sleuth:服务追踪框架,可以与Zipkin、Apache Htrace和ELK等数据分析、服务跟踪系统进行整合,为最终服务、解决问题提供了便利。
Nginx与Ribbon比较
Nginx与Ribbon同是负载均衡器,但是它们也有很大的不同。
- Nginx(服务器端负载均衡器)
Nginx的作用是系统将客户端所有请求统一交给Nginx,由Nginx实现负载均衡请求转发,即在服务器端实现负载均衡。
- Ribbon(客户端负载均衡器)
Ribbon的作用是从Eureka服务注册发现中心上获取服务注册信息列表,缓存到本地,然后在本地实现负载均衡策略,即在客户端实现负载均衡。
Spring Cloud版本说明
Spring Cloud的版本号
这些代号据说是根据伦敦地铁命名的,分别是Angel、Brixton、Camden、Dalston、Edgware、Finchley、Greenwich。
Spring Cloud与Spring Boot的兼容性
| Spring Cloud版本 | Spring Boot版本 |
|---|---|
| Greenwich版本 | 兼容Spring Boot 2.1.x |
| Finchley版本 | 兼容Spring Boot 2.0.x |
| Dalston和Edgware版本 | 兼容Spring Boot 1.5.x |
| Camden版本 | 兼容Spring Boot 1.4.x |
| Brixton版本 | 兼容Spring Boot 1.3.x |
| Angel版本 | 兼容Spring Boot 1.2.x |