SpringCloud介绍
1.为什么需要SpringCloud(微服务一体化解决方案)
微服务只是一种理念具体落地需要很多技术的支持,在原先虽然也能构建微服务但是技术都不是一家的落地微服务需要到处找技术或者自己研发,但是SpringCloud包含了微服务所需要落地的所有技术就不需要去东拼西凑了
在微服务一体化解决方案出现之前,各个公司在实现服务化的过程中都比较痛苦,不仅仅需要对各种开源技术进行横向对比及整合,还需要针对公司内部业务的特性对这些开源组件进行包装和优化。直到Spring Cloud出现
2.介绍
Spring Cloud是 Pivotal公司在2015年发布的一个项目,很多人可能不知道Pivotal公司,Spring就是Pivotal 公司研发的
SpringCloud是分布式微服务架构的一站式解决方案,微服务落地所要用到的各种技术都被包括在内,俗称微服务全家桶
SpringCloud提供了一些可以让开发者快速构建微服务应用的工具,比如配置管理,服务发现,熔断,智能路由等,这些服务可以在任何分布式环境下很好的工作
Spring Cloud其实是⼀套规范,是⼀套⽤于构建微服务架构的规范,⽽不是⼀个可以拿来即⽤的框架(所谓规范就是应该有哪些功能组件,然后组件之间怎么配合,共同完成什么事情)。在这个规范之下第三⽅的Netflix公司 开发了⼀些组件、Spring官⽅开发了⼀些框架/组件,包括第三⽅的阿⾥巴巴开发了 ⼀套框架/组件集合Spring Cloud Alibaba,这些才是Spring Cloud规范的实现
3.常见的微服务解决方案
- Spring Cloud Netflix
- Spring Cloud Alibaba
4.注意
需要注意的是,Spring Cloud并不是Spring 团队全新研发的框架,它只是把一些比较优秀的解决微服务架构中常见问题的开源框架基于Spring Cloud规范进行了整合,通过Spring Boot这个框架进行再次封装后屏蔽掉了复杂的配置,给开发者提供良好的开箱即用的微服务开发体验。不难看出, Spring Cloud其实就是一套规范,而Spring Cloud Netflix,Spring Cloud Consul,Spring CloudAlibaba才是 Spring Cloud规范的实现
5.SpringCloud规范下的常用组件
6.SpringCloud版本
介绍
前面我们讲过,Spring Cloud是一套整合了各大公司开源技术的规范,而这些开源技术的版本发布是由各个公司来维护的,每个子项目都维护了自己的发布版本号,所以它不像传统意义上的版本命名,而是采用了伦敦地铁站的名字根据字母表的顺序结合对应版本的时间顺序来定义一个大版本
Spring Cloud以往的版本发布顺序排列
- Angel
- Brixton
- Camden
- Dalston
- Edgware
- Finchley
- Greenwich
- Hoxton
7.SpringBoot与SpringCloud的关系
值得注意的是,Spring Cloud中所有子项目都依赖Spring Boot框架,所以Spring Boot框架的版本号和Spring Cloud 的版本号之间也存在依赖及兼容的关系,SpringBoot是业务服务开发框架,SpringCloud是一个规范旗下的所有项目都依赖SpringBoot
8.SpringCloud Netflix
介绍
Netflix是一家做视频的网站,Netflix开源了自己的微服务架构技术栈叫做Netflix OSS,Spring背后的团队对其进行了封装就变成了SpringCloud Netflix,它是一套成熟的微服务一站式解决方案
Spring Cloud包含了非常多的子框架,其中,Spring Cloud Netflix是其中一套框架,由Netflix开发后来又并入Spring Cloud大家庭,它主要提供的模块包括:服务发现、断路器和监控、智能路由、客户端负载均衡等
常见组件
- Eureka:注册中心
- Hystrix:服务容错
- Zuul:网关
- Ribbon:负载均衡
- Feign:服务调用
- Hystrix:熔断器
- 上面这些组件基本上都已经不维护了,推荐使用其他替代品
替代品
9.SpringCloudAlibaba
介绍
与SpringCloudNetflix类似只不过是由阿里巴巴公司贡献的
主要组件
- 注册中心:Nacos
- 熔断限流:Sentinel
- 分布式事务:Seata
- RPC框架:Dubbo
- 消息中间件:RocketMQ
10.版本选型
- SpringBoot与SpringCloud版本的对应关系查看地址:https://start.spring.io/actuator/info
- SpringBoot与SpringCloudAlibaba版本的对应关系查看地址(SpringCloudAlibaba个组件版本应该也能找到) :https://github.com/alibaba/spring-cloud-alibaba/wiki
目前推荐
- SpringBoot:SpringBoot2.3.12.RELEASE
- SpringCloud:Hoxton.SR12
- SpringCloudAlibaba:
- 2.2.7.RELEASE
- 2.2.8.RELEASE(推荐)
- 2.2.9.RELEASE
- 2.2.10-RC1
- SpringCloudAlibaba组件版本:
- Nacos:2.1.0
- Sentinel:1.8.4
- RocketMQ:4.9.3
- Dubbo:好像需要手动整合Dubbo3版本?或是其他版本
- Seata:1.5.1