更新时间:2021-12-28 11:00:43 来源:极悦 浏览1722次
在本文中,我们重点介绍 Spring Cloud。我们谈论其保护伞下的各种组件。
Spring Cloud 是什么。
微服务架构中的典型挑战。
Spring Cloud 解决的挑战。
Spring Cloud 保护伞下的重要项目。
Spring Cloud 如何帮助您构建微服务架构。
云与微服务简介:挑战与优势
这是关于云和微服务的五篇系列文章中的第二篇。第 1 部分可以在这里找到:
Miroservices 架构和云快速介绍:为什么、什么和如何
如果你去Spring Cloud的主页,你会看到以下内容:
Spring Cloud 为开发者提供了快速构建分布式系统中一些常用模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态) - Spring Cloud DocsSpring Cloud 不是单个项目,而是它们的集群。
下面显示的只是这个保护伞下存在的项目的一小部分示例。
下面简单介绍一下 Spring Cloud 保护伞下的一些重要项目
Netflix 是最早使用微服务架构的组织之一。在这个项目下,大量的项目已经开源供公众使用。Eureka、Hystrix 和 Zuul 是其中比较受欢迎的。
这个项目提供了一个集中配置管理的框架,使用了一个 Git 或一个 SVN 存储库。
这使微服务和基础设施组件能够在分布式设置中相互通信。
现在让我们来看看我们在开发微服务应用程序时面临的挑战,以及 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 网关为此类挑战提供了很好的解决方案。
Netflix Zuul API 网关是实现 API 网关的绝佳解决方案。
如果微服务宕机了怎么办?其他微服务如何响应?
Hystrix 有助于提高微服务的容错能力。
在本文中,我们查看了 Spring Cloud 项目,并看到它是各种项目的保护伞。每一个都解决了与微服务相关的特定问题。重要的问题包括服务注册、服务发现、负载分配、事件跟踪、服务监控和容错。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习