Git Product home page Git Product logo

abstract-paxos's Introduction

Abstract-Paxos

Abstract-Paxos unifies well-known distributed consensus algorithms (Paxos, Raft, 2PC, etc.) into a single approach.

  • V1(中文): abstract-paxos-v1-cn.

    • Provides proofs and explanations.
    • Describes classic Paxos and Raft using Abstract-Paxos.

Project Status

This repository includes the core of Abstract-Paxos and demo examples that showcase how to implement various distributed consensus algorithms using Abstract-Paxos.

Abstract-Paxos implements:

  • Classic-Paxos: paxos.
  • Two-Phase-Commit: two_pc
  • Fast-Paxos
  • CAS-Paxos
  • EC-Paxos
  • Raft

Refer to: src/implementations.

abstract-paxos's People

Contributors

drmingdrmer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

abstract-paxos's Issues

clarification: Phase-1.1 阻止更小的 State 被 commit

每个 node 在 P1Reply 中返回自己之前保存的 commit_index, writer 拿到 reply 后跟自己的commit_index 对比, 如果 w.commit_index >= P1Reply.commit_index, 表示 phase-1.1 成功.

感谢分享,受益

请教 这里有一个疑问 如果是 如果 w.commit_index >= P1Reply.commit_index 两个writer commit_index 一样大 会同时进入Phase2,造成值被覆盖?

这里 应该是 如果 w.commit_index > P1Reply.commit_index 吗?

感谢

"Phase-1.2 读已完成 commit 的 State" 的一个疑问

你好,我看了你的abstract paxos文章,很有收获,感谢分享!有个疑问想请教一下:

  • 根据经典Paxos,在phase-1时,acceptor收到proposal后会返回它之前accept过的最大commit_index的值(以及相应的commit_index)。
  • 因此在 “Phase-1.2 读已完成 commit 的 State” 这一步中,writer会读到commit_index比它小的其他已经被accept过的值。那么根据经典Paxos,writer在phase-2中不应该用自己的值,而是应该从收到的这些已经被accept过的值中,选commit_index最大的那个作为phase-2要发送的值。你的另一篇文章 paxos直观解释 也提到过这一步,相当于执行了一次其他proposal的修复(slide-29)。
  • 但是在 “Phase-1.2 读已完成 commit 的 State” 这一步中,writer执行的步骤是这样的:
在最大 State 的基础上, 增加 w₁ 自己要写的内容. 最后进行 phase-2 完成 commit

这里似乎并没有显式的执行这个“修复”的步骤?我的理解是:

  • 在经典Paxos中,writer需要先显式的执行这个修复步骤,然后再做一次Paxos写入它想要的值。
    • 但是这里又有一个问题:writer在执行完修复后,再次运行Paxos,不还是会收到之前accept过的值吗?这样的话,writer就始终无法写入它想要的值,整个协议岂不是就无法proceed了?
    • 所以这种情况下,writer是不是应该在完成修复后,开始一个新的paxos instance?也就是说消息里除了commit_index,还需要带instance_id?
  • 而在abstract paxos中,writer在phase-2中所用的值(State),其实是在【以前accept过的commit_index最大的值】基础上增加了新的,这相当于把“修复”和“写入writer想要的值”两次合并成了一次,就没有上面的这些问题。。。

不知道我的理解对不对?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.