📅  最后修改于: 2021-01-11 02:10:51             🧑  作者: Mango
包含以下组件:
Spring Cloud配置组件为分布式系统中的外部化配置提供服务器端和客户端支持。我们可以使用配置服务器为所有环境中的应用程序管理外部属性。 Spring Cloud配置服务器可以使用Git,SVN(Apache Subversion),文件系统和Vault来存储配置。配置客户端(微服务应用程序)在启动时会从服务器检索配置客户端。
服务发现是通过网络自动检测设备和服务。换句话说,服务发现是应用程序和微服务在分布式环境中的连接方式。服务发现实现包括:
有两种发现模式:客户端发现和服务器端发现。
在上图中,生产者是一种将消息发送到消息代理(服务注册表)的软件。使用者也是一种接收消息并对其进行处理的软件。
Netflix创建了一个名为Hystrix的库。它实现了断路器模式。断路器计算何时打开和闭合电路以及在发生故障时应采取的措施。当所有服务都在某个时刻失败时,断路器会优雅地处理这些失败。断路器具有三个状态:“打开”,“闭合”和“半打开”状态。
CLOSED状态:如果断路器处于CLOSED状态,并且所有呼叫都转到供应商微服务。它响应没有任何延迟。
断开状态:断路器不执行函数返回错误呼叫。
半开状态:当函数执行超时时,电路变为半开状态。它测试基本问题是否仍然存在。它是一种监视和反馈机制。它会尝试致电供应商微服务以检查其是否已恢复。如果对供应商的呼叫超时,则电路将保持在OPEN状态。如果呼叫成功返回,则电路切换到CLOSED状态。断路器在HALF-OPEN状态期间将所有外部呼叫返回给服务,但有错误。
云应用程序由许多微服务组成,因此通信至关重要。 Spring Cloud支持通过消息传递或HTTP请求进行通信。路由使用Netflix Ribbon和Open Feign,而消息传递则使用Kafka或Rabbit MQ。
API网关允许我们路由API请求(外部或内部)以连接服务。它还提供了一个用于在Spring MVC顶部构建API网关的库。其目的是向他们提供跨领域的关注,例如安全和监视。
API网关的功能
Spring Cloud的其他功能是分布式跟踪。跟踪是从应用程序获取数据的单个请求。跟踪导致对各种微服务的请求数量成倍增加。
我们可以在项目中添加Spring Cloud Sleuth库以启用跟踪。 Sleuth负责记录时序,用于进行延迟分析。我们可以将此时间导出到Zipkin。
Zipkin是专门设计用于分析微服务架构内部的延迟问题的分布式跟踪工具。它公开了用于收集输入数据的HTTP端点。如果需要在项目中添加跟踪,则应添加spring-cloud-starter-zipkin依赖项。
在微服务中,输入流量非常大,因此我们无法仅收集特定数量的数据。为此,Spring Cloud Sleuth提供了一个采样策略。采样策略允许我们将多少输入流量发送到Zipkin进行分析。要启用此功能,我们必须添加spring-cloud-sleuth-stream依赖项。
Spring Cloud管道是Jenkins和Concourse的自以为是的(非常重要的)管道,它会自动为应用程序创建管道。在各种服务中进行构建,测试和部署对于拥有成功的云原生应用程序至关重要。
Jenkins管道提供了一组工具,用于将简单和更高级的交付管道建模为代码。管道的定义被写入一个名为Jenkinsfile的文本文件中。
管道具有两种语法:声明式和脚本化管道。这些语法分为两部分:步骤和阶段。步骤是管道的基本部分,因为它们告诉Jenkins服务器要做什么。阶段是管道的主要部分。阶段在逻辑上将几个步骤分组,这些步骤显示在管道的结果屏幕上。