Spring Cloud 简明教程

Spring Cloud - Introduction

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

Microservice Architecture

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

  1. Easy to maintain − 微服务体积小,只需要处理单一业务任务。因此,它们易于开发和维护。

  2. Independent Scaling & Deployment − 微服务有其独立的部署模式和节奏。因此,每个服务可以根据该服务需要满足的负载进行扩展。每个服务都可以根据其计划进行部署。

  3. Independent Technology Usage − 微服务将其代码库与部署环境分离,因此,微服务需要使用的语言和技术可以根据用例决定。所有微服务都无需使用通用堆栈。

有关微服务架构的更多详细信息,请访问 Microservice Architecture

Spring Boot

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

  1. 理解并开发 Spring 应用程序非常容易

  2. Increases productivity

  3. Reduces the development time

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

Spring Cloud

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

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

  1. Distributed Messaging

  2. Load Balancing

  3. Circuit Breakers

  4. Routing

  5. Distributed Logging

  6. Service Registration

  7. Distributed Lock

  8. Centralized Configuration

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

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

Benefits of Using Spring Cloud

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

  2. Quick Development Time − 由于开发人员可以免费获得样板,因此他们可以在维护代码质量的同时快速交付所需的项目。

  3. Easy to use − Spring Cloud 项目可以轻松地与现有的 Spring 项目集成。

  4. Active Project − Spring Cloud 由 Spring 背后的公司 Pivotal 积极维护。因此,我们只需升级 Spring Cloud 版本即可免费获得所有新功能和错误修复。

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

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

  2. 多项服务如何相互通信,即使用什么协议?

  3. 如何监测我们环境中的各种服务?

  4. 我们如何使用服务实例分发服务的配置?

  5. 出于调试目的,我们如何关联跨服务的调用?

  6. and so on…

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

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

Spring Cloud Components

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

Problem

Components

Distributed Cloud Configuration

Spring Cloud 配置、Spring Cloud Zookeeper、Spring Consul 配置

Distributed Messaging

Spring Stream 与 Kafka、Spring Stream 与 RabbitMQ

Service Discovery

Spring Cloud Eureka、Spring Cloud Consul、Spring Cloud Zookeeper

Logging

Spring Cloud Zipkin、Spring Cloud Sleuth

Spring Service Communication

Spring Hystrix、Spring Ribbon、Spring Feign、Spring Zuul

我们将在接下来的章节中研究其中的几个组件。

Difference between Spring Cloud and Spring Boot

这是在开始使用 Spring Cloud 时出现的一个非常常见的问题。实际上,这里不存在比较。Spring Cloud 和 Spring Boot 都用于实现不同的目标。

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

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

事实上,为了获得更少开发时间等最大收益,建议将 Spring Boot 与 Spring Cloud 一起使用。