Spring Cloud - 简介

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


微服务架构

微服务架构是一种应用程序开发风格,其中应用程序被分解为小服务,这些服务之间存在松散耦合。 以下是使用微服务架构的主要优势 −

  • 易于维护 − 微服务规模很小,应该只处理单个业务任务。 因此,它们易于开发和维护。

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

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


Spring Boot

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

  • 很容易理解和开发一个 Spring 应用程序

  • 提高生产力

  • 缩短开发时间

有关 Spring Boot 的更多信息,请访问 −Spring Boot


Spring Cloud

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 Cloud 组件

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

问题 组件
分布式云配置 Spring Cloud Configuration, Spring Cloud Zookeeper, Spring Consul Config
分布式消息 Spring Stream with Kafka, Spring Stream with 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 一起使用。