6大SpringCloud组件详解(图文全面总结)
来源:mikechen的互联网架构
微服务是非常重要的分布式系统,其中SpringCloud是典型微服务代表,而且大厂也经常考察,下面重点详解6大SpringCloud组件
Spring Cloud
Spring Cloud ,是基于 SpringBoot框架 的一个开源微服务框架,提供了一整套的微服务解决方案。
Spring Cloud 提供了集成了 Eureka、Hystrix、Zuul ...等组件,来实现微服务的整套方案。
如下图所示:
Eureka
Eureka是Spring Cloud 的注册中心,为微服务架构提供了高效、可靠的服务注册与发现解决方案。
如下图所示:
服务注册组件,负责接收服务实例的注册请求,并将注册信息存储在注册表中。
当服务实例启动时,它会向 Eureka 服务器发送注册请求,包含自己的服务信息,例如:服务名称、IP 地址、端口号、健康状态等。
Eureka 主要包括两个组件:Eureka 服务器和 Eureka 客户端。
1.Eureka 服务器
Eureka 服务器是一个中心化的服务注册中心,用于管理和维护所有注册到系统中的微服务实例的信息。
它负责接收来自客户端的注册和注销请求,并维护服务实例的健康状态信息。
Eureka 客户端
Eureka 客户端是微服务应用程序中的组件,用于将自己的服务注册到 Eureka 服务器,并从 Eureka 服务器获取其他服务的信息。
客户端还会周期性地向 Eureka 服务器发送心跳信息,以确保自己的健康状态。
当需要调用其他服务时,客户端可以从 Eureka 服务器获取服务的地址信息,并通过负载均衡策略选择合适的服务实例进行调用。
Hystrix
Hystrix 实现了断路器模式,用于防止分布式系统中的级联故障,当服务调用失败率达到阈值时,Hystrix 会打开断路器。
典型的服务雪崩效应的案例,其中一个服务的故障,可能会导致整个系统的级联故障。
如下图所示:
在这种情况下,引入 Hystrix 熔断机制是一个有效的解决方案,可以帮助系统在面对故障时更加健壮和可靠。
当服务的调用失败率达到阈值时,Hystrix 会自动打开断路器,停止向服务发起请求,并执行预定义的降级逻辑。
通过引入 Hystrix 熔断机制,可以有效地防止服务雪崩效应的发生,提高整个系统的稳定性和可靠性。
Zuul
Zuul是Spring Cloud的微服务API网关,Zuul 主要用于实现请求的路由、过滤和监控等功能。
Zuul 的核心原理是基于一系列的过滤器来处理客户端的请求和响应,每个过滤器都负责执行特定的功能,例如:路由、鉴权、限流等。
如下图所示:
Zuul 将这些过滤器组织成一个过滤器链,并按照预先定义的顺序依次执行。
在处理请求的过程中,Zuul 会根据请求的路由规则将请求转发到对应的后端服务,并在响应返回给客户端之前经过一系列的过滤器处理。
总的来说,Zuul 是一个功能强大的 API 网关框架,可以帮助开发人员实现动态路由、负载均衡、安全认证等功能。
Ribbon
Zuul默认和Ribbon结合实现了负载均衡的功能,如下图所示:
Ribbon 支持多种负载均衡算法,包括轮询、随机、加权轮询、加权随机等,根据预定义的算法选择合适的服务实例,并将请求分发到这些实例上。
Spring Cloud Config
Spring Cloud Config 是 Spring Cloud 生态中的一个组件,用于集中管理、和存储微服务架构中的配置信息。
如下图所示:
Spring Cloud Config 允许将应用程序的配置信息集中存储在远程仓库中,包括:应用程序的属性文件、环境变量、数据库连接等。
以及,Spring Cloud Config 支持动态刷新配置,当配置信息发生变化时,可以动态重新加载配置信息等。
Zipkin
Zipkin 是一个强大的分布式跟踪系统,通过收集、存储、和可视化微服务架构中的请求链路数据。
如下图所示:
Zipkin 可以追踪请求在分布式系统中的调用链路,记录每个服务处理请求的时间和耗时情况,帮助开发人员理解系统的工作流程和性能瓶颈。
Zipkin 的原理,主要基于以下几个关键点:
1.跟踪数据收集
Zipkin 使用 Zipkin Collector 收集来自各个微服务的跟踪数据,并将数据存储在 Zipkin Server 中。
2.跟踪数据存储
Zipkin 使用存储后端(如 MySQL、Cassandra、Elasticsearch 等)来存储跟踪数据,以便后续的查询和分析。
跟踪数据通常包括请求的调用链路、服务调用的时间和耗时情况、请求的元数据等信息。
3.请求链路追踪
当一个请求进入系统时,Zipkin 会为该请求生成一个唯一的跟踪 ID,并在请求的每个阶段添加对应的跟踪标记。
当请求经过多个微服务时,每个微服务都会将自己的跟踪数据发送到 Zipkin Collector,Zipkin Server 将这些数据合并成一个完整的请求链路,展示请求在系统中的调用关系和耗时情况。
以上
扫一扫,关注我们