Spring Cloud 简介

一 SpringCloud简介

  1. SpringCloud是Spring旗下的一个顶级项目.

  2. SpringCloud是一个服务治理平台,提供了一些服务框架.包含了:服务注册与发现、配置中心、消息中心、负载均衡、数据监控等等.

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

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

  5. SpringCloud是一个微服务框架,相比RPC/SOA框架而言,SpringCloud提供的全套的分布式系统解决方案.

  6. SpringCloud对Netflix的多个微服务基础框架开源组件进行了封装,同时又实现了和云端平台以及和SpringBoot开发框架的集成.

  7. SpringCloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态管理等操作提供了一种简单的开发方式.

  8. 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框架结构

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

性能对比资料:https://mp.weixin.qq.com/s?biz=MzA5MzQ2NTY0OA==&mid=2650796496&idx=1&sn=a544b76660484b9914b65f038cc39e6d&chksm=88562c8fbf21a5995909ffa9f172f31651b1ebd04897917e43caef3491954e24ed0d0477a5a1&mpshare=1&scene=23&srcid=01245faqrBlQET YK9c7zVmd3#rd

五、 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)