Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(feat) Read-only member(learner) #8

Closed
yangl opened this issue Mar 6, 2019 · 7 comments · Fixed by #312
Closed

(feat) Read-only member(learner) #8

yangl opened this issue Mar 6, 2019 · 7 comments · Fixed by #312
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@yangl
Copy link

yangl commented Mar 6, 2019

No description provided.

@killme2008 killme2008 added the enhancement New feature or request label Mar 6, 2019
@killme2008 killme2008 added this to the 1.2.5 milestone Mar 6, 2019
@killme2008 killme2008 self-assigned this Mar 18, 2019
@fengjiachun fengjiachun modified the milestones: 1.2.5, 1.2.6 Mar 30, 2019
@fengjiachun
Copy link
Contributor

两种方式:
1、Leader 像给 followers 发送日志一样给 learner 发送日志
优点:逻辑清晰简单,几乎不需要增加什么新功能,代码中处理一下 learner 角色即可
缺点:节点数量巨大时 leader 压力大并且带宽可能成为瓶颈
2、Learner 启动后避开 leader 向地址列表中的任意 follower 发送 拉取 日志请求
优点:不给 leader 增加压力,follower 的选择可以随机可以复杂最低可以机房就近等等
缺点:新增拉取日志逻辑,类似 kafka

看起来 2 好一些

其他:
1、Learner 默认不应用 log 到状态机,但要有从 learner 变为 follower/leader 的能力

@fengjiachun fengjiachun modified the milestones: 1.2.6, 1.2.7 Aug 29, 2019
@killme2008
Copy link
Contributor

I am working on this feature right now.

@killme2008
Copy link
Contributor

@fengjiachun 从实现角度,我偏向于 1 的方式, configuration 的 peer 列表增加一个 learner 集合,专门用于管理 learner, learner 跟普通的节点没有差异,也应用状态机,也做 snapshot,只是不参与选举,不计入 quorum

@killme2008
Copy link
Contributor

第 2 种方式可以作为未来功能的扩展。

@fengjiachun
Copy link
Contributor

@fengjiachun 从实现角度,我偏向于 1 的方式, configuration 的 peer 列表增加一个 learner 集合,专门用于管理 learner, learner 跟普通的节点没有差异,也应用状态机,也做 snapshot,只是不参与选举,不计入 quorum

恩,2 可以未来持续优化

@edtbl76
Copy link

edtbl76 commented Oct 23, 2019

@fengjiachun 从实现角度,我偏向于 1 的方式, configuration 的 peer 列表增加一个 learner 集合,专门用于管理 learner, learner 跟普通的节点没有差异,也应用状态机,也做 snapshot,只是不参与选举,不计入 quorum

恩,2 可以未来持续优化

我同意情况1。在更改配置(即追赶)期间,该逻辑已成为筏规范的一部分。无投票权的跟随者/学习者还启用跨区域筏的非多主机用例。有可用性时间表吗?
PS:我很抱歉的语法。使用Google翻译从英语翻译。
Wǒ tóngyì qíngkuàng 1. Zài gēnggǎi pèizhì (jí zhuīgǎn) qíjiān, gāi luójí yǐ chéngwéi fá guīfàn de yībùfèn. Wú tóupiào quán de gēnsuí zhě/xuéxí zhě hái qǐyòng kuà qūyù fá de fēi duō zhǔjī yònglì. Yǒu kěyòngxìng shíjiān biǎo ma?
PS: Wǒ hěn bàoqiàn de yǔfǎ. Shǐyòng Google fānyì cóng yīngyǔ fānyì.

@killme2008
Copy link
Contributor

@edtbl76 It will be ready in 1.3.0 version, should be delivered in one month.

@killme2008 killme2008 changed the title (feat) 添加学习者角色,只用来同步数据不参与投票 (feat) Read-only member(learner) Oct 24, 2019
killme2008 added a commit that referenced this issue Oct 24, 2019
fengjiachun pushed a commit that referenced this issue Nov 5, 2019
* (feat) Impl learner for jraft, #8

* (fix) test cases and minor fixes

* (feat) New APIs in CliService to support learners operaton

* (feat) test cases for learners cli service

* (fix) remove fsms in TestCluster

* (feat) Adds replicator type enum and some minor changes

* (feat) rename peers to learners

* (feat) forgot ReplicatorType.java

* (feat) Avoid deadlock when disruptor queue is full.

* (feat) minor changes by CR.

* feat/minor change learners (#332)

* (feat) minor change for learners

* (feat) minor change for learners

* typo

* typo

* typo

* for CR
luozhiyun993 pushed a commit to luozhiyun993/sofa-jraft that referenced this issue Nov 25, 2019
* 'master' of https://github.com/sofastack/sofa-jraft:
  (feat) Remove multiple of 10ms for windows platform. (sofastack#351)
  (feat) add thread pool metric report (sofastack#339)
  [ISSUE#347]upgrade the com.fasterxml.jackson.core:jackson-databind to version 2.9.10.1. (sofastack#352)
  (feat) Support readIndex from learner (sofastack#343)
  (feat) counter example (sofastack#318)
  minor fixes (sofastack#336)
  Impl learner for jraft, sofastack#8 (sofastack#312)
  (fix) Declare rpcClient to be volatile, fix sofastack#319 (sofastack#323)
  (feat) add current leader id to node describe (sofastack#322)
  (fix) fix remove metric failed on replicator destroy (sofastack#325)
  (fix) raft options copy (sofastack#321)
  (feat) contains key api (sofastack#302)
  (feat) add rocksdb table_format_config and statistics (sofastack#295)
  feat/async snapshot (sofastack#287)
  fix/state listener (sofastack#285)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants