Coder Social home page Coder Social logo

关于AddPeer的疑问 about sofa-jraft HOT 8 CLOSED

sofastack avatar sofastack commented on July 21, 2024
关于AddPeer的疑问

from sofa-jraft.

Comments (8)

killme2008 avatar killme2008 commented on July 21, 2024

你的理解是正确的,一般是推荐第二种方案,让新节点包括原有 server list,然后去 addPeer。

不过 jraft 提供了另外一种启动方式 NodeImpl#bootstrap(BootstrapOptions),主动配置一个新节点,假设你有 snapshot 机制,你还可以主动拷贝 snapshot 到新节点上,然后设置 BootstrapOptionssetLastLogIndex 来配置 snapshot 的 log index 启动,这样启动的节点就可以通过 addPeer 添加到现有集群,由于 snapshot 存在,可以加快节点 catchup。

from sofa-jraft.

killme2008 avatar killme2008 commented on July 21, 2024

bootstrap 启动的节点不会发起选举,就是一个“空”的新节点,等待被加入到集群。

from sofa-jraft.

shiftyman avatar shiftyman commented on July 21, 2024

“然后设置 BootstrapOptions 的 setLastLogIndex 来配置 snapshot 的 log index 启动“

这个可以详细说明一下吗?setLastLogIndex的作用是?我理解直接根据本地snapshot目录下的数据恢复不就好了吗?

from sofa-jraft.

killme2008 avatar killme2008 commented on July 21, 2024

因为 Node 是不知道你这个 snapshot 当时的 log index 是多少,这个只有用户才知道。 snapshot 的元信息不一定有设置,跟你的实现有关系,所以是让你主动设置。

from sofa-jraft.

killme2008 avatar killme2008 commented on July 21, 2024

新节点会从 snapshot 的 log index 开始追日志,这也是 snapshot 的作用。如果没有设置 snapshot,那就从 0 开始追,也就不用设置 setLastLogIndex

from sofa-jraft.

shiftyman avatar shiftyman commented on July 21, 2024

snapshot之后在onSnapshotSaveDone方法不是会将snapshot的meta信息写入文件吗?其中就包括了snapshot时的log index不是吗?为什么还需要设置?
用户也不知道这个index吧,snapshot在后台定时跑的,用户怎么知道?

from sofa-jraft.

killme2008 avatar killme2008 commented on July 21, 2024
  1. snapshot 都有日志告诉你 log index,并且 snapshot 的 metadata 的文件名就是 logindex
  2. 目前设置 last log index 更多还是为了在启动的阶段校验。

from sofa-jraft.

shiftyman avatar shiftyman commented on July 21, 2024

ok,thks

from sofa-jraft.

Related Issues (20)

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.