SpringCloud(三)Sentinel、Seata、多级缓存

文章目录

  • Sentinel
    • 雪崩问题
    • Sentinel与Hystrix
    • sentinel使用案例
    • 限流规则
      • 流控模式
      • 流控效果
      • 热点参数限流
    • 隔离和降级
      • Feign整合Sentinel
      • 线程隔离
      • 熔断降级
    • 授权规则与规则持续化
      • 自定义异常结果
      • 规则管理模式
  • Seata
    • 分布式事务问题
    • 理论基础
      • CAP定理
      • BASE理论
    • Seata架构
    • 部署TC服务
    • 微服务集成Seata
    • Seata的四种模式
      • XA - 强一致性

Sentinel

雪崩问题

微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Sentinel与Hystrix

在这里插入图片描述

sentinel使用案例

sentinel官网
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问微服务任意端点,即可触发sentinel监控:
在这里插入图片描述

限流规则

在这里插入图片描述
在这里插入图片描述

流控模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在service层方法添加@SentinelResource注解
在这里插入图片描述
在这里插入图片描述
对来源于query入口的请求限流。
在这里插入图片描述

流控效果

在这里插入图片描述
在这里插入图片描述

热点参数限流

在这里插入图片描述
在这里插入图片描述

隔离和降级

在这里插入图片描述

Feign整合Sentinel

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

线程隔离

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

熔断降级

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

授权规则与规则持续化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自定义异常结果

在这里插入图片描述
在这里插入图片描述

规则管理模式

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Seata

分布式事务问题

在这里插入图片描述
在这里插入图片描述

理论基础

CAP定理

CAP 也就是 Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性) 这三个单词首字母组合。

在这里插入图片描述

CAP 定理(CAP theorem)指出对于一个分布式系统来说,当设计读写操作时,只能同时满足以下三点中的两个:

C:一致性(Consistency) : 所有节点访问同一份最新的数据副本
A:可用性(Availability): 非故障的节点在合理的时间内返回合理的响应(不是错误或者超时的响应)。
P:分区容错性(Partition Tolerance) : 分布式系统出现网络分区的时候,仍然能够对外提供服务。

在这里插入图片描述

由于当前的网络服务,网络故障是不可避免的,那么在保证分区容错性(P, Partition Tolerance)的前提下,可用性(A,Avaliability)和一致性(C, Consistency)就只能保证一个,因为你要保证可用,在分区的情况下,发生网络故障一定无法保证一致性,在保证一致性的情况下,就只能把网络故障断开的分区的机器停用,那这就违背了可用性。

CAP理论告诉我们,在保证P的前提下,只能出现CP或AP的架构

在这里插入图片描述

BASE理论

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Seata架构

  • TC(Transaction Coordinator)事务协调者:维护全局和分支事务状态,协调全局事务提交或者回滚
  • TM(Transaction Manager)事务管理器:定义全局事务的范围,提交或者回滚全局事务。
  • RM(Resource Manager)资源管理器:管理分支事务处理的资源,注册分支事务并报告分支事务的状态给TC,驱动分支事务提交或回滚。

在这里插入图片描述
在这里插入图片描述

部署TC服务

微服务集成Seata

在这里插入图片描述
在这里插入图片描述

Seata的四种模式

XA - 强一致性

XA模式:强一致性模式,几乎所有主流的数据库都对XA规范提供了支持。

但是XA模式一阶段需要锁定数据库资源,等待二阶段结束才释放,性能较差,而且XA模式依赖于关系型数据库来实现事务。

正常情况下:
在这里插入图片描述
回滚情况下:
在这里插入图片描述
seata的XA模式:
seata对XA模式做了一些调整:

RM一阶段工作:

  • 注册分支事务到TC
  • 执行分支事务SQL但不提交
  • 报告执行状态到TC

TC二阶段工作:
TC检测各个分支事务执行状态

  • a、如果都成功,通知所有的RM提交事务
  • b、如果有失败,通知所有的RM回滚事务

RM二阶段工作:
接收TC指令,提交或回滚事务

在这里插入图片描述

代码中实现:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/128977.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试「转行」答疑(未完更新中)

⭐ 专栏简介 软件测试行业「转行」答疑: 如果你对于互联网的职业了解一知半解!不知道行业的前景如何?对于众说纷纭的引流博主说法不知所措!不确定这个行业到底适不适合自己? 那么这一篇文章可以告诉你所有真实答案&a…

什么是全流程的UI设计?它与单页面的视觉设计有什么区别?

在软件产品研发流程中,产品交互设计一般是根据项目需求,做出设计方案,以求解决某个问题。而全流程的设计不再局限于短暂或者单个页面的视觉优化,而是追求持续性地参与,以全局性整体性地提升产品体验。 在软件内的信息传…

高级深入--day29

入门案例 学习目标 创建一个Scrapy项目定义提取的结构化数据(Item)编写爬取网站的 Spider 并提取出结构化数据(Item)编写 Item Pipelines 来存储提取到的Item(即结构化数据)一. 新建项目(scrapy startproject) 在开始爬取之前,必须创建一个新的Scrapy项目。进入自定义的项目目…

WPF向Avalonia迁移(一、一些通用迁移项目)

通用变更 WPF&#xff1a;Visibility 其他参考文档 WPF&#xff1a; <TextBlock Visibility"Visible"/><TextBlock Visibility"Collapsed"/><TextBlock Visibility"Hidden"/>Avalonia &#xff1a; <TextBlock IsVisib…

【广州华锐互动】VR线上播控管理系统让虚拟现实教学效果更加显著

随着科技的不断发展&#xff0c;虚拟现实(VR)技术已经逐渐走进我们的生活&#xff0c;尤其在教育领域&#xff0c;VR技术的应用为学生提供了全新的学习体验。 广州华锐互动作为一家成立16年的老牌VR公司&#xff0c;开发了不少VR教学课件&#xff0c;包括物理、化学、农林、土木…

mybatis配置entity下不同文件夹同类型名称的多个类型时启动springboot项目出现TypeException源码分析

记录问题&#xff1a;当配置了 mybatis.type-aliases-packagecom.runjing.erp.entity 配置项时&#xff0c;如果entity文件夹下存在不同子文件夹下的同名类型时&#xff0c;mybatis初始化加载映射时会爆出org.apache.ibatis.type.TypeException&#xff1a; The alias TestDemo…

Android用户登录与数据存储:从权限请求到内外部存储的完整实践【完整实践步骤、外部存储、内部存储】

步骤 1: 登录页面布局 在 MainActivity 中实现用户登录功能&#xff0c;首先创建一个布局文件 activity_main.xml 包含用户名和密码的输入字段以及登录按钮。 <!-- activity_main.xml --> <LinearLayoutxmlns:android"http://schemas.android.com/apk/res/andr…

【Java题】模拟下载进度条

目录 一&#xff1a;题目 二&#xff1a;解析 1.匿名内部类 2.lambda 三&#xff1a;结果 一&#xff1a;题目 使用匿名内部类&#xff0c;模拟下载过程进度条&#xff0c;体会回调函数的作用。 1. 定义 DownloadListener 接口&#xff0c;包含一个包含 void progressU…

基于vue框架的uniapp小程序开发发现了新大陆

项目场景&#xff1a; 在基于vue框架的uniapp小程序开发中&#xff0c;在页面跳转时&#xff0c;当前页路径带参数&#xff0c;在跳转页中接受数据除了用官方推荐的保留当前页面&#xff0c;跳转到应用内的某个页面&#xff0c;使用onLoad(option)接受数据&#xff0c;但是我发…

webpack不同环境下使用CSS分离插件mini-css-extract-plugin

1.背景描述 使用mini-css-extract-plugin插件来打包css文件&#xff08;从css文件中提取css代码到单独的文件中&#xff0c;对css代码进行代码压缩等&#xff09;。 本次采用三个配置文件&#xff1a; 公共配置文件&#xff1a;webpack.common.jsdev开发环境配置文件&#x…

IDEA 2021.2.2设置自动热部署

1.导入包坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency> 2.pom.xml添加piugins插…

Git 学习笔记 | Git 项目创建及克隆

Git 学习笔记 | Git 项目创建及克隆 Git 学习笔记 | Git 项目创建及克隆创建工作目录与常用指令本地仓库搭建克隆远程仓库 Git 学习笔记 | Git 项目创建及克隆 创建工作目录与常用指令 工作目录&#xff08;WorkSpace)一般就是你希望Git帮助你管理的文件夹&#xff0c;可以是…