Spring Cloud 是面面观

1 前言

在微服务为何如此炙手可热 这篇文章中我们了解到:微服务是分布式系统设计和架构的理念之一。但是从微服务的风格来看,它并不是为了克服所有的分布式系统的缺陷而设计的,而是为了追求更高的可读性、可用性和简易性。但与此同时,也弱化了其一致性,正如这句老话——“两害相较取其轻者”。

实现微服务需要大量的软件,而这些软件是十分复杂的。不论国内还是国外,都为分布式系统做了大量的尝试,积累了丰富的成果。其中两个最流行的开源工具是:国内阿里巴巴的Dubbo和国外由Pivotal团队开发的Spring Cloud。

2 什么是Spring Cloud

Spring Cloud是在Spring Boot基础上构建。Spring Boot是由Pivotal团队提供的全新Web框架,它主要的特点就是简化了开发和部署的过程,简化了Spring 复杂的配置和依赖管理,通过起步依赖和内置Servlet容器能够使开发者迅速搭起一个Web工程。Spring Cloud为开发人员提供了用于快速构建分布式系统中某些常见模式的工具(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线)。

3 Spring Cloud版本

Spring Cloud并不是一个传统意义上的项目,而是众多子项目的一个大集成,因此在版本号中Spring Cloud也没有采用传统的方式,而是通过一个“发布列车”的概念来定义版本,如Edgware,Finchley和Greenwich等。这些发布列车的命名都是使用伦敦地铁站名作为发布的名称,每增加一个主要版本时,就使用伦敦地铁站中的第二高字母作为版本名称。

英文名 中文名 版本
Dalston 达斯顿 1.5.x
Edgware 艾奇韦尔 1.5.x
Finchley 芬奇利 2.0.x
Greenwich 达斯顿 2.1.x
Hoxton 霍克斯顿 2.2.x, 2.3.x

Spring Cloud Dalston、Edgware、Finchley 和 Greenwich 都已达到生命周期终止状态,不再受支持。

一般在SR版本发布之前,会先发布一个Release版本。常见版本号介绍如下:

  • SNAPSHOT快照版,可以稳定使用,且仍在继续改进版本。
  • RC(Release Candidate)发行候选版本,基本不再加入新的功能,主要修复bug。
  • SR(Service Release)修正版或更新版,修正了正式版推出后发现的Bug。
  • GA(General Availability)正式发布的版本,官方开始推荐广泛使用,国外有的用GA来表示release版本。

4 Spring Cloud技术体系

在这里插入图片描述

Spring Cloud技术体系

  • 路由和过滤组件:包括Zuul和Spring Cloud Gateway。Spring Cloud Gateway提供了一个构建在Spring生态之上的API网关,其旨在提供一种简单而有效的途径来发送API,并为他们提供横切关注点,如:安全性、监控指标和弹性。
  • 配置中心组件:Spring Cloud Config实现了配置集中管理、动态刷新等配置中心的功能。配置通过Git或者简单文件来存储,支持加解密。
  • 消息组件:Spring Cloud Stream和Spring Cloud Bus。Spring Cloud Stream对于分布式消息的各种需求进行了抽象,包括发布订阅、分组消费和消息分区等功能,实现了微服务之间的异步通信。Spring Cloud Bus主要提供了服务间的事件通信(如刷新配置)。
  • 安全控制组件:Spring Cloud Security基于OAuth2.0开放网络的安全标准,提供了微服务环境下的单点登录、资源授权和令牌管理等功能。
  • 链路监控组件:Spring Cloud Sleuth提供了全自动、可配置的数据埋点,以收集微服务调用链路上的性能数据,并可以结合Zipkin进行数据存储、统计和展示。

除了上述组件之外,Spring Cloud还提供了命令行工具Spring Cloud Cli和集群工具Spring Cloud Cluster。Spring Cloud Cli提供了以命令行和脚本的方式来管理微服务及Spring Cloud组件的方式,Spring Cloud Cluster提供了集群选主、分布式锁和一次性令牌等分布式集群需要的技术组件。

5 Spring Cloud的特点

微服务架构集大成者,云计算最佳业务实践。 —— Spring Cloud

Spring Cloud有很多特点,其中最大的特点就是它的集成性,它将很多开源产品都集成到了自身的框架中,使其越来越强大。除此之外,SpringCloud还有如下特点。

  1. 使用方便
    在使用时,开发人员不需要过多的配置,也不需要调用很多接口,通过简单的配置即可轻松上手。
  2. 功能齐全
    Spring Cloud涵盖了微服务架构中的各个方面,集成了很多公司优秀的开源框架,能够充分满足微服务开发者的各项需求。
  3. 易于扩展和维护
    所有组件的引入方式相同,都是通过Maven或Gradle引入依赖。各个组件之间没有代码上的耦合,因此可以根据需求不断地增加、删除和替换组件。
  4. 适用于各种环境
    使用Spring Cloud组件开发的项目可以应用于PC服务器、云环境,以及各种容器。

6 码农来洞见

Spring Cloud并不能与微服务或者微服务架构划上等号,不能误认为使用了Spring Cloud的应用服务就是微服务。微服务架构是一种架构的理念,重点是微服务的设计原则,从理论上为具体的技术落地提供了指导思想。Spring Cloud是一个基于Spring Boot实现的服务治理工具包,关注全局的服务治理框架。目前来说,Spring Cloud仍是Java世界中微服务实践的最佳落地方案。

最后通过一张架构图先让大家提前了解一下Spring Cloud中个功能组件之间是如何协作的。后续的架构系列文章也是基于此图来开展将详细介绍每个环节的原理及交互过程。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/pangpengshuai/article/details/119877389