paxos的另类解释

文章和知识就是用来传播的,我写的文章您可以随便转,随便改,也不用加署名什么的。

什么是paxos协议?嗯,这个最好去百度一下。

为什么其他的文章把paxos协议解释的那么复杂,让人看不懂?嗯,没事,慢慢看,多看看,多琢磨琢磨就懂了。

如果你觉得对paxos有了一点点的了解,但又有点云里雾里的感觉怎么办,嗯,那么就往下看吧,估计会对你有点帮助

需要用到的数学知识:

鞋盒原理,也有人说鸽子原理,其实都是一回事,举个例子:有5个鸽子和10个盒子,每个盒子只能放一个鸽子,那么每次至少打开几个盒子,才能看到鸽子?

别用什么概率去解释,这个跟概率的关系不大,估计你也猜出来了,答案是6个,运气最差,能看到1个鸽子,运气最好,能看到6个鸽子。就是这么简单

也许你在看其他文章的时候被那些概念给搞晕了,那么没事,我下面会举个例子:

比如说有个分布式的KV系统(key-value),为了保证某个节点出故障的时候,这个系统还能运行,所以咱们就要想办法去解决这个问题:

有人说了,所有的节点数据都一致,先访问A,如果A出问题了就方问B,然后以此类推。是的,这是对的,但还不够。

如果A之前出了问题,少更新了一个数据,然后又马上好了,这个时候再来访问A,那么读出来的就是脏数据,是不准确的。

有人说了,我用集群,用镜像,都能解决这个问题,是的,没错,但咱不是为了提高自己的水平多学点东西么,所以,先不讨论集群和镜像,还有负载均衡。

这个时候需要用到某种算法来解决,比如paxos。

一个KV系统,就是insert, update, get, delete,至于其他的特性咱们先不讨论,这里只是为了引出paxos。

!!!每次操作,无论什么操作,都要有个操作编号,这个编号怎么实现,那就看自己的代码了!!!

insert:比如说有11个节点,根据鞋盒原理,只要插入6个节点就行了

update:也只是操作6个节点,如果本身节点有value,那么就更新,没有,就插入(你肯定会有疑问,别急,往下看)

get:这个是个有问题的地方,比如insert了一个数据data1到节点 0-5,然后又update了data1到任意6个节点,这个时候再来get的时候,会发生

一种情况,那就是相同的key,有不同的value,那么这个时候就要看这个数据的编号了,谁的编号最新,就用谁的。

delete: 别delete了,直接过期就行了,设置个标志,代表这个数据是已经delete了,用守护进程去删掉就行了

好了,就是这些了,不欢迎评论,就算你评论了我也不一定会看,除非是你指出了我的错误。

下列问题是极度不欢迎的:

1. 条件查询怎么办?(我是在举例子来简单的引出paxos算法)

2. 你写的是个屁啊,我看不懂(没办法,我已经用最简单的办法来解释了)

3. 你这个KV系统太粗糙了,和redis,mongodb之类的差远了(我是在举例子来简单的引出paxos算法)

极度欢迎的:

1. 分布式算法的交流

2. 指出我的错误

3. 如果你是搞erlang和golang的,但是没看懂,来吧,给我发邮件,我一定给你解释清楚

时间: 2024-08-27 08:13:05

paxos的另类解释的相关文章

(转)理解这两点,也就理解了paxos协议的精髓

转发 https://blog.csdn.net/qq_35440678/article/details/78080431 什么是paxos协议?Paxos用于解决分布式系统中一致性问题.分布式一致性算法(Consensus Algorithm)是一个分布式计算领域的基础性问题,其最基本的功能是为了在多个进程之间对某个(某些)值达成一致(强一致):简单来说就是确定一个值,一旦被写入就不可改变.paxos用来实现多节点写入来完成一件事情,例如mysql主从也是一种方案,但这种方案有个致命的缺陷,如

Raft算法国际论文全翻译

