SpringCloud最全详解(万字图文总结)

SpringCloud最全详解(万字图文总结)

SpringCloud是构建微服务的基石,也是大厂重点考察对象,下面我就全力来详解SpringCloud@mikechen

Spring Cloud

Spring Cloud 是基于 Spring Boot 的微服务架构开发工具,它提供了一整套解决方案,用于快速构建分布式系统中的各个组件和服务。

如下图所示:

SpringCloud最全详解(万字图文总结)

主要会包含,比如:服务注册与发现(Eureka)、配置管理(config)、负载均衡(ribbon)、熔断器hystrix、分布式追踪(sleuth)…等组件。

 

Spring Cloud Zuul网关

Zuul 是一个用于构建微服务架构中的网关框架,它充当了一个 API 网关的角色,可以提供动态路由、监控、弹性、安全性等功能。

SpringCloud最全详解(万字图文总结)

主要解决:

  1. 动态路由:Zuul 通过解析配置文件或注册中心中的路由信息,根据请求的路径匹配到相应的路由规则,然后将请求转发给指定的后端服务。
  2. 过滤器:Zuul 的过滤器在请求的不同阶段执行,包括路由前、路由中和路由后,开发者可以通过编写自定义的过滤器,例如:鉴权、日志记录、请求转发等。
  3. 负载均衡:当 Zuul 与 Ribbon 结合使用时,Zuul 会通过 Ribbon 获取注册中心中的服务列表,并根据负载均衡策略选择合适的后端服务进行请求转发。
  4. 安全性:Zuul 可以通过配置路由规则、自定义过滤器等方式实现安全相关的功能,如:身份认证、请求限流、防止恶意攻击等。

 

Spring Cloud Eureka

Eureka 是一个服务注册与发现框架,它允许微服务在启动时注册自己的网络位置信息,并将这些信息存储在注册中心中,其他微服务可以通过查询注册中心来发现并调用注册的服务。

如下图所示:

SpringCloud最全详解(万字图文总结)

主要解决:

1、服务注册

微服务在启动时向 Eureka 注册中心发送一个注册请求,包含自己的网络位置信息和元数据。

Eureka 接收到注册请求后,将服务实例信息存储在自己的注册表中。

2、服务发现

其他微服务,通过查询 Eureka 注册中心,来获取需要调用的服务实例信息。

Eureka 注册中心维护了一个服务实例的注册表,并通过心跳机制来保持与服务实例的连接。

3、故障转移

Eureka 通过定期发送心跳请求,来监控服务实例的健康状态。

如果某个服务实例长时间未发送心跳或者出现故障,则 Eureka 将其标记为失效,并从注册表中移除。

 

Spring Cloud Ribbon

Ribbon 是Spring Cloud的一个客户端负载均衡器,用于在微服务架构中实现客户端负载均衡。

如下图所示:

SpringCloud最全详解(万字图文总结)

主要解决:

1、负载均衡

Ribbon 可以根据一定的负载均衡策略,(如:轮询、随机、响应时间加权。。。等),将请求分发到多个服务实例上,从而提高系统的整体性能。

2、容错处理

Ribbon 支持对后端服务实例进行健康检查,并自动剔除不健康的服务实例,同时将请求路由到健康的服务实例上,提高系统的可用性和容错性。

3、服务发现

Ribbon 可以与服务注册中心(如 Eureka)集成,从注册中心获取可用的服务实例列表。

然后,根据负载均衡策略选择合适的服务实例,进行请求转发。

 

Spring Cloud Feign

Feign 是一个声明式的 HTTP 客户端框架,用于简化开发者调用 HTTP API 的过程。

如下图所示:

SpringCloud最全详解(万字图文总结)

主要解决:

1、简化 HTTP 调用

Feign 提供了一种简洁、优雅的方式来定义和调用 HTTP API,开发者只需要通过注解描述,而无需手动构造 HTTP 请求和解析 HTTP 响应。

2、集成服务发现

Feign 可以与服务注册中心(如 Eureka)集成,从注册中心获取服务实例列表,并自动进行负载均衡和容错处理,从而实现对服务实例的动态发现和调用。

3、与 Ribbon 集成

Feign 默认集成了 Ribbon 客户端负载均衡器,可以与 Ribbon 结合使用,根据一定的策略选择合适的服务实例进行请求转发。

 

Spring Cloud Hystrix

Hystrix 是一个用于处理延迟和容错的库,它提供了线程隔离、超时机制、降级策略、熔断器等多种功能,用于构建分布式系统中的弹性和容错机制。

如下图所示:

SpringCloud最全详解(万字图文总结)

Hystrix 通过隔离服务之间的调用,避免了由于某个服务故障导致整个系统的崩溃。

以及,当依赖服务出现故障或延迟时,Hystrix 可以通过提供备用的降级逻辑来保证系统的可用性,防止错误信息直接传递给用户。

并且,Hystrix 通过监控服务调用的情况,当服务调用失败率达到一定阈值时。

自动触发熔断机制,暂时中断对故障服务的调用,从而避免系统的雪崩效应。

 

Spring Cloud Config

Spring Cloud Config 是 Spring Cloud 生态系统中的一个组件,用于集中式地管理应用程序的配置信息。

如下图所示:

SpringCloud最全详解(万字图文总结)

主要解决:

  1. 集中式配置管理:Spring Cloud Config 允许开发者将应用程序的配置信息集中存储在外部配置中心,统一管理和维护。
  2. 动态更新配置:Spring Cloud Config Server 提供了动态刷新配置的功能,当配置信息发生变化时,微服务应用可以通过触发刷新事件来动态更新配置,无需重启应用。
  3. 版本控制:Spring Cloud Config 支持将配置信息存储在版本控制系统中(如 Git),可以对配置信息进行版本控制、回滚和审计。

 

Spring Cloud Sleuth

Sleuth 是 Spring Cloud 生态系统中的一个分布式追踪解决方案,用于帮助开发者跟踪微服务架构中的请求链路。

SpringCloud最全详解(万字图文总结)

主要解决:

  1. 请求追踪:Sleuth 为每个请求生成唯一的追踪 ID,并将这个 ID 传播到整个请求链路中的各个微服务中,从而帮助开发者跟踪请求的调用路径和执行情况。
  2. 性能监控:Sleuth 可以记录请求在微服务架构中的整体执行时间和耗时,帮助开发者发现性能瓶颈和优化空间。
  3. 故障定位:当系统出现异常或故障时,Sleuth 可以帮助开发者快速定位问题,找出导致异常的具体服务和接口。

 

 

Spring Cloud原理架构

Spring Cloud原理架构,如下图所示:

SpringCloud最全详解(万字图文总结)
通过这张图,可以比较清楚的了解到Spring Cloud组件,以及运行机制:

第一步:请求统一通过API网关Zuul来访问内部服务;

第二步:网关接收到请求后,从注册中心Eureka获取可用服务;

第三步:由Ribbon进行均衡负载后,分发到后端具体实例;

第四步:微服务之间通过Feign进行通信处理业务;

第五步:Hystrix负责处理服务超时熔断;

第六步:Turbine监控服务间的调用和熔断相关指标。

以上就是Spring Cloud详解,更多Spring Cloud请查看:Spring Cloud Alibaba详解(史上最全组件文档教程)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