Spring Cloud入门2

0 阅读5分钟

初识Spring Cloud

Spring Cloud概述

Spring Cloud是一个基于Spirng Boot实现的微服务开发架构。它利用Spring Boot的卡法便利性巧妙地简化了分布式系统的开发。例如配置管理、服务发现、熔断器使用、智能路由、控制总线等操作,都可以使用Spring Boot框架进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud之所以成为当下流行的微服务架构,是因为其具有以下特点。

  1. 组件丰富,功能齐全

Spring Cloud拥有Spring这个强大后端,框架的源码也是开源的,而且开发者在不断完善Spring Cloud下的组件,其中包括Eureka服务注册发现中心,可以实现动态修改和配置文件;Hystrix熔断器,通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供强大的容错能力。这些组件基本覆盖了日常开发的各个方面。

  1. 开箱即用,快速启动

Spring Cloud是基于Spring Boot开发的,Spring Boot具有快速构建Spring应用、直接嵌入服务器、自动化配置的优点,Spring Cloud继承了Spring Boot快速构建和自动化配置的优点,有开箱即用、快速启动的特点。

  1. 模块部署方便,项目维护难度降低

Spring Cloud采用模块化开发,按照项目功能将项目拆分为不同的模块,每个模块独立开发运行,模块之间不会互相影响。模块开发完成后,每个模块部署时可以使用Docker进行自动化部署,使得项目部署更加方便。维护时只需要维护具体的模块,不需要改动其他模块的代码,从而降低了模块后期维护的成本。

  1. 项目扩展性和稳定性好

基于Spring Cloud的微服务架构中,每个模块基本都是一个Spring Boot项目,它们都有独立的数据库,模块下的功能是横向开发的。如果需要拓展新的功能,就可以新建该功能对应的独立数据库以及新的模块,不需要再之前那的模块上修改,这样项目拓展更方便,项目稳定性更好。

  1. 具有容错处理机制

项目实际开发中会因为网络连接失败、超时、服务器硬件故障等原因导致其中某个模块无法正常运行,从而导致整个项目发生异常,所以容错机制变得尤为重要。Spring Cloud提供了Hystrix组件,该组件专门用于处理容错,从而能保证某个模块出错后系统有其他备用模块或者善后处理。

Spring Cloud微服务架构的组件

Spring Cloud是一系列框架的有序集合,为开发人员构建微服务架构提供了完整的解决方案。Spring Cloud根据分布式服务协调治理的需求成立了许多子项目,每个项目通过特定的组件去实现。

Spring Cloud包含的常用组件以及模块。

  1. Spring Cloud Config:分布式配置中心,负责把配置放到远程服务器上,集中化管理集群配置。支持本地存储、Git和Subversion。
  2. Spring Cloud Netfix:核心组件,负责对多个Netfix OSS开源套件进行整合。
  • Eureka:服务注册发现中心,基于REST服务的分布式中间件,主要用于服务管理。
  • Hystrix:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
  • Ribbon:云端负载均衡器。支持多种负载均匀策略,可配合服务发现和熔断器使用,在客户端实现负载均衡。
  • Feign:一个REST客户端,基于Ribbon和Hystrix的声明式服务调用组件。
  1. Spring Cloud Bus:事件、消息总线,用于在集群(例如配置变化事件)中传播状态变化,可以Spring Cloud Config联合实现热部署。
  2. Spring Cloud Stream:数据流操作开发包,可与Redistribution、RabbitMQ、Kafka等架构进行消息发送与接收。
  3. Spring Cloud Sleuth:服务追踪框架,可以与Zipkin、Apache Htrace和ELK等数据分析、服务跟踪系统进行整合,为最终服务、解决问题提供了便利。

Nginx与Ribbon比较

Nginx与Ribbon同是负载均衡器,但是它们也有很大的不同。

  1. Nginx(服务器端负载均衡器)

Nginx的作用是系统将客户端所有请求统一交给Nginx,由Nginx实现负载均衡请求转发,即在服务器端实现负载均衡。

  1. Ribbon(客户端负载均衡器)

Ribbon的作用是从Eureka服务注册发现中心上获取服务注册信息列表,缓存到本地,然后在本地实现负载均衡策略,即在客户端实现负载均衡。

image.png

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