最近在开发强一致性的分布式算法,因此需要深入理解下Raft算法,这里对Raft论文进行了翻译,留以备用 - Sunface. 英文版论文:https://ramcloud.atlassian.net/wiki/download/attachments/6586375/raft.pdf Raft 是一种通过日志复制来实现的一致性算法,提供了和(多重)Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 是不同的,因此Raft 算法更容易理解和应用.Raft 有几个关键模块:领导人选举.

有哪些电影一定要趁年轻看? - 风之影的回答 - 知乎

body { font-family: Microsoft YaHei UI,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5; } html, body { } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bo

python 进程内存增长问题, 解决方法和工具

python 进程内存增长问题, 解决方法和工具 表现 解决方法 定位问题过程 gdb-python: 搞清楚python程序在做什么 准备gdb 接入gdb 查看线程 查看调用栈 coredump 其他命令 pyrasite: 连接进入python程序 psutil 查看python进程状态 guppy 取得内存使用的各种对象占用情况 无法回收的对象 不可回收对象的例子 ?? objgraph 查找循环引用 表现 运行环境: # uname -a Linux ** 3.10.0-327.el7

Paxos协议超级详细解释+简单实例

转载自:  https://blog.csdn.net/cnh294141800/article/details/53768464 Paxos协议超级详细解释+简单实例 Basic-Paxos算法(可以先看后面的实际例子再看前面的具体介绍部分) Paxos算法的目的 Paxos算法的目的是为了解决分布式环境下一致性的问题. 多个节点并发操纵数据,如何保证在读写过程中数据的一致性,并且解决方案要能适应分布式环境下的不可靠性(系统如何就一个值达到统一) Paxos的两个组件 Proposer 提议发

AccessibilityService辅助类用法(Android 中的另类钩子)

说在前面的话 为什么会把AccessibilityService叫做Android 中的另类钩子呢?搞过windows的都知道,钩子的含义就是能够监听到一切你想监听的内容,而Android中的AccessibilityService也可以监听到我们需要的某些功能. 用法 简介 AccessibilityService是一个辅助类,可以监听我们手机的焦点,窗口变化,按钮点击等等.实现它的服务需要在手机设置里面->辅助功能在这里面找到你自己实现的辅助类,然后打开它就可以进行我们一系列的监听了. 实例

另类保存微信公众平台历史消息的方法 - 星标消息

前面怎样把微信聊天记录导出备份到电脑[微信公众平台技巧]介绍的通过复制源代码来保存微信公众平台历史消息的方法,有网友反映说不会用批量替换.不会批量换行保存,一头雾水.这里我们就说个简单的方法,直接用星标消息保存,打开微信公众号消息管理,鼠标移动到你要保存的消息,右侧会显示几个菜单,其中有个星星形状的,默认是灰色的,如下图红框所示,点击后变成黄色的小星星,这样微信公众号星标信息就完成了,so easy!哪里要存点哪里! 腾讯客服提供的回答"微信公众号星标信息有什么用?" 他们的解释是:

这篇文章关于两阶段提交和Paxos讲的很好

http://blog.chinaunix.net/uid-16723279-id-3803058.html <两阶段提交协议与paxos投票算法> 点评:2PC绝对是CP的死党,是分布式情况下强一致性算法,因此缺点也是很明显的, 单点coordinator是个严重问题: 没有热备机制,coordinator节点crash了或者连接它的网路坏了会阻塞该事务: 吞吐量不行,没有充分发动数量更多的participants的力量,一旦某个participant第一阶段投了赞成票就得在他上面加独占锁,

一步一步理解Paxos算法

一步一步理解Paxos算法 背景 Paxos 算法是Lamport于1990年提出的一种基于消息传递的一致性算法.由于算法难以理解起初并没有引起人们的重视,使Lamport在八年后重新发表到 TOCS上.即便如此paxos算法还是没有得到重视,2001年Lamport用可读性比较强的叙述性语言给出算法描述.可见Lamport对 paxos算法情有独钟.近几年paxos算法的普遍使用也证明它在分布式一致性算法中的重要地位.06年google的三篇论文初现“云”的端倪,其中的chubby锁服务使用p