博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式笔记
阅读量:4090 次
发布时间:2019-05-25

本文共 896 字,大约阅读时间需要 2 分钟。

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

 

 

转载地址:http://slbii.baihongyu.com/

你可能感兴趣的文章
React Native for Android 发布独立的安装包
查看>>
React Native应用部署/热更新-CodePush最新集成总结(新)
查看>>
react-native-wechat
查看>>
基于云信的react-native聊天系统
查看>>
网易云音乐移动客户端Vue.js
查看>>
ES7 await/async
查看>>
ES7的Async/Await
查看>>
React Native WebView组件实现的BarCode(条形码)、(QRCode)二维码
查看>>
每个人都能做的网易云音乐[vue全家桶]
查看>>
JavaScript专题之数组去重
查看>>
Immutable.js 以及在 react+redux 项目中的实践
查看>>
Vue2.0全家桶仿腾讯课堂(移动端)
查看>>
React+Redux系列教程
查看>>
react-native 自定义倒计时按钮
查看>>
19 个 JavaScript 常用的简写技术
查看>>
ES6这些就够了
查看>>
微信小程序:支付系列专辑(开发指南+精品Demo)
查看>>
iOS应用间相互跳转
查看>>
iOS开发之支付宝集成
查看>>
iOS开发 支付之银联支付集成
查看>>