最近在学习分布式的一些东西,断断续续有些自己的想法。找了个时间记录一下。
首先是分布式系统的意义,目前来看分布式系统主要分为分布式存储系统和分布式应用系统,
前者主要用于数据备份,容灾。后者主要用于保证系统高可用性,防止出现单点故障导致的服务不可用。
但这样就会出现不一致的问题,以数据库为例,如果有集群中有三台服务器提供读写服务,写一台机器后会把操作传递给其他两台,如果同时有写操作a=1和a=2写到两个不同的服务器,再做复制由于网络的异步性很容易使集群数据库有a=1和a=2两个不同的状态。所以一般的数据库集群服务都是一主多备的模式,只有主设备能写,再把操作同步给备份数据,如果主设备宕机,其他设备通过投票机制再选出一个主设备。
但这个设计会有一个问题,就是如果主机在操作日志同步之前宕机会造成数据操作在一个应用周期内丢失的情况,这对一些应用来说是没法接受的
paxos算法是一个比较完备的解决分布式一致性的算法
http://lamport.azurewebsites.net/pubs/paxos-simple.pdf
http://www.ux.uis.no/~meling/papers/2013-paxostutorial-opodis.pdf
这两篇论文主要介绍了paxos算法的推导和证明过程,以及paxos算法工业化落地的实现方法,
目前paxos算法在应用中的两大优势在我看来:
1是能够保证集群操作的顺序化,2在主机宕机重选之后集群操作的不丢失和可恢复
以大家经常用的zookeeper为例子,zookeeper集群中的机器有三种身份,leader,acceptor,和leaner,leader一般只有一台机器负责提交用户的操作议案给acceptor,并通知leaner执行,需要说明的是zookeeper集群中的acceptor和leaner身份是重合的,一台server即具有acceptor也具有leaner的身份,这样集群中的机器就都会保存一份操作记录和待操作记录,这样就保证leader宕机重新选出leader之后,相应数据记录能同步给新leader进行处理,保证操作的不丢失。
分布式系统和paxos算法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 可进入我的博客查看原文。 Raft 算法是可以用来替代 Paxos 算法的分布式一致性算法,而且 raft 算法比...