分布式笔记

1、实现分布式锁的四种方法:

(1)数据库的唯一索引

获得锁时向表中插入一条记录,释放锁时删除这条记录。

(2)Redis的SETNX指令

与数据库唯一索引类似,但是redis可以设置过期时间,用于超时释放。

缺点如果redis发生单点故障,则分布式锁无法使用。

(3)Redis的RedLock算法

使用多个Redis实例来实现分布式锁

(4)Zookeeper的有序节点

    1)获取锁时,在/lock锁目录下创建临时且有序的子节点;

    2)客户端判断创建的子节点为当前子节点列表中序号最小的子节点,则获得锁,否则监听前一个子节点,获得子节点的变更通知后重复此步骤直至获得锁。

    3)执行业务代码,完成后,删除对应的子节点。

    4)会话超时自动释放临时节点

2、分布式事务实现方式及理论

(1)本地消息表

本地消息表与业务数据表在同一个数据库,利用本地事务对这两个表操作满足事务特性,使用消息队列保证最终一致性。

本地事务保证消息一定会写入本地消息表,之后消息转发到kafka等消息队列,成功则删除本地消息表。

分布式事务的另一方从消息队列中读取一个消息,并执行消息中的操作。

(2)2PC

    1)准备阶段

协调者询问参与者事务是否执行成功,参与者返回事务执行结果。准备阶段,参与者执行了事务,但还未提交。

    2)提交阶段

如果事务都执行成功,则协调者会让参与者提交事务,否则参与者回滚事务。

存在的问题:参与者等待其他参与者响应时同步阻塞,协调者单点问题、第二部中途出错导致数据不一致、一个失败整体失败没有容错机制

(3)CAP

一致性,可用性,分区容错性只能满足两个

(4)BASE

基本可用、软状态、最终一致性

对CAP理论中一致性和可用性权衡的结果,核心思想是每个应用应该采用适当的方式使系统达到最终一致性

(5)Paxos

三类节点:

提议者、提议一个值

接受者、对每个提议进行投票

告知者:被告知投票过程,不参与投票

执行过程:

1)Prepare阶段

2)Accept阶段

(6)Raft

分布式一致性协议,主要用来竞选主节点

三种节点:Follower、Candidate和Leader

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值