Spring Cloud - 简介


在介绍 Spring Cloud 之前,我们先简要概述一下微服务架构以及 Spring Boot 在创建微服务中的作用。

微服务架构

微服务架构是一种应用程序开发风格,其中应用程序被分解为小型服务,并且这些服务之间具有松散耦合。以下是使用微服务架构的主要优点 -

  • 易于维护- 微服务规模较小,应该只处理单一业务任务。因此,它们的开发和维护都很简单。

  • 独立的扩展和部署- 微服务有其各自的部署模式和节奏。因此,每个服务都可以根据该服务应满足的负载进​​行扩展。每个服务都可以根据其时间表进行部署。

  • 独立的技术使用- 微服务的代码库与部署环境分离,因此可以根据用例决定微服务需要使用的语言和技术。无需在所有微服务中使用通用堆栈。

有关微服务架构的更多详细信息,请参阅微服务架构

春季启动

Spring Boot 是一个基于 Java 的框架,用于创建微服务架构中使用的微服务。它进一步缩短了开发 Spring 应用程序所需的时间。以下是它提供的主要好处 -

  • 易于理解和开发 Spring 应用程序

  • 提高生产力

  • 减少开发时间

有关 Spring Boot 的更多信息可以在以下位置找到:Spring Boot

春云

Spring Cloud 提供了一组可用于在云中构建分布式应用程序的组件。我们可以自己开发这些组件,但这会浪费时间来开发和维护这个样板代码。

这就是 Spring Cloud 发挥作用的地方。它为分布式环境中观察到的常见问题提供了即用型云模式。它试图解决的一些模式是 -

  • 分布式消息传递

  • 负载均衡

  • 断路器

  • 路由

  • 分布式日志记录

  • 服务注册

  • 分布式锁

  • 集中配置

这就是为什么它成为开发需要高可扩展性、性能和可用性的应用程序的非常有用的框架。

在本教程中,我们将介绍上面列出的 Spring Cloud 组件。

使用 Spring Cloud 的好处

  • 开发人员专注于业务逻辑- Spring Cloud 提供了所有样板代码来实现云的常见设计模式。因此,开发人员可以专注于业务逻辑,而无需开发和维护此样板代码。

  • 快速开发时间- 由于开发人员免费获得样板,他们可以快速交付所需的项目,同时保持代码质量。

  • 易于使用- Spring Cloud 项目可以轻松地与现有 Spring 项目集成。

  • 活跃项目- Spring Cloud 由 Spring 背后的公司 Pivotal 积极维护。因此,我们只需升级 Spring Cloud 版本即可免费获得所有新功能和错误修复。

微服务架构具有多重优势;然而,它最关键的缺点之一是它在分布式环境中的部署。对于分布式系统,我们有一些经常出现的常见问题,例如 -

  • 服务A如何知道在哪里联系服务B,即服务B的地址?

  • 多个服务如何相互通信,即使用什么协议?

  • 我们如何监控环境中的各种服务?

  • 我们如何将服务的配置分配给服务实例?

  • 我们如何链接跨服务传输的调用以进行调试?

  • 等等…

这些是 Spring Cloud 试图解决并提供通用解决方案的一系列问题。

虽然Spring Boot用于快速应用程序开发,但将其与 Spring Cloud 一起使用可以减少集成我们在分布式环境中开发和部署的微服务的时间。

Spring 云组件

现在让我们看一下Spring Cloud提供的各种组件以及这些组件解决的问题

问题 成分
分布式云配置 Spring Cloud 配置、Spring Cloud Zookeeper、Spring Consul 配置
分布式消息传递 Spring Stream 与 Kafka、Spring Stream 与 RabbitMQ
服务发现 Spring Cloud Eureka、Spring Cloud Consul、Spring Cloud Zookeeper
记录 Spring Cloud Zipkin、Spring Cloud Sleuth
Spring服务通讯 Spring Hystrix、Spring Ribbon、Spring Feign、Spring Zuul

我们将在接下来的章节中介绍其中的一些组件。

Spring Cloud 和 Spring Boot 的区别

这是在开始使用 Spring Cloud 时出现的一个非常常见的问题。其实,这里没有可比性。Spring Cloud 和 Spring Boot 都用于实现不同的目标。

Spring Boot 是一个用于更快的应用程序开发的 Java 框架,专门用于微服务架构。

Spring Cloud用于集成这些微服务,使它们可以轻松地在分布式环境中协同工作并相互通信

事实上,为了获得最大的好处,例如减少开发时间,建议将 Spring Boot 与 Spring Cloud 一起使用。