前言

本次代码阅读,依旧是阅读最新版本源码。版本信息如下

  • JDK 17
  • Spring Boot 3.2.5
  • SpringCloud 2023.0.1

什么是SpringCloud

Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、短寿命微服务和契约测试)。分布式系统的协调导致了锅板模式,使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。它们可以在任何分布式环境中很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心和托管平台(如Cloud Foundry)

SpringCloud与Spring Boot的关系

Spring Cloud是一个用于构建分布式系统的开发工具集合,它提供了一系列的组件和模块,用于解决分布式系统中的常见问题,例如服务注册与发现、负载均衡、服务调用、配置管理等。而Spring Boot是一个用于简化Spring应用程序开发的框架,它提供了自动配置、快速启动等特性,使得开发者可以更加便捷地构建和部署Spring应用程序。

SpringCloud的特性

  • 分布式/版本控制配置
  • 服务注册与发现
  • 智能路由
  • 服务间调用
  • 负载均衡
  • 熔断器
  • 分布式消息传递
  • 短生命周期微服务
  • 消费者驱动和生产者驱动的契约测试

SpringCloud主要组件

SpringCloud组件很多,这里只展示我们要阅读源码的组件

Spring Cloud Netflix

Netflix OSS 开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。

  • Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
  • Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略;
  • Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
  • Feign:基于Ribbon和Hystrix的声明式服务调用组件;
  • Zuul:API网关组件,对请求提供路由及过滤功能。

Spring Cloud OpenFeign

基于Ribbon和Hystrix的声明式服务调用组件,可以动态创建基于Spring MVC注解的接口实现用于服务调用,在SpringCloud 2.0中已经取代Feign成为了一等公民

Spring Cloud Gateway

API网关组件,对请求提供路由及过滤功能。

Spring Cloud Circuit Breaker

它提供了对不同熔断器实现的抽象。熔断器是一种用于处理服务间调用失败的模式,当某个服务连续失败达到一定次数时,熔断器会打开,阻止对该服务的进一步调用,防止故障的进一步扩散。

Spring Cloud Circuit Breaker提供了一致的API,使得开发者可以在他们的应用程序中使用熔断器,而不需要关心具体的熔断器实现。开发者可以根据他们的需求选择最适合的熔断器实现,例如Netflix的Hystrix、Alibaba的Sentinel等。

使用Spring Cloud Circuit Breaker,开发者可以更加方便地在他们的微服务应用中实现故障隔离和服务降级,提高应用的可用性和稳定性。