SpringCloud

115 阅读4分钟

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

1、SpringCloud的配置文件?

Spring Cloud Config 可以将各个微服务的配置文件集中存储在一个外部的存储仓库或系统(例如 Git 、SVN 等)中,对配置的统一管理,以支持各个微服务的运行。

Spring Cloud Config 包含以下两个部分:

  • Config Server:也被称为分布式配置中心,它是一个独立运行的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密信息和解密信息的访问接口。
  • Config Client:指的是微服务架构中的各个微服务,它们通过 Config Server 对配置进行管理,并从 Config Sever 中获取和加载配置信息。

image.png

2、SpringCloud组件

Spring Cloud 本身并不是一个拿来即可用的框架,它是一套微服务规范,共有两代实现。

  • Spring Cloud Netflix 是 Spring Cloud 的第一代实现,主要由 Eureka、Ribbon、Feign、Hystrix 等组件组成。
  • Spring Cloud Alibaba 是 Spring Cloud 的第二代实现,主要由 Nacos、Sentinel、Seata 等组件组成。

SpringCloud五大组件为:1、Eureka;2、Ribbon;3、Hystrix;4、Zuul;5、Config。其中,Eureka是一个RESTful服务,用来定位运行在AWS地区中的中间层服务,由Eureka服务器和客户端两个组件组成。

  • Eureka(服务发现):Spring Cloud Netflix 中的服务治理组件,包含服务注册中心、服务注册与发现机制的实现。
  • Ribbon(客户端负载均衡):Spring Cloud  Netflix 中的服务调用和客户端负载均衡组件。
  • Hystrix(断路器):人称“豪猪哥”,Spring Cloud Netflix 的容错管理组件,为服务中出现的延迟和故障提供强大的容错能力。
  • Zuul(服务网关):Spring Cloud Netflix 中的网关组件,提供了智能路由、访问过滤等功能。
  • Config(分布式配置):Spring Cloud 的配置管理工具,支持使用 Git 存储配置内容,实现应用配置的外部化存储,并支持在客户端对配置进行刷新、加密、解密等操作。

3、Spring Boot 和 Spring Cloud 的区别与联系

  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 能够用于开发单个微服务,但它并不具备管理和协调微服务的能力,因此它只能算是一个微服务快速开发框架,而非微服务框架。

更多关于SpringCloud的内容请看:Spring Cloud教程