Spring Cloud为开发人员提供了快速构建分布式系统中的某些常见模式的工具(例如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。使用Spring Cloud开发人员可以快速站起来实现这些样板的服务和应用程序。
上边是官方描述,比较准确但是比较绕,我们来翻译一下:
- SpringCloud是一系列框架,提供了分布式和微服务的基本套件和模板
- 每个套件和模板都基于SpringBoot(可以简单理解为注解式开发,加个注解就能引入一种功能,按照“约定大于配置”的思想,提前帮你按世界约定实现了很多常用功能)
- 官网: https://spring.io/projects/spring-cloud#overview
- 简单说就是,SpringCloud可以帮助Java快速构建微服务应用,帮你提供了大量开箱可用的微服务组件和功能,你只需要引入jar包,加几个注解就能实现功能。
特征
Spring Cloud专注于为典型的用例和扩展机制(包括其他用例)提供良好的开箱即用体验。
- 分布式/版本化配置
- 服务注册和发现
- 路由
- 服务到服务的呼叫
- 负载均衡
- 断路器
- 全局锁
- 领导选举和集群状态
- 分布式消息传递
Spring Cloud采用了一种非常声明性的方法,通常只需更改类路径和/或注释即可获得许多功能。作为发现客户端的示例应用程序:
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
SpringCloud家族
微服务是一种架构模式,有各种各样的实现方式(不过目前看来,以k8s为主的微服务成为主流,辅助以SpingBoot等快速开发框架和跨语言服务开发成为一种新的趋势),Spring官方不能提供全部的服务组件,Spring只是把市面上常用的开源框架做了统一封装,封装后成为一个Spring Cloud家族,帮助开发人员快速开发,降低成本。
- 优势:拥抱开源,成本低
- 劣势:引用第三方框架,可能会引入漏洞,也可能会突然闭源不在开源(都已经发生过)
- 目前主要是Netflix公司的组件,当然国内阿里巴巴的组件也加入SpringCloud生态且非常好用。我们后边会逐一详细说明