写点什么

【云原生】SpringCloud 是什么?

作者:java李杨勇
  • 2022 年 8 月 15 日
    四川
  • 本文字数:2363 字

    阅读完需:约 8 分钟

【云原生】SpringCloud是什么?

 SpringCloud 是一个提供一些服务框架的服务治理平台。它包括:服务注册和发现、配置中心、消息中心、负载平衡、数据监控等。封装了微服务基础架构框架 Netflix 的多个开源组件,并与云平台和 Spring boot 框架集成。

SpringCloud 也为开发人员提供了一个快速构建分布式系统的工具。开发人员可以快速启动服务或构建应用程序,并可以快速连接云平台资源。微服务是可以独立部署、水平扩展和独立访问(或拥有独立数据库)的服务单元。Spring cloud 是这些微服务的管理者。在采用微服务架构之后,将会有大量的项目。Spring cloud 作为管理员,需要很好地管理这些微服务。当然,它需要很多弟弟的帮助。

随着微服务的火爆流行,国内外各大互联网公司都相继分享了他们在微服务架构中,针对不同场景出现的各种问题的解决方案和开源框架。

这种情况下,搭建一套微分布式微服务系统,就需要针对这些问题从诸多的解决方案中做出选择,Spring Cloud 被称为构建分布式微服务系统的“全家桶”,它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合、

它将市面上成熟的、经过验证的微服务框架整合起来,并通过 Spring Boot 的思想进行再封装,屏蔽调其中复杂的配置和实现原理,最终为开发人员提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。Spring Cloud 中包含了 spring-cloud-config、spring-cloud-bus 等近 20 个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案。



Spring Cloud 常用组件

  • 服务治理:阿里巴巴开源的 Dubbo 和当当网在其基础上扩展出来的 DubboX、Netflix 的 Eureka 以及 Apache 的 Consul 等。

  • 分布式配置管理:百度的 Disconf、Netflix 的 Archaius、360 的 QConf、携程的 Apollo 以及 Spring Cloud 的 Config 等。

  • 批量任务:当当网的 Elastic-Job、LinkedIn 的 Azkaban 以及 Spring Cloud 的 Task 等。

  • 服务跟踪:京东的 Hydra、Spring Cloud 的 Sleuth 以及 Twitter 的 Zipkin 等。

  • ……

  • 以上这些微服务框架或解决方案都具有以下 2 个特点:

  • 对于同一个微服务问题,各互联网公司给出的解决方案各不相同。

  • 一个微服务框架或解决方案都只能解决微服务中的某一个或某几个问题,对于其他问题则无能为力。

  • Spring Cloud 包括 Spring Cloud Gateway、Spring Cloud Config、Spring Cloud Bus 等近 20 个服务组件,这些组件提供了服务治理、服务网关、智能路由、负载均衡、熔断器、监控跟踪、分布式消息队列、配置管理等领域的解决方案。

  • Spring Cloud 的常用组件如下表所示。


Spring Boot 和 Spring Cloud 的区别与联系

Spring Boot 和 Spring Cloud 都是 Spring 大家族的一员,它们在微服务开发中都扮演着十分重要的角色,两者之间既存在区别也存在联系。

1. Spring Boot 和 Spring Cloud 分工不同

Spring Boot 是一个基于 Spring 的快速开发框架,它能够帮助开发者迅速搭 Web 工程。在微服务开发中,Spring Boot 专注于快速、方便地开发单个微服务。Spring Cloud 是微服务架构下的一站式解决方案。Spring Cloud 专注于全局微服务的协调和治理工作。换句话说,Spring Cloud 相当于微服务的大管家,负责将 Spring Boot 开发的一个个微服务管理起来,并为它们提供配置管理、服务发现、断路器、路由、微代理、事件总线、决策竞选以及分布式会话等服务。

2. Spring Cloud 是基于 Spring Boot 实现的

Spring Cloud 是基于 Spring Boot 实现的。与 Spring Boot 类似,Spring Cloud 也为提供了一系列 Starter,这些 Starter 是 Spring Cloud 使用 Spring Boot 思想对各个微服务框架进行再封装的产物。它们屏蔽了这些微服务框架中复杂的配置和实现原理,使开发人员能够快速、方便地使用 Spring Cloud 搭建一套分布式微服务系统。

3. Spring Boot 和 Spring Cloud 依赖项数量不同

Spring Boot 属于一种轻量级的框架,构建 Spring Boot 工程所需的依赖较少。Spring Cloud 是一系列微服务框架技术的集合体,它的每个组件都需要一个独立的依赖项(Starter POM),因此想要构建一套完整的 Spring  Cloud 工程往往需要大量的依赖项。

4. Spring Cloud 不能脱离 Spring Boot 单独运行

Spring Boot 不需要 Spring Cloud,就能直接创建可独立运行的工程或模块。Spring Cloud 是基于 Spring Boot 实现的,它不能独立创建工程或模块,更不能脱离 Spring Boot 独立运行。

注意:虽然 Spring Boot 能够用于开发单个微服务,但它并不具备管理和协调微服务的能力,因此它只能算是一个微服务快速开发框架,而非微服务框架。

Spring Cloud 版本

Spring Cloud 包含了许多子项目(组件),这些子项目都是独立进行内容更新和迭代的,各自都维护着自己的发布版本号。为了避免 Spring Cloud 的版本号与其子项目的版本号混淆,Spring Cloud 没有采用常见的数字版本号,而是通过以下方式定义版本信息。

{version.name} .{version.number}
复制代码


Spring Cloud 版本信息说明如下:

  •  version.name:版本名,采用英国伦敦地铁站的站名来命名,并按照字母表的顺序(即从 A 到 Z)来对应 Spring Cloud 的版本发布顺序,例如第一个版本为 Angel,第二个版本为 Brixton(英国地名),然后依次是 Camden、Dalston、Edgware、Finchley、Greenwich、Hoxton 等。

  • version.number:版本号,每一个版本的 Spring Cloud 在更新内容积累到一定的量级或有重大 BUG 修复时,就会发布一个“service releases”版本,简称 SRX 版本,其中 X 为一个递增的数字,例如 Hoxton.SR8 就表示 Hoxton 的第 8 个 Release 版本。

Spring Cloud 版本选择

在使用 Spring Boot + Spring Cloud 进行微服务开发时,我们需要根据项目中 Spring Boot 的版本来决定 Spring Cloud 版本,否则会出现许多意想不到的错误。Spring Boot 与 Spring Cloud 的版本对应关系如下表(参考自Spring Cloud 官网)。 


用户头像

java李杨勇

关注

vx:lyy13219015380 2022.04.26 加入

全网粉丝20W+。 CSDN特邀作者、博客专家。 CSDN新星计划.第三赛季java导师、博客之星。 掘金/华为云/阿里云/InfoQ/51CTO等平台优质作者。 专注于Java技术领域和毕业设计。

评论

发布
暂无评论
【云原生】SpringCloud是什么?_Java_java李杨勇_InfoQ写作社区