【Spring Cloud 初探幽】

简介: 【Spring Cloud 初探幽】

1.什么是Spring Cloud

1.1 Spring Cloud 框架为开发人员提供了快速构建健壮云应用程序的工具。我们还可以构建基于微服务的应用程序,例如配置管理、服务发现、断路器、智能路由、集群状态、微代理、控制总线、一次性令牌等。使用 Spring Cloud,开发人员可以快速开发实现设计模式的服务和应用程序。这些模式在任何分布式环境中都能很好地工作,包括裸金属数据中心、开发人员的笔记本电脑以及托管平台如 Cloud Foundry。

1.2裸金属数据中心:这是一台专用于单租户(租用服务器的人)的物理服务器。这些服务器不在客户之间共享。租户可以根据其对性能、安全性和可靠性的需求优化性能。裸金属数据中心也被称为单租户物理服务器或托管专用服务器。操作系统直接安装在裸金属服务器上,提供更好的性能。

1.3Cloud Foundry:Cloud Foundry 是一个开源的多云平台即服务(PaaS)平台。您可以将应用程序部署到自己的计算基础设施上。

2.Spring Cloud特点

Spring Cloud 的一个伟大之处在于它构建在 Spring Boot 的概念之上。Spring Cloud 是建立在 Spring 框架的一些常见构建块之上的,这些构建块如下:

1.智能路由和服务发现

2.服务间调用

3.负载均衡

4.领导选举

5.全局锁

6.分布式配置

7.分布式消息传递

2.1服务间调用

这是“微服务如何通过服务注册表或 Eureka 服务器与其他依赖的微服务进行通信”的过程。服务间调用遵循一系列的步骤。

1.注册服务

2.获取注册表

3.查找下游服务

4.解析底层 IP 地址

5.调用 REST 终端点

2.2负载均衡

负载均衡有效地将网络流量分布到多个后端服务器或服务器池。负载均衡的目标是最大化吞吐量,最小化响应时间,提高效率,并优化资源使用。它避免了任何单个资源的过载。使用具有负载均衡的多个组件可以通过冗余性增加可靠性和可用性。

2.3领导选举

领导选举允许应用程序通过第三方系统与其他应用程序一起工作。领导选举用于在不牺牲可用性的情况下提供全局状态或全局排序。

2.4全局锁

全局锁用于确保没有两个线程同时访问同一资源。程序员使用一种机制来消除这种情况,这称为锁。每个线程首先获取锁,对资源进行操作,然后释放锁供其他线程使用。

2.5分布式配置

分布式配置是为所有微服务的每个实例进行配置的过程。"Spring Cloud Config 服务器"为分布式系统中的外部化配置提供了客户端支持。通过分布式配置,我们有一个集中的位置来管理所有环境中应用程序的外部属性。

2.6分布式消息传递

分布式消息传递系统具有可靠性、可伸缩性和持久性的优点。消息传递模式遵循发布-订阅(Pub-Sub)模型。在发布-订阅模型中,消息的发送者称为发布者,消息的接收者称为订阅者。Apache Kafka 和 RabbitMQ 是流行的高吞吐量消息传递系统。

3.Spring Cloud组件

3.1配置(Configuration)

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

3.2服务发现(Service Discovery)

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

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

服务器端发现(Server-side discovery):在服务器端发现中,客户端通过负载均衡器向服务发出 HTTP 请求。负载均衡器联系服务注册表,并将每个请求路由到可用的服务实例。

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

3.3断路器(Circuit Breakers)

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

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

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

3.6HALF-OPEN 状态

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

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

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

3.8API 网关(API Gateway)

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

3.9追踪(Tracing)

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

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

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

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

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


相关文章
|
2天前
|
消息中间件 Java 数据安全/隐私保护
Spring Cloud 项目中实现推送消息到 RabbitMQ 消息中间件
Spring Cloud 项目中实现推送消息到 RabbitMQ 消息中间件
|
2天前
|
负载均衡 监控 Java
我把Spring Cloud的超详细资料介绍给你,面试官不会生气吧?geigei
我把Spring Cloud的超详细资料介绍给你,面试官不会生气吧?geigei
|
3天前
|
负载均衡 Java 应用服务中间件
Spring Cloud 负载平衡的意义什么?
负载平衡是指将网络流量在多个服务器之间分布,以达到提高系统性能、增强可靠性和提供更好用户体验的目的。在负载平衡的架构中,多个服务器被组织成一个集群,共同处理用户的请求。
26 4
|
4天前
|
监控 安全 Java
Spring cloud原理详解
Spring cloud原理详解
18 0
|
4天前
|
安全 Java Docker
|
4天前
|
Java 开发者 微服务
Spring Cloud原理详解
【5月更文挑战第4天】Spring Cloud是Spring生态系统中的微服务框架,包含配置管理、服务发现、断路器、API网关等工具,简化分布式系统开发。核心组件如Eureka(服务发现)、Config Server(配置中心)、Ribbon(负载均衡)、Hystrix(断路器)、Zuul(API网关)等。本文讨论了Spring Cloud的基本概念、核心组件、常见问题及解决策略,并提供代码示例,帮助开发者更好地理解和实践微服务架构。此外,还涵盖了服务通信方式、安全性、性能优化、自动化部署、服务网格和无服务器架构的融合等话题,揭示了微服务架构的未来趋势。
38 6
|
4天前
|
JSON Java Apache
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
|
4天前
|
负载均衡 Java 开发者
Spring Cloud:一文读懂其原理与架构
Spring Cloud 是一套微服务解决方案,它整合了Netflix公司的多个开源框架,简化了分布式系统开发。Spring Cloud 提供了服务注册与发现、配置中心、消息总线、负载均衡、熔断机制等工具,让开发者可以快速地构建一些常见的微服务架构。
|
4天前
|
消息中间件 Java RocketMQ
Spring Cloud RocketMQ:构建可靠消息驱动的微服务架构
【4月更文挑战第28天】消息队列在微服务架构中扮演着至关重要的角色,能够实现服务之间的解耦、异步通信以及数据分发。Spring Cloud RocketMQ作为Apache RocketMQ的Spring Cloud集成,为微服务架构提供了可靠的消息传输机制。
30 1
|
4天前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo: 微服务通信的高效解决方案
【4月更文挑战第28天】在微服务架构的发展中,服务间的高效通信至关重要。Spring Cloud Dubbo 提供了一种基于 RPC 的通信方式,使得服务间的调用就像本地方法调用一样简单。本篇博客将探讨 Spring Cloud Dubbo 的核心概念,并通过具体实例展示其在项目中的实战应用。
22 2