标签:
paxos算法主要解决的问题就是一个分布式系统中如何就某一个值达成一致。
为了理解paxos算法,首先定义这样一个问题:有这样一个变量a,它属于不变变量(相当于java中的final变量),他的值一旦确定,便不能改变。现在有n个异步请求要求给a变量赋值,那如何保证最好大家看到值都是一致(相同)的呢?
首先想到的一个简单的方案就是加锁,该方法分为两步:
一个请求r1到来,如果发现已经被其他请求加锁,则反回error,表示获取锁失败(获取赋值权限失败)
仔细分析上面的问题,就会发现一个问题:如果发出请求r1的机器,在获得权限(给a加锁)成功后,出现了故障,不能再经行第二
阶段的操作,也就不能再释放锁,其他请求就一直不能给a赋值,这样一来就出现了死锁现象。为了解决这样的死锁问题,略微对
上面的方案就行修改。
上一个方案出现死锁的根本原因是一个请求获得锁了,另一个请求就不能再获取锁。所以在这个方案里,我们允许抢战式获取锁。
。。。
标签:
原文地址:http://www.cnblogs.com/fangwencai/p/5468262.html