专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 SpringCloud组件详解

SpringCloud组件详解

更新时间:2021-09-29 08:06:58 来源:赢咖4 浏览1037次

SpringCloud有以下组件:

配置

服务发现

断路器

路由和消息传递

API网关

追踪

CI 管道和测试

配置

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

服务发现

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

在中央服务器维护地址的全局视图。

连接到中央服务器的客户端可以更新和检索地址。

有两种发现模式:客户端发现和服务器端发现。

客户端发现:在客户端发现中,客户端负责确定可用服务的网络位置。客户端使用负载平衡算法来选择可用服务之一并发出请求。Netflix OSS是客户端发现模式的一个示例。

服务器端发现:在服务器端发现中,客户端通过负载均衡器向服务发出 HTTP 请求。负载均衡器联系服务注册中心并将每个请求路由到可用的服务实例。与客户端发现类似,服务实例在服务注册表中注册和注销。的AWS ELB(弹性负载均衡)是服务器端发现的一个例子。ELB 平衡来自互联网的外部流量。

断路器

Netflix 创建了一个名为Hystrix的库。它实现了断路器模式。断路器计算何时打开和关闭电路以及在发生故障时该怎么做。当所有服务在某个时刻出现故障时,断路器会优雅地处理这些故障。断路器具有三种状态:OPEN、CLOSED和HALF-OPEN状态。

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

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

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

路由和消息传递

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

API网关

API Gateway 允许我们路由 API 请求(外部或内部)以连接服务。它还提供了一个用于在 Spring MVC 之上构建 API 网关的库。它的目标是为他们提供跨领域的关注,例如安全和监控。

API网关的特点

基于 Spring 框架 5、项目反应器和 Spring Boot 2.0

能够在任何请求的属性上匹配路由

谓词和过滤器特定于路由

Hystrix 断路器集成

Spring Cloud Discovery 客户端集成

易于编写谓词和过滤器

请求速率限制

路径重写

追踪

Spring Cloud 的其他功能是分布式跟踪。跟踪是从应用程序获取数据的单个请求。跟踪导致对各种微服务的请求数量呈指数级增长。

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

Zipkin 是一个分布式追踪工具,专门用于分析微服务架构内部的延迟问题。它公开用于收集输入数据的 HTTP 端点。如果我们需要在我们的项目中添加跟踪,我们应该添加spring-cloud-starter-zipkin依赖项。

在微服务中,输入的流量如此之大,所以我们不能只收集一定数量的数据。为此,Spring Cloud Sleuth 提供了一个采样策略。采样策略允许我们将多少输入流量发送到 Zipkin 进行分析。要启用此功能,我们必须添加spring-cloud-sleuth-stream依赖项。

Cl 管道和测试

Spring Cloud 管道是 Jenkins 和 Concourse 的一个自以为是的(自我重要的)管道,它为应用程序自动创建管道。在各种服务中构建、测试和部署对于成功的云原生应用程序至关重要。

Jenkins 管道提供了一组工具,旨在将简单和更高级的交付管道建模为代码。管道的定义被写入一个名为 Jenkinsfile 的文本文件中。

管道有两种语法:声明式和脚本式管道。这些语法分为两部分:步骤和阶段。步骤是管道的基本部分,因为它们告诉 Jenkins 服务器要做什么。阶段是管道的主要部分。阶段在逻辑上将几个步骤组合在一起,这些步骤显示在管道的结果屏幕上。

如果想了解更多相关知识,大家不妨来关注一下赢咖4的SpringCloud教程,教程内容全面,适合初学者的小白学习,希望对大家能有所帮助哦。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>