专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 SpringCloud微服务简介

SpringCloud微服务简介

更新时间:2021-12-28 11:00:43 来源:动力节点 浏览1565次

在本文中,我们重点介绍 Spring Cloud。我们谈论其保护伞下的各种组件。

您将学习

Spring Cloud 是什么。

微服务架构中的典型挑战。

Spring Cloud 解决的挑战。

Spring Cloud 保护伞下的重要项目。

Spring Cloud 如何帮助您构建微服务架构。

云与微服务简介:挑战与优势

这是关于云和微服务的五篇系列文章中的第二篇。第 1 部分可以在这里找到:

Miroservices 架构和云快速介绍:为什么、什么和如何

介绍 Spring Cloud

如果你去Spring Cloud的主页,你会看到以下内容:

Spring Cloud 为开发者提供了快速构建分布式系统中一些常用模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态) - Spring Cloud DocsSpring Cloud 不是单个项目,而是它们的集群。

下面显示的只是这个保护伞下存在的项目的一小部分示例。

下面简单介绍一下 Spring Cloud 保护伞下的一些重要项目

Netflix

Netflix 是最早使用微服务架构的组织之一。在这个项目下,大量的项目已经开源供公众使用。Eureka、Hystrix 和 Zuul 是其中比较受欢迎的。

Netflix配置

这个项目提供了一个集中配置管理的框架,使用了一个 Git 或一个 SVN 存储库

Netflix组件

这使微服务和基础设施组件能够在分布式设置中相互通信。

微服务架构中的挑战

现在让我们来看看我们在开发微服务应用程序时面临的挑战,以及 Spring Cloud 为他们提供的解决方案。

配置管理

在具有微服务架构的系统中,存在大量相互通信的小型微服务:

这些微服务中的每一个都需要在多个环境中执行。在给定的环境中,可能有多个运行该微服务的实例。这意味着运维团队需要为每个微服务管理大量的配置信息。

Spring Cloud 提供了一种方法,其中所有微服务的所有跨环境配置都存储在 Git 存储库中。Spring Cloud Config Server 然后将此信息公开给所有微服务。

将配置存储在这样一个集中的位置使运营团队更容易管理应用程序/架构。

动态放大和缩小

考虑以下示例。

CurrencyCalculationService 微服务与另一个微服务 CurrencyExchangeService 对话。当前,正在运行 CurrencyExchangeService 的三个实例。有可能在任何时间点都可以添加更多实例,或者可以删除现有实例。

我们需要 CurrencyCalculationService 能够在当时可用的实例之间分配负载。

需要的是动态找出当时CurrencyExchangeService的实例数,并在它们之间分配负载。

该解决方案涉及多个组件。

服务注册

所有微服务都向命名服务器注册。Spring Boot 提供的选项之一是 Eureka。

服务发现

当任何微服务想要与另一个微服务通信时,它会询问命名服务器。在上面的示例中,CurrencyCalculationService 可以向 Eureka 命名服务器询问正在运行的 CurrencyExchangeService 实例。反过来,命名服务将这些实例的 URL 提供回 CurrencyConversionService。

这有助于在通信微服务的实例之间建立动态关系。

负载均衡

当同一个微服务有多个实例时,你希望在它们之间分配负载。Spring Cloud 提供的选项之一是客户端负载平衡框架 Ribbon。

CurrencyCalculationService 使用 Ribbon 并跨 CurrencyExchangeService 的实例分发请求。

Feign 框架帮助我们编写更简单的 RESTful 客户端。

可见性和监控

在微服务架构中,您需要完全了解微服务中发生的事情。

为了跟踪请求,您需要为其分配一个唯一标识符。Spring Cloud Sleuth 有助于为每个请求分配一个标识符。您可以使用像 Zipkin 这样的分布式跟踪解决方案来跨多个组件跟踪请求。

API网关

所有的微服务都有一些共同的特性——安全性、日志记录、分析等等。实现这些通用功能的最佳位置是什么?

API 网关为此类挑战提供了很好的解决方案。

Netflix Zuul API 网关是实现 API 网关的绝佳解决方案。

容错

如果微服务宕机了怎么办?其他微服务如何响应?

Hystrix 有助于提高微服务的容错能力。

概括

在本文中,我们查看了 Spring Cloud 项目,并看到它是各种项目的保护伞。每一个都解决了与微服务相关的特定问题。重要的问题包括服务注册、服务发现、负载分配、事件跟踪、服务监控和容错。

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

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