IT自学第四十四天(微服务安全与分布式事务)

微服务


服务保护

分布式事务

1、微服务雪崩问题

微服务的问题分析

商品管理挂机了,导致其他业务也挂机。

雪崩问题;Sentinel;分布式事务

雪崩问题

微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。

解决思路:服务调用者做好远程调用异常的后备方案,避免异常扩散。

2、服务保护方案

服务保护方案-请求限流

请求限流:限制访问接口的请求的并发量,避免服务因流量激增出现故障。

服务保护方案-线程隔离

线程隔离:也叫做舱壁隔离,模拟船舱隔板的防水原理。通过限定每个业务能使用的线程数量而将故障业务隔离,避免故障扩散。

服务保护方案-服务熔断

服务熔断:由断路器统计请求的异常比例或慢调用比例,如果超出阈值则会熔断该业务,则拦截该接口的请求。

熔断期间,所有请求快速失败,全部走fallback逻辑。

失败处理:定义fallback逻辑,让业务失败时不再抛出异常,而是走fallback逻辑。

3、服务保护技术

服务保护技术

4、安装sentinel

初识Sentinel

Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html

安装Sentinal

注意:保持Java环境。

5、微服务整合sentinel

cart-service整合Sentinel

引入依赖:

XML 复制代码
<!--        sentinel-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

代码演示:

XML 复制代码
    sentinel:
      transport:
        dashboard: localhost:8090

6、簇点链路

Restful风格的API请求路径一般都相同,这会导致簇点资源名称重复。因此我们要修改配置,把请求方式+请求路径作为簇点资源名称:

代码演示:

XML 复制代码
    sentinel:
      transport:
        dashboard: localhost:8090
      http-method-specify: true # 开启资源方法前缀

7、请求限流

请求限流

在簇点链路后面点击流控按钮,即可对其做限流配置:

QPS:平均一秒内的访问数量;

7.1、请求限流-补充版

同上

8、线程隔离

线程隔离

当商品服务出现阻塞或故障时,调用商品服务的购物车服务可能因此而被拖慢,甚至资源耗尽。所以必须限制购物车服务中查询商品这个业务的可用线程数,实现线程隔离。

首先让OpenFeign整合Sentinel:

在sentinel控制台中,会出现Feign接口的簇点资源,点击后面的流控按钮,即可配置线程隔离:

9、fallback远程调用客户端异常处理

10、服务熔断

11、分布式事务

分布式事务

下单业务,前端请求首先进入订单服务,创建订单并写入数据库。然后订单服务调用购物车服务和库存服务:

  • 购物车服务负责清理购物车信息
  • 库存服务负责扣减商品库存

在分布式系统中,如果一个业务需要多个服务合作完成,而且每一个服务都有事务,多个事务必须同时成功或失败,这样的事务就是分布式事务。其中的每个服务的事务就是一个分支事务。整个业务称为全局事务。

12、初始Seata

初始Seata

分布式事务解决思路

Seata架构

Seata事务管理中有三个重要的角色:

13、部署Seata

准备数据库表

准备配置文件

Docker部署:将seata上传到root文件夹

nacos中要有seata-server服务。

14、微服务集成Seata

首先,要在项目中引入Seata依赖:

然后,在application.yml中添加配置,让微服务找到TC服务地址:

案例:微服务集成Seata

需求:将Seata配置共享到nacos中,避免重复配置;并解决商品下单中发生的分布式事务问题。

15、Seata-强一致性事务模式XA

16、Seata-最终一致性事务模式AT

相关推荐
Decay__23 分钟前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
GlobalInfo2 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
代码山河3 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
微订校园外卖平台4 小时前
校园外卖平台选模板还是定制:架构、数据流与验收清单
大数据·架构·外卖系统·本地生活·微订
ZhengEnCi5 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
Decay__6 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
阿里云云原生9 小时前
Agent 数据飞轮平台的选型和实践
云原生
华普微HOPERF9 小时前
Matter协议架构详解:数据模型与交互模型深度解析
microsoft·架构·交互
做运维的阿瑞9 小时前
云项目可观测性与成本治理:告警、日志、Dashboard 与预算标签
大数据·云原生·云计算·terraform
4SAPI10 小时前
多国产模型混合调度与企业级治理生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
大数据·人工智能·架构·php