Spring Cloud为开发人员提供了快速构建分布式系统中的某些常见模式的工具(例如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。使用Spring Cloud开发人员可以快速站起来实现这些样板的服务和应用程序。

上边是官方描述,比较准确但是比较绕,我们来翻译一下:

  • SpringCloud是一系列框架,提供了分布式和微服务的基本套件和模板
  • 每个套件和模板都基于SpringBoot(可以简单理解为注解式开发,加个注解就能引入一种功能,按照“约定大于配置”的思想,提前帮你按世界约定实现了很多常用功能)
  • 官网: https://spring.io/projects/spring-cloud#overview
  • 简单说就是,SpringCloud可以帮助Java快速构建微服务应用,帮你提供了大量开箱可用的微服务组件和功能,你只需要引入jar包,加几个注解就能实现功能。

特征

Spring Cloud专注于为典型的用例和扩展机制(包括其他用例)提供良好的开箱即用体验。

  • 分布式/版本化配置
  • 服务注册和发现
  • 路由
  • 服务到服务的呼叫
  • 负载均衡
  • 断路器
  • 全局锁
  • 领导选举和集群状态
  • 分布式消息传递

Spring Cloud采用了一种非常声明性的方法,通常只需更改类路径和/或注释即可获得许多功能。作为发现客户端的示例应用程序:

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. public class Application {
  4. public static void main(String[] args) {
  5. SpringApplication.run(Application.class, args);
  6. }
  7. }

SpringCloud家族

微服务是一种架构模式,有各种各样的实现方式(不过目前看来,以k8s为主的微服务成为主流,辅助以SpingBoot等快速开发框架和跨语言服务开发成为一种新的趋势),Spring官方不能提供全部的服务组件,Spring只是把市面上常用的开源框架做了统一封装,封装后成为一个Spring Cloud家族,帮助开发人员快速开发,降低成本。

  • 优势:拥抱开源,成本低
  • 劣势:引用第三方框架,可能会引入漏洞,也可能会突然闭源不在开源(都已经发生过)
  • 目前主要是Netflix公司的组件,当然国内阿里巴巴的组件也加入SpringCloud生态且非常好用。我们后边会逐一详细说明