详解 Spring Cloud 版本问题
👉 这是一个或许对你有用的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
《项目实战(视频)》:从书中学,往事上“练” 《互联网高频面试题》:面朝简历学习,春暖花开 《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题 《精进 Java 学习指南》:系统学习,互联网主流技术栈 《必读 Java 源码专栏》:知其然,知其所以然
👉这是一个或许对你有用的开源项目
国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。
功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号等等功能:
Boot 地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro Cloud 地址:https://gitee.com/zhijiantianya/yudao-cloud 视频教程:https://doc.iocoder.cn
1、让人头疼的多版本号体系
由于历史原因,Spring Cloud 分为了 Alibaba 和 Netflix 两个体系。
想要了解原因以及整个 Spring Cloud 体系的来龙去脉的同学可以去看我的另一篇文章:
知道以上前情后,我们来看看 Spring Cloud 的版本号有多乱。
打开官网首先有个总项目的版本列表:
然后往下翻是,Netflix 的 Spring Cloud 和 Spring boot 各版本之间的适配关系:
也就是说 Netflix 的版本号应该是列表中那样的。
但是我们点进 Netflix 的项目会发现它的版本号列表是这样的:
OK,这个时候才开始入门的小伙伴就蒙蔽了,会有以下几个疑惑:
既然是分成了 Alibaba 和 Netflix 两个体系,为什么 Spring Cloud 这个总项目列表还会有个版本号? Spring boot 适配的适配列表中显示的 Netflix 的版本号列表为什么会和点进 Netflix 中看见的版本号列表不一样,为什么会有两套 Netflix 的版本号? 我要用 Spring Cloud 的时候到底该用哪一个的 maven 坐标?
本文会先从组件关系讲起,理清楚 Spring Cloud 的项目目录结构,然后再顺着理清楚版本号问题。
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/ruoyi-vue-pro 视频教程:https://doc.iocoder.cn/video/
2、目录关系
首先我们需要理清楚整个 Spring Cloud 生态圈里组件之间的关系,也就是官网的目录为什么是那个样子。
要实现微服务,最核心的问题是:
服务注册和发现 容错
Netflix 和 Alibaba 两个体系对以上两点给出了自己不同的实现,总的来说就是各自推出了不同的注册中心组件和容错组件。除此之外在易能力扩展上,都是通集成接入第三方组件来实现的,如网关、总线、配置中心。
有了这个认识我们再来看整个 Spring Cloud 的项目列表就不会这么晕了。
我们进入 Spring 官网,可以看到 Alibaba 和 Netflix 两个子项目,和与他们同级的很多子项目,Alibaba 和 Netflix 的项目下包含了自己的注册中心组件和容错组件,和 Alibaba、Netflix 同级的,是一些扩展的三方组件如 gateway(网关)、config(配置中心)、bus(总线)等。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/yudao-cloud 视频教程:https://doc.iocoder.cn/video/
3、为什么会有多个版本号体系
其实组件关系理清楚后,版本号的问题就很好明白了了。虽然由于历史原因,Spring Cloud 分成了 Alibaba 和 Netflix 两派,但 Spring Cloud 是 Netflix 先做出来的,所以官网上还是以 Netflix 为中心来对整个 Spring Cloud 进行描述的。真正的 Netflix 自己推出的全家桶的版本其实就是适配列表里列出来的那些版本:
我们随便点进一个版本的 Netflix 的全家桶,可以看到其实就是注册中心(Spring Cloud Neflix)+ 其它组件:
后面 Netflix 的 Spring Cloud 的核心研发人员离职后,公司就将自己的 Spring Cloud 贡献给了 Spring Cloud 官方社区,由官方社区来对 Netflix 体系的 Spring Cloud 进行迭代。所以总项目上的版本号列表是 Spring Cloud 官方社区接收 Netflix 体系后迭代更新出来的版本:
随便点进去一个版本,可以看到其实也是围绕 Netflix 给出的一个全家桶:
然后官网上 Spring Cloud Netflix 这个子项目就只单纯的维护 Eureka 版本:
我们点进随便一个版本,可以看到,就是很单纯的 Eureka:
至于 Spring Cloud Alibaba,就很与世无争,就单纯的维护好自己的版本号:
维护好自己的 Nacos 和 Sentinel:
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,“长按”或“扫描”下方二维码噢:
星球的内容包括:项目实战、面试招聘、源码解析、学习路线。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
微信扫码关注该文公众号作者