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