一.本文介绍

Web应用由最早的单体应用发展成为集群式的部署,再到现在的分布式系统。尤其是这两年分布式相关的技术发展的很快,一方面是以Dubbo为代表的,另一方面则是以Spring Cloud系列为代表的。这两种技术栈各自有自己的特点,拿Dubbo来说基本上都是以zookeeper作为服务注册发现组件,基于RPC进行数据交换,虽然这样的传输效率较高但同样的却有跨平台跨语言的问题。而Spring Cloud一般以Eureka作为服务注册发现组件,基于Http进行数据交换虽然牺牲了一定的效率却实现了跨平台的效果。本文主要介绍Spring Cloud的相关知识。

二.Spring Cloud的特点及介绍

尽管Spring Cloud带有“Cloud”的字样,但它并不是云计算解决方案,而是在Spring Boot基础上构建的,用于快速构建分布式系统的通用模式的工具集。它的核心功能如下:

  • Distributed/versioned configuration 分布式/版本化的配置管理
  • Service registration and discovery 服务注册与服务发现
  • Routing 路由
  • Service-to-service calls 端到端的调用
  • Load balancing 负载均衡
  • Circuit Breakers 断路器
  • Global locks 全局锁
  • Leadership election and cluster state 选举与集群状态管理
  • Distributed messaging 分布式消息

对应的它的主要相关组件有:

  • Eureka 去中心化的服务注册发现组件,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移
  • Ribbon 客户端的负载均衡组件
  • Feign 基于Http请求的服务调用组件,功能类似于HttpClient
  • Hystrix 服务容错组件,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力
  • Zuul 服务网关组件,是提供动态路由,监控,弹性,安全等的边缘服务
  • Config 分布式配置组件,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion

Spring Cloud的版本号并不像我们常见的版本格式,我们知道,大多数Spring项目都是以“主版本号.次版本号.增量版本号.里程碑版本号”的形式命名版本号的,例如Spring Framework稳定版本4.3.5.RELEASE、里程碑版本5.0.0.M4等。其中,主版本号表示项目的重大重构;次版本号表示新特性的添加和变化;增量版本号一般表示bug修复;里程碑版本号表示某版本号的里程碑。然而,Spring Cloud并未使用这种方式管理版本。下面我们来详细探讨一下Spring Cloud的版本。我们来看一下Spring Cloud的版本,如下图所示:

由图可知,Spring Cloud是以英文单词 SRX 的形式命名版本号的,Spring Cloud是一个综合项目,它包含很多的子项目。由于子项目也维护着自己的版本号,Spring Cloud采用了这种版本命名方式,从而避免与子项目的版本混淆。其中,英文单词叫做“release train”,Angel、Brixton、Camden等都是伦敦地铁站的名称,它们按照字母顺序发行,我们可将其理解为主版本的演进。SR表示“Service Release”,一般表示Bug修复;在SR版本发布之前,会先发布一个Release版本,例如Camden RELEASE。还有非常重要的一点是Spring Cloud是以Spring Boot为基础的,所以Spring Cloud和Spring Boot的版本对应关系也是非常重要的,具体对应关系如下:

最后附上Spring Cloud的中文文档 https://springcloud.cc/

最新文章

  1. 微信公众号开发(一)--验证服务器地址的Java实现
  2. IO口
  3. Python:print显示颜色
  4. [CareerCup] 13.8 Smart Pointer 智能指针
  5. NSDictionary 、 NSMutableDictionary
  6. ASP.NET 设计模式中依赖倒置原则
  7. oracle 空置排在最后显示
  8. Webdriver的设计模式:Page Object(页面模型)
  9. JavaScript学习总结(十七)——Javascript原型链的原理
  10. C++的精髓——虚函数
  11. ACL权限控制列表
  12. 转: 【Java并发编程】之十四:图文讲述同步的另一个重要功能:内存可见性
  13. Python 3.6.4 / win10 使用pip安装keras时遇到依赖的PyYAML安装出错
  14. 【详细】总结JavaWeb开发中SSH框架开发问题(用心总结,不容错过)
  15. webpack4.27.1中遇到的错误
  16. java集合详解(附栈,队列)
  17. SSH整合jar包分享及登陆实例详解
  18. apache2.4 文件浏览服务器页面配置
  19. ubantu下git的连接和使用
  20. 7种html5css3网页图片展示特效代码

热门文章

  1. CSS实现左侧多级菜单栏
  2. Eclipse中 *.properties 文件编码设置
  3. [TestNG] Eclipse/STS中两种安装TestNG的方法
  4. flex布局之flex-basis采坑
  5. RQNOJ 1 明明的随机数
  6. 你会跟谁结婚zz
  7. vue全局路由守卫beforeEach
  8. __LINE__的用法
  9. Python之路(一)-python简介
  10. 关于poi导出excel三种方式HSSFWorkbook,SXSSFWorkbook,csv的总结