Spring Cloud 简介
一 SpringCloud简介
-
SpringCloud是Spring旗下的一个顶级项目.
-
SpringCloud是一个服务治理平台,提供了一些服务框架.包含了:服务注册与发现、配置中心、消息中心、负载均衡、数据监控等等.
-
SpringCloud是一系列框架的有序集合.它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署.
-
SpringCloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包.
-
SpringCloud是一个微服务框架,相比RPC/SOA框架而言,SpringCloud提供的全套的分布式系统解决方案.
-
SpringCloud对Netflix的多个微服务基础框架开源组件进行了封装,同时又实现了和云端平台以及和SpringBoot开发框架的集成.
-
SpringCloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态管理等操作提供了一种简单的开发方式.
-
SpringCloud为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接
二 Netflix简介
Netflix(Nasdaq NFLX)成立于1997年,是一家在线影片租赁提供商,主要提供Netflix超大数量的DVD并免费递送,总部位于美国加利福尼亚州洛斯盖图.
Netflix经过几年的开源实践,推出最新开源改革计划,打造了全新的Netflix开源门户,并且会继续开源更多好项目,增加Netflix项目开源透明度.
互联网流媒体播放商Netflix在几年前就开始创建自己的开源门户Netflix OpenSource(别名NetflixOSS,http://netflix.github.io/)了,他们并不知道这会如何发展;也不知道开源贡献者是否会使用,改进或者是忽略;更没想到的是就这样拥有了公司的社区,开发者会给予反馈,一些中间供应商会把这些开源软件集成到他们的解决方案中.
到了今天,Netflix拥有上百个开源软件,从基础设施平台到大数据工具,再到自动化部署软件.随着时间的发展,OSS网站也由于越来越多的组件而变得越来越复杂.现在,Netflix还会继续开源更多的软件.
Netflix发布在Github中的项目库地址:https://github.com/netflix
三 Spring Cloud框架结构
四、SpringCloud和Dubbo的对比
Spring Cloud和Dubbo都是微服务开发框架.不是新的技术就一定是好的技术.
Dubbo优势在于开发简单,效率高.
Spring Cloud优势在于功能全面且可靠性高.
对比内容 | Dubbo | SpringCloud |
---|---|---|
出身 | 阿里系核心框架是服务化治理 | Spring社区核心框架是Netflix开源微服务架构体 |
文档 | 集中,健全,中文 | 较多,内容大部分是英本版 |
性能 | Dubbo的性能大约是Spring Cloud的2~3倍 |
功能 | Dubbo | SpringCloud |
---|---|---|
服务注册中心 | zookeeper | Spring Cloud Netflix Eureka |
服务调用方式 | RPC | REST API |
服务网关 | 无 | Spring Cloud Netflix Zuul |
断路由 | 集群容错 | Spring Cloud Netflix Hystrix |
分布式配置 | 无 | Spring Cloud Config |
服务跟踪 | 无monitor | Spring Cloud Sleuth |
消息总线 | 无 | Spring Cloud Bus |
数据流 | 无 | Spring Cloud Stream |
批量任务 | 无 | Spring Cloud Task |
五、 Spring Cloud版本号说明
5.1 常见版本号说明
开发中,使用的框架版本,最好是RELEASE版本或Final版本.常见版本号格式为:
x.y.z.stage |
---|
x-数字格式主版本号,当功能模块有较大更新或者整体架构发生变化时,主版本号会更新.
y-数字格式次版本号,次版本表示只是局部的一些变动.
z-数字格式修正版本号,一般是bug的修复或者是小的变动.
stage-希腊字母版本号,也称为阶段版本号.用于标注当前版本的软件处于哪个开发阶段.(常用的阶段版本包括:BASE、ALPHA、BATE、RELEASE/FINAL.)
BASE-设计阶段.只有相应的设计没有具体的功能实现.
ALPHA-软件的初级版本.存在较多的bug.
BATE-表示相对ALPHA有了很大的进步,消除了严重的bug,还存在一些潜在的bug.
RELEASE/FINAL-该版本表示最终版,即正式发布版本.
2 Spring Cloud 版本号说明
- Spring Cloud是一个包含若干子框架的框架集合体,是一个完整的微服务框架体系,如果使用场景版本号来进行标记,容易混淆主框架版本和子框架版本标记.所以SpringCloud使用一种全新的版本号来对主框架进行版本标记,而子框架的版本标记大多还是使用常用版本号标记的.
Spring Cloud版本格式如:
版本号命名.stage
版本号命名:Spring Cloud主框架版本号是使用英国伦敦地铁站名称来进行标记的,并根据地铁站名称的首字母的英文自然升序排列来识别版本的递增.
如:Angle、Brixton、Camden、Dalston、Edgware、Finchley等.后续版本提升会继续根据首字母升序排列.
-
stage:阶段版本号.常用的阶段版本包括:BUILD-XXX[SNAPSHOT]、GA、PRE(M1、M2等)、RC、SR.
-
BUILD-XXX[SNAPSHOT]-开发版本、一般是开发团队内部使用.
-
GA-稳定版,内部开发到一定阶段了,各个模块集成后,经过全面测试发现没有问题,可对外发行了.这个时候叫GA(General Availability).基本上可以使用了.没有严重的BUG问题,但是有未测出的BUG隐患.不推荐商业使用.
-
PRE-里程碑版,由于GA还不属于公开发行版,里面还有些功能不完善或者bug,
-
于是就有了milestone(里程碑版).milestone版主要修复了一些bug.一个GA后,一般会有多个里程本版.例如M1 M2 M3…不推荐商业使用.
-
RC-候选发布版,从BUILD后到GA在到M基本上系统就算定型了,这个时候系统就进入Release Candidate(候选发布版).该阶段的软件类似于最终发行前的一个观察期,该期间只对一些发现的等级高的bug进行修复.发布RC1 RC2等版本.可以考虑RC版本.
-
SR-正式发布版,公开正式发布.正式发布版一般也有多个发布,例如SR1 SR2 SR3等等,一般是用来修复大bug或者优化.最好使用SR版本.
学习过程使用的版本是:Greenwich.SR4.当前版本中内部使用的SpringBoot是2.2.x.RELEASE版本.(2020年3月23日21:38:10)