铁锅炖大鹅本网站主要是在生活上、学习上、工作上的个人分享!返回首页

分布式

一、分布式锁

共同特点:唯一的锁(key或父节点)、不同的钥匙(value或临时顺序子节点,防止别人的钥匙开你的锁)、有超时时间(防止长时间占用锁)、能续命(防止业务为处理完,锁超时失效了)

1、Redis

常用框架:Redisson

2、ZooKeeper

常用框架:Curator

利用临时顺序节点和事件监听的特性,并发请求按顺序在锁节点下产生子节点,同时后一个子节点监听前一个子节点,当前一个子节点失效后,后一个子节点获得锁。

区别:集群下Redis不能保证锁的高可用,因为获取锁时主Redis成功就会返回加锁成功,当从Redis还没同步时挂掉,会导致锁丢失;ZooKeeper获取锁是需要有一半以上节点成功才会返回加锁成功。

选型:1、注重获取锁速度,允许少许锁失效的情况选择Redis;

2、不注重获取锁速度,不允许锁失效的情况选ZooKeeper。

二、分布式事务

seata

每个本地事务都是先提交,如需回滚则按照undo表的前置数据和后置数据进行恢复数据。

三个角色:

TM:事务管理者 发起调用其它资源管理者的服务(发起调用其它分布式/微服务的服务)通常发起调用其它的业务的服务既是事务管理者也是资源管理者。

RM:资源管理者 处理业务的服务(被事务管理者调用的分布式/微服务的服务)

TC:事务协调者 seata-server项目 负责协调和记录事务管理者和资源管理者的项目

每个资源管理者会在所在项目里的undo表里存储事务所设计到的数据前置和数据后置镜像,用于事务数据回滚时使用,update语句既有前置也有后置镜像数据;insert只有后置镜像数据;delete只有前置镜像数据。


网站备案号 京ICP备2021001624号-1

京公网安备 11011202002596号