Spring Cloud学习记录
一、spring的微服务架构图
Spring官方的架构图:
分为以下几块组件:
-
API网关
对外(浏览器、客户端、移动端等)暴露接口,提供路由、过滤、身份认证、负载均衡等功能
-
服务注册与发现
将微服务注册到注册中心,并可以被其他微服务发现及调用。(通常同一微服务都是部署多个的,服务调用组件都会提供负载均衡的功能)
-
配置中心
统一的配置中心(通常会部署成分布式),能够被各个服务读取到,提供配置文件的版本管理、权限控制的功能
-
分布式追踪
当微服务之间的依赖关系变得很复杂时(A调用了B,B调用了C,C又调用了D...),就需要服务链路追踪组件来分析调用链的复杂度
- 微服务
在架构图中没有体现的:
-
断路器
在微服务中,某个服务调用了多个其他服务是很常见的,当其中某个服务由于网络或自身原因出现问题,调用这个服务时就会出现阻塞,若有大量请求进来,容器的线程资源会被消耗完,从而导致服务不可用。因为服务和服务之间有依赖性,故障会传播,这就是服务故障的“雪崩”效应。
引入断路器后,在对某个服务的调用失败次数达到一个阈值时,断路器会被打开,会快速返回一个固定值。避免连锁故障 -
消息总线
使用轻量级的消息代理(一般是消息队列)用于微服务之间通讯。(SpringCloud可在各个服务之间传递事件)
-
分布式事务
当程序单机运行,数据库能通过事务为我们保证数据的一致性。但是当程序分布式运行时,我们需要在分布式环境下保持数据一致性,此时就需要分布式事务组件来实现这个功能
二、SpringCloud各组件的开源实现
SpringCloud是以微服务为核心的分布式系统的一个构建标准,有如下各个实现,其中的多个组件可以实现无缝切换
三、SpringCloud的版本问题
SpringCloud的版本以伦敦地铁站名字演进,从A开始,目前最新版本是Hoxton.SR8,官方发布的正式版本号都是以RELEASE或者SRX结尾(X表示一个数字)。这两种版本号都是可以正式用于生产环境的,当一个版本的SpringCloud项目发布的内容积累到一定程度或者一个严重bug解决可用后,就会发布一个“service release”版本,也就是SRX版本。官方会在某个SRX版本上标注GA(General Availability),表示官方推荐广泛使用。
- Dalston
Spring Boot版本:1.5.x
- Edgware
Spring Boot版本:1.5.x
- Finchley
Spring Boot版本:2.0.x
- Greenwich
Spring Boot版本:2.1.x
- Hoxton
Spring Boot版本:2.2.x,2.3.x(SR5起)
SpringCloudAlibaba的版本号与SpringBoot一致
- 1.5.x版本适用于Spring Boot 1.5.x
- 2.0.x版本适用于Spring Boot 2.0.x
- 2.1.x版本适用于Spring Boot 2.1.x
- 2.2.x版本适用于Spring Boot 2.2.x
四、学习资料推荐
方志朋的专栏 (有完整版的学习路线,涵盖了SpringCloud的各个组件)