前一段时间学习理解poxas算法,写了一个理解级别的测试,大致思路如下:
CAP:
C consistency 一致性
A availability 可用性
P Partition tolerance 分区容错性
实现方式:单机多端口模拟多个节点,nio方式client和server实现每个节点的Acceptor和Proposer
Proposer处理方式:
第一步:一次提议Proposer获取唯一id轮训所有节点并选择多数派,如果都为空则自主选择一个方案
第二步:二次提议Proposer用当前id和选择的value向所有节点发起提议,并统计结果,如果多数同意则终止提议过程并标记完成
Acceptor处理方式:
对一次提议的请求尽数返回自己的id和value值,对二次提议的请求的判断如果id大于自己的id (较新提议),则同意,反之拒绝。
githup项目地址
https://github.com/bingchuan01/poxas
只是算法思路的一种实现方式,具体权威的则要翻看libpoxas源码咯
https://bitbucket.org/sciascid/libpaxos/src/master/