用python实现的paxos算法的演示实现。

paxos的Python项目详细描述


这是用python实现的paxos算法的演示实现。

要求

  • Python3

安装

pip install paxos

实施说明

  • paxos算法的提议者、接受者和学习者角色是 在中使用从公共Agent类派生的类实现。
  • 每个角色/代理都在单独的进程中运行。
  • 进程之间的通信使用Queue对象进行,因此 进程在同一台计算机上运行。
  • 帕克索斯简单地说,“我们要求不同的提案 不同的数字。“为了达到这个目的,我们开始每个提议者的过程 建议编号序列等于其自身的PID,然后递增编号 对于每个新的提案,按系统中提案者进程的数目。 这似乎也是由 谷歌员工。
  • 假设系统中的所有进程都被视为 系统从一开始,无需通过 通过法令。

参考文献

待办事项

  • 添加角色的折叠版本,以便每个进程扮演 角色。
    • 一旦我们有了一个折叠的版本,领导就应该重试客户的请求 如果他们确定实例在一段时间后还没有被决定 时间量。这应该可以解决几个问题:
      1. 学习者无法确定是否有更多的价值观 去学习(当它是最后一个丢失的值时)。
      2. 因为领导者们现在记住了 客户请求他们建议,如果要求建议者重试 实例(例如,来自缺少某个值的学习者)则是 可能学习到的价值在没有 承兑人已经接受了该实例中的值(这意味着 建议者应该指定值,但是因为它没有记住 它只是建议没有原始值)。
  • 当一个学习者要求一个提议者重新尝试时,提议者不应该重新尝试 已在某个时间段内重试该建议,因为 否则,通过重新增加提案编号,将保证 在该实例中有一个成功的协议它正在重试。
  • 有一个始终如一的领导者,只执行第一阶段一次。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]