Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oilbeater/Paxos
The implementation of paxos
https://github.com/oilbeater/Paxos
Last synced: 3 months ago
JSON representation
The implementation of paxos
- Host: GitHub
- URL: https://github.com/oilbeater/Paxos
- Owner: oilbeater
- Created: 2012-05-19T06:08:46.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2016-04-10T16:02:23.000Z (over 8 years ago)
- Last Synced: 2024-07-16T12:00:36.916Z (4 months ago)
- Language: C
- Size: 97.7 KB
- Stars: 11
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README
Awesome Lists containing this project
README
这是一个简单的Paxos的C代码实现。
Paxos是一个解决分布式系统一致性问题的协议,协议的具体内容可以参考
http://en.wikipedia.org/wiki/Paxos_(computer_science)
本版本目前完成了最基本的paxos协议的模拟,可运行多个proposer,三个accepter和两个learner,可以演示上面链接中的四种failure。但是还有许多需要完善的地方。
详细的信息在Document中。
Need to do
1)accepter和learner的断口号都是硬编码进去的,所以数量目前也都是固定的,理想情况应该是指定一个配置文件来动态指定IP地址和端口号,但是我觉得用C语言这个没有正则表达式的语言解析文本实在是太麻烦了,交作业要紧就先没做。
2)proposer中对socket的初始化是每个单独进行的,代码重复量十分大,可以考虑建立一个socket_fd数组利用循环的方式给socket赋值并进行连接,但是我又懒了。
3)由于每次读socket都是新建立了一个进程来读取所以把一些网络错误给屏蔽了,但是也就无法检测出哪里出错了。
4)由于犯懒把给learner发送消息的任务还给proposer来处理了,这样learner端就不需要什么多余的处理了,可能问题就是accepter通过了proposer发送的消息但是proposer在这个时候挂掉了,消息就还是发送不出去,不过这个影响不大。