SpringCloud微服务

Spring Cloud组件

Spring Cloud有以下组件:
配置 服务发现 熔断器 路由和消息传递 API网关 追踪 CI管道和测试

配置

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

服务发现

服务发现是通过网络自动检测设备和服务。换句话说,服务发现是应用程序和微服务在分布式环境中的连接方式。服务发现实现包括以下两种:
中央服务器,用于维护地址的全局视图。 连接到中央服务器的客户端可以更新和检索地址。
两种发现模式: 客户端发现服务器端发现
客户端发现: 在客户端发现中,客户端负责确定可用服务的网络位置。客户端使用负载平衡算法选择可用的服务之一并发出请求。 Netflix OSS 是客户端发现模式的示例。 服务器端发现: 在服务器端发现中,客户端通过负载平衡器向服务发出HTTP请求。负载平衡器联系服务注册表,并将每个请求路由到可用的服务实例。与客户端发现类似,服务实例是通过服务注册表注册和注销的。 AWS ELB (弹性负载平衡器)是服务器端发现的示例。 ELB平衡了来自互联网的外部流量。 Spring Cloud Components
在上图中,生产者是一个向以下对象发送消息的软件消息代理(服务注册表)。消费者也是一种接收消息并对其进行处理的软件。

熔断器

Netflix已经创建了一个名为 Hystrix 的库。它实现了熔断器模式。熔断器计算何时打开和闭合电路以及在发生故障时应采取的措施。当所有服务都在某个时刻失败时,熔断器会优雅地处理这些失败。熔断器具有三个状态: 打开,闭合半打开状态。
Spring Cloud Components
闭合状态: 如果熔断器处于"闭合"状态,并且所有呼叫都传递到供应商微服务。它响应没有任何延迟。
Spring Cloud Components
打开状态: 熔断器未执行功能便返回错误调用。
Spring Cloud Components
半开状态: 当功能执行 超时时,电路变为半开状态。它测试基本问题是否仍然存在。这是一种 监视反馈机制。它会尝试致电供应商微服务以检查其是否已恢复。如果与供应商的呼叫超时,则电路将保持在 OPEN 状态。如果呼叫成功返回,则电路切换到 CLOSED 状态。熔断器在 HALF-OPEN 状态期间将所有外部调用返回给服务,并显示错误。
Spring Cloud Components

路由和消息传递

云应用程序由许多微服务组成,因此通信至关重要。 Spring Cloud支持通过消息传递或HTTP请求进行通信。路由使用 Netflix Ribbon Open Feign ,而消息传递使用Kafka或Rabbit MQ。
Spring Cloud Components

API网关

API网关允许我们路由API请求(外部或内部)以连接服务。它还提供了一个用于在Spring MVC顶部构建API网关的库。其目的是向他们提供跨领域的问题,例如 安全监控
API网关的功能
基于Spring框架5,项目反应器和Spring Boot 2.0 能够匹配任何请求属性上的路由 谓词和过滤器特定于路线 Hystrix熔断器集成 Spring Cloud Discovery客户端集成 易于编写谓词和过滤器 请求速率限制 路径重写 Spring Cloud Components

跟踪

Spring Cloud的其他功能是 分布式跟踪。跟踪是从应用程序获取数据的单个请求。跟踪导致对各种微服务的请求数量成倍增加。
我们可以在项目中添加 Spring Cloud Sleuth 库以启用跟踪。 Sleuth负责记录 定时,该记录用于 延迟分析。我们可以将此计时导出到Zipkin。
Zipkin是专门为微服务体系结构中的 分析延迟问题而设计的分布式跟踪工具。它公开了用于收集输入数据的HTTP端点。如果需要在项目中添加跟踪,则应添加 spring-cloud-starter-zipkin 依赖项。
在微服务中,输入流量非常高,因此我们无法收集仅特定数量的数据。为此,Spring Cloud Sleuth提供了 采样策略。采样策略允许我们将多少输入流量发送到Zipkin进行分析。要启用此功能,我们必须添加 spring-cloud-sleuth-stream 依赖项。

Cl管道和测试

Spring对于Jenkins和Concourse,云管道是一个自以为是的(非常重要的)管道,它会为应用程序自动创建管道。在各种服务中进行构建,测试和部署对于拥有成功的云原生应用程序至关重要。
Jenkins管道提供了一组工具,旨在将简单,更高级的交付管道建模为代码。管道的定义被写入名为Jenkinsfile的文本文件中。
管道具有 两种语法: 声明性脚本化管道。这些语法分为两部分: 步骤和阶段。 步骤是管道的基本部分,因为它们告诉Jenkins服务器要做什么。 阶段是管道的主要部分。阶段在逻辑上将几个步骤分组,这些步骤显示在管道的结果屏幕上。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4