当前位置: 首页 > news >正文

微服务保护和分布式事务

一、微服务保护

1.雪崩

某一个微服务出问题,导致整个服务出问题

问题来源:

服务提供者出现故障或者阻塞

服务调用着没有处理好异常

1.1请求限流

原因:并发请求太高了,导致故障

解决:类似于漏斗,对于服务提供者,限制每秒访问的次数QPS

1.2线程阻塞

原因:当一个服务访问时间长并且并发高,耗尽服务器线程资源,导致其他访问接口出现问题

类似于船舱,把每个微服务单独隔离放在一个盒子里,当一个出问题时,不影响其他,但没有对异常问题进行处理,后续可以用fallback进行处理

1.3服务熔断

虽然线程隔离避免了雪崩,但是出现服务故障的这个问题依旧没有解决,会拖垮依赖这个故障服务的其他服务

当发现某一个服务访问过于缓慢或者经常出错,就断开对该服务访问

2.Sentinel解决

2.1.下载jar包

sentinel-dashboard.jar包,运行Java -jar  xxx.jar

java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

访问http://localhost:8090页面,就可以看到sentinel的控制台了

2.2.导入依赖

<!--sentinel-->
<dependency><groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

2.3.配置yaml

spring:cloud:sentinel:transport:dashboard: localhost:8090http-method-specify: true

因此可以进入页面去设置规则来进行测试

2.4.fallback

首先创建一个fallback类继承FallbackFactory工厂,重新里面的方法啊,进行服务降级处理,一般是写到日志

@Slf4j
public class ItemClientFallback implements FallbackFactory<ItemClient> {@Overridepublic ItemClient create(Throwable cause) {return new ItemClient() {@Overridepublic List<ItemDTO> queryItemByIds(Collection<Long> ids) {log.error("查询商品信息失败", cause);return CollUtils.emptyList();}@Overridepublic void deductStock(List<OrderDetailDTO> detailDTOS) {throw new BizIllegalException(cause);}};}
}

其次bean注入

    @Beanpublic ItemClientFallback itemFallbackFactory() {return new ItemClientFallback();}

最后在openFegin的注解上加上fallbackFactory

Caused by: java.lang.IllegalStateException: Incompatible fallback instance. Fallback/fallbackFactory of type class com.hmall.api.client.fallback.ItemClientFallback is not assignable to interface com.hmall.api.client.ItemClient for feign client item-service

二、分布式事务

1.seata分布式事务框架

1.运行seata.sql创建seata数据库
2.下载seata文件,拉取jar包,docker运行部署
3.配置nacos的共享文件shared-seata.yaml 
4.pom文件导入seata的依赖 
5.在yaml文件加入共享文件配置

2.1.XA

一阶段:

RM创建分支到TC

RM运行sql,但不提交

RM报告执行状态到TC

二阶段:

TC查看所有运行状态

成功提交

失败回滚

2.2.AT

一阶段:

RM创建分支到TC

保存快照undo_log

RM运行sql并提交

RM报告执行状态到TC

二阶段:

成功,删除快照

失败:回滚快照

2.3 XA与AT区别

XA中,RM运行sql,但不提交,最后统一提交,强一致性,但是耗时长,性能差

AT中,RM运行sql并提交,失败回滚快照,最终一致性,性能好,但是可能出现短暂的读脏数据


文章转载自:

http://EgblGfJX.qjbxt.cn
http://VPdmu4sC.qjbxt.cn
http://alwfIkli.qjbxt.cn
http://kQ70BTrK.qjbxt.cn
http://wRqgAnfu.qjbxt.cn
http://0uEq0lBH.qjbxt.cn
http://Nx7S66o7.qjbxt.cn
http://7u4UatLL.qjbxt.cn
http://cG2RBKq4.qjbxt.cn
http://i3vd5HEe.qjbxt.cn
http://pXnkswxw.qjbxt.cn
http://JSzABD3V.qjbxt.cn
http://D97BRzkv.qjbxt.cn
http://9qNCaB5m.qjbxt.cn
http://bXPykuDT.qjbxt.cn
http://rlPcFhaC.qjbxt.cn
http://Undfe2eP.qjbxt.cn
http://0RneRMq4.qjbxt.cn
http://ZVsAf5wz.qjbxt.cn
http://WCJ9mJQH.qjbxt.cn
http://126wK795.qjbxt.cn
http://Tk2K4DzP.qjbxt.cn
http://8PTUIIAZ.qjbxt.cn
http://1p7hX1py.qjbxt.cn
http://FeSHKXuL.qjbxt.cn
http://0kFrhLfG.qjbxt.cn
http://pdtRrmRd.qjbxt.cn
http://NnsT60c4.qjbxt.cn
http://8FAFQLWO.qjbxt.cn
http://QNPxsKEz.qjbxt.cn
http://www.dtcms.com/a/379696.html

相关文章:

  • 线性代数 · 行列式 | Sarrus Rules / Laplace Expansion
  • uni小程序中使用Echarts图表
  • 小程序setNavigationBarColor设置背景渐变,图片渐变
  • OpenAI与微软“再造合作”:重组背后的资本与生态博弈
  • IP验证概述
  • 【RabbitMQ】高级特性:持久性·发送方确认·重试机制·TTL·死信队列·延迟队列·事务·消息分发
  • Cherry Studio递归工具调用机制深度解析
  • python+springboot大学生心理测评与分析系统 心理问卷测试 自动评分分析 可视化反馈系统
  • 多模态大模型1:Crab
  • MySQL 面试场景题之如何处理 BLOB 和CLOB 数据类型?
  • Python 数据分析:从新手到高手的“摸鱼”指南
  • 手写Spring底层机制的实现【初始化IOC容器+依赖注入+BeanPostProcesson机制+AOP】
  • 【MySQL】表的操作和数据类型
  • QT M/V架构开发实战:QFileSystemModel介绍
  • 基于POI-TL实现动态Word模板的数据填充:【散点图】特殊处理方案
  • Chrome插件开发入门技术文章大纲
  • 新手向:如何高效使用AI技术
  • iOS App 混淆与资源保护:iOS配置文件加密、ipa文件安全、代码与多媒体资源防护全流程指南
  • Docker网络实战:容器通信与隔离之道
  • AI 赋能云端运维:基于 MCP 协议深度集成 Codebuddy CLI 与腾讯云 Lighthouse 的实战全解
  • 《从 0 建立测试开发认知:先搞懂 “是什么”,再学 “怎么做”》
  • Flink1.17.0集群的搭建
  • #C语言——刷题攻略:牛客编程入门训练(十二):攻克 循环控制(四)、循环输出图形(一),轻松拿捏!
  • 面试经典150题[029]:三数之和(LeetCode 15)
  • Ubuntu 24.04 搭建k8s 1.33.4
  • 从数字后端角度谈谈occ电路(一)
  • Hadoop简介:分布式系统的基石与核心架构详解
  • [数据结构] 优先级队列(堆)
  • 计算机毕业设计 基于深度学习的酒店评论文本情感分析研究 Python毕业设计项目 Hadoop毕业设计选题 机器学习选题【附源码+文档报告+安装调试】
  • 数据结构 Java对象的比较