Spring Cloud 组件

以下是几个组件:

  • 配置(Configuration)
  • 服务发现(Service Discovery)
  • 断路器(Circuit Breakers)
  • 路由和消息传递(Routing and Messaging)
  • API 网关(API Gateway)
  • 追踪(Tracing)
  • 持续集成流水线和测试(CI Pipeline and Testing)

配置(Configuration)

Spring Cloud 配置组件为分布式系统中的服务器端和客户端提供了外部化配置的支持。我们可以通过配置服务器来管理应用程序在所有环境中的外部属性。Spring Cloud 配置服务器可以使用 Git、SVN(Apache Subversion)、文件系统和 Vault 来存储配置。配置客户端(微服务应用)在启动时从服务器检索配置。

components-of-spring-cloud.png

服务发现(Service Discovery)

服务发现是自动检测网络上的设备和服务。换句话说,服务发现是应用程序和微服务在分布式环境中连接的方式。服务发现的实现包括两种模式:

  • 客户端发现(Client-side discovery):在客户端发现中,客户端负责确定可用服务的网络位置。客户端使用负载均衡算法选择一个可用服务,并发出请求。Netflix OSS 是客户端发现模式的一个示例。
  • 服务器端发现(Server-side discovery):在服务器端发现中,客户端通过负载均衡器向服务发出 HTTP 请求。负载均衡器联系服务注册表,并将每个请求路由到可用的服务实例。

components-of-spring-cloud2.png

与客户端发现类似,服务实例在服务注册表中注册和注销。AWS ELB(弹性负载均衡器)是服务器端发现的一个示例。ELB 在来自互联网的外部流量上进行负载均衡。

断路器(Circuit Breakers)

Netflix 创建了一个名为 Hystrix 的库,它实现了断路器模式。断路器计算何时打开和关闭电路,以及在发生故障时应采取的措施。当所有服务在某个时刻都失败时,断路器会优雅地处理这些故障。断路器有三种状态:打开(OPEN)关闭(CLOSED)半开(HALF-OPEN)

components-of-spring-cloud3.png

CLOSED 状态:如果断路器处于 CLOSED 状态,并且所有调用都会传递到供应商微服务。它的响应没有任何延迟。

components-of-spring-cloud4.png

OPEN 状态:断路器返回错误调用而不执行函数。

components-of-spring-cloud5.png

HALF-OPEN 状态:当函数执行超时时,电路转入 HALF-OPEN 状态。 它测试潜在的问题是否仍然存在。 它是一种监控和反馈机制。 它会尝试调用供应商微服务以检查其是否已恢复。 如果对供应商的调用超时,则电路保持在开路状态。 如果调用返回成功,则电路切换到 CLOSED 状态。 在 HALF-OPEN 状态期间,断路器将所有外部调用返回到服务并出现错误。

components-of-spring-cloud6.png

路由和消息传递(Routing and Messaging)

云应用程序由许多微服务组成,因此通信将是关键性的。Spring Cloud 支持通过消息传递或 HTTP 请求进行通信。路由使用 Netflix RibbonOpenFeign,而消息传递则使用 Kafka 或 Rabbit MQ。

components-of-spring-cloud7.png

API 网关(API Gateway)

API 网关允许我们将 API 请求(外部或内部)路由到连接的服务。它还提供了在 Spring MVC 顶部构建 API 网关的库。其目标是为它们提供横切关注点,如安全性监控

components-of-spring-cloud8.png

追踪(Tracing)

Spring Cloud 的另一个功能是分布式追踪。追踪是为了从应用程序获取数据的单个请求。追踪会导致大量请求传递到各种微服务。

我们可以在项目中添加 Spring Cloud Sleuth 库以启用追踪。Sleuth 负责记录时序,用于延迟分析。我们可以将此时序导出到 Zipkin。

持续集成流水线和测试(CI Pipeline and Testing)

Spring Cloud 流水线是适用于 Jenkins 和 Concourse 的自命不凡(自大)的流水线,它会自动为应用程序创建流水线。在各种服务中进行构建、测试和部署对于成功的云原生应用程序非常关键。

Jenkins 流水线提供了一组工具,旨在将简单和更高级的交付流程建模为代码。流水线的定义写入名为 Jenkinsfile 的文本文件中。流水线有两种语法:声明性脚本化。这些语法分为两部分:步骤(Steps)和阶段(Stages)。步骤是流水线的基本部分,它们告诉 Jenkins 服务器要做什么。阶段是流水线的主要部分。阶段在逻辑上将一些步骤分组在一起,这些步骤在流水线的结果屏幕上显示。

标签: spring, Spring教程, spring cloud, spring cloud教程, spring cloud框架, spring cloud面试题, springcloud组件, springcloud微服务架构, springcloud入门教程, springcloud主件, spring cloud架构图