- day05-服务保护和分布式事务
- 1.微服务保护
- 1.1.服务保护方案
- 1.1.1.请求限流
- 1.1.2.线程隔离
- 1.1.3.服务熔断
- 1.2.Sentinel
- 1.2.1.介绍和安装
- 1.2.2.微服务整合
- 1.3.请求限流
- 1.4.线程隔离
- 1.4.1.OpenFeign整合Sentinel
- 1.4.2.配置线程隔离
- 1.5.服务熔断
- 1.5.1.编写降级逻辑
- 1.5.2.服务熔断
- 2.分布式事务
- 2.1.认识Seata
- 2.2.部署TC服务
- 2.2.1.准备数据库表
- 2.2.2.准备配置文件
- 2.2.3.Docker部署
- 2.3.微服务集成Seata
- 2.3.1.引入依赖
- 2.3.2.改造配置
- 2.3.3.添加数据库表
- 2.3.4.测试
- 2.4.XA模式
- 2.4.1.两阶段提交
- 2.4.2.Seata的XA模型
- 2.4.3.优缺点
- 2.4.4.实现步骤
- 2.5.AT模式
- 2.5.1.Seata的AT模型
- 2.5.2.流程梳理
day05-服务保护和分布式事务
day05-服务保护和分布式事务
对应B站视频:
在微服务远程调用的过程中,还存在几个问题需要解决。
首先是业务健壮性问题:
例如在之前的查询购物车列表业务中,购物车服务需要查询最新的商品信息,与购物车数据做对比,提醒用户。大家设想一下,如果商品服务查询时发生故障,查询购物车列表在调用商品服 务时,是不是也会异常?从而导致购物车查询失败。但从业务角度来说,为了提升用户体验,即便是商品查询失败,购物车列表也应该正确展示出来,哪怕是不包含最新的商品信息。
还有级联失败问题:
还是查询购物车的业务,假如商品服务业务并发较高,占用过多Tomcat连接。可能会导致商品服务的所有接口响应时间增加,延迟变高,甚至是长时间阻塞直至查询失败。
此时查询购物车业务需要查询并等待商品查询结果,从而导致查询购物车列表业务的响应时间也变长,甚至也阻塞直至无法访问。而此时如果查询购物车的请求较多,可能导致购物车服务的Tomcat连接占用较多,所有接口的响应时间都会增加,整个服务性能很差, 甚至不可用。
依次类推,整个微服务群中与购物车服务、商品服务等有调用关系的服务可能都会出现问题,最终导致整个集群不可用。
这就是级联失败问题,或者叫雪崩问题。
还有跨服务的事务问题:
比如昨天讲到过的下单业务,下单的过程中需要调用多个微服务:
•
商品服务:扣减库存
•
订单服务:保存订单
•
购物车服务:清理购物车
这些业务全部都是数据库的写操作,我们必须确保所有操作的同时成功或失败。但是这些操作在不同微服务,也就是不同的Tomcat,这样的情况如何确保事务特性呢?
这些问题都会在今天找到答案。
今天的内容会分成几部分:
•
微服务保护
◦
服务保护方案
◦
请求限流
◦
隔离和熔断