Spring Cloud 提供了⼀些可以让开辟⼈员快速构建分布式服务的⼯具, ⽐如设置管理, 服务发现, 熔断,智能路由等. 他们可以在任何分布式环境中很好的⼯作.
简朴来说, Spring Cloud 就是分布式微服务架构的⼀站式办理⽅案, 是微服务架构落地的多种技术的集合
⽐如:
Distributed/versioned configuration 分布式版本设置
Service registration and discovery 服务注册和发现
Routing 路由
Service-to-service calls 服务调⽤
Load balancing 负载均衡
Circuit Breakers 断路器
Distributed messaging 分布式消息
Spring Cloud 并不是Spring 团队研发的框架, 它只是把⼀些⽐较优秀的办理微服务架构中常⻅题目的开源框架基于SpringCloud规范进⾏了整合, 并基于SpringBoot的⻛格,对这些组件进⾏封装, 屏蔽掉了复杂的设置和实现原理. 为开辟者提供了开箱即⽤的微服务开辟体验.
这些开源技术的框架是由各个公司来维护的. Spring Cloud 就是这些微服务的⼤管家.
2.2 Spring Cloud版本
Spring Cloud 是⼀个由许多⼦项⽬组成的庞⼤项⽬, 这些⼦项⽬由各个公司来维护的, 所以发布阶段也是差别的.
为了管理主项⽬和⼦项⽬的依赖关系, 以及为了避免和⼦项⽬版本的冲突, 主项⽬版本定名并没有采⽤和⼦项⽬数字版本化的形式, ⽽是采⽤了英⽂名称
这个英⽂版本名称也⽐较风趣, Spring Cloud 采⽤了英国伦敦地铁站的名称来定名,并由地铁站名称字⺟A-Z依次类推的形式来发布迭代版本
但英⽂版本号太复杂了, 从 Hoxton 版本之后, Spring Cloud的版本就变成了2020.0.0 这样的⽇期版本号了
Spring Cloud和SpringBoot的关系
Spring Cloud中的所有⼦项⽬都依赖SpringBoot, 所以SpringBoot 和Spring Cloud的版本之间也存在⼀定的对应关系
⽐如SpringBoot 3.2.X对应的SpringCloud版本是2023.0.X
如果我们有⼀个SpringBoot项⽬, 我们希望在这个项⽬中添加SpringCloud的⼀些组件, 需要根据当前项⽬的SpringBoot版本, 选择SpringCloud的版本(固然, 新项⽬不存在这个题目)
2.3 Spring Cloud实现⽅案
在Spring Cloud的规范下, 有许多实现, 其中最为着名的是
Spring Cloud Netflix
Spring Cloud Alibaba
Spring Cloud Netflix
Spring Cloud Netflix是 Netflix OSS(Netflix Open Source Software)在Spring Cloud规范下的实现
包罗的组件及其主要功能⼤致如下:
Eureka: 服务注册和发现
Zuul: 服务⽹关
Ribbon: 负载均衡
Feign: 服务调⽤组件
Hystrix: 断路器, 提供服务熔断和限流
Hystrix Dashboard: 监控⾯板
…
在很⻓的⼀段时间⾥, Spring Cloud ⼀度被泛指 Spring Cloud Netflix. Spring Cloud⼀直以来把Netflix OSS 套件作为其官⽅默认的⼀站式办理⽅案. 然⽽, Netflix公司在2018年前后宣布其核⼼组件Hystrix、Ribbon、Zuul等均进⼊维护状态, Spring Cloud 也被迫宣布删除这些维护模块
spring-cloud-netflix 并没有从Spring Cloud的依赖中完全删除, 只是从2020.0版本起, 他只管理Eureka.
Spring Cloud Netflix 在许多公司都有⼤规模使⽤, ⼀旦停⽌更新, 短期看影响不⼤, 但⻓期显然是不符合的, Spring Cloud官⽅也提供了⼀些替换发起
Spring Cloud Alibaba 吸取了 Spring Cloud Netflix 微服务框架的核⼼架构头脑, 并进⾏了⾼性能改进. ⾃ Spring Cloud Netflix 进⼊停更维护后, Spring Cloud Alibaba 逐渐代替它成为主流的微服务框架
Spring Cloud 实现对⽐