[
https://issues.apache.org/jira/browse/RATIS-1298?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17279369#comment-17279369
]
runzhiwang edited comment on RATIS-1298 at 2/5/21, 6:44 AM:
------------------------------------------------------------
[~szetszwo] Let's continue the discussion: how listener get log from
folllower? I have two thoughts:
1. Learner pull log from follower in a round robin way
cons: We need to write code about learner pull log, we can not reuse
GrpcLogAppender.
pros: Learner does not need to consider follower crash.
2. Follower push log to learner. When learner start, it register to one
follower, then follower use GrpcLogAppender to append log to learner, if
follower crash, learner need to register to other follower.
cons: We need to consider the logic of register , especially when follower
crash. And also need to consider follower become leader, we need to allocate
listener to other followers.
pros: We can use GrpcLogAppender to append log.
One more discussion, how can we make follower load balance? For example, if
there are 1 leader, 4 followers, 4 listeners, how to make sure 1 follower -> 1
listener. And when 2 follower crash, how to make sure 1 follower -> 2
listeners. Consistent hash can achieve "follower load balance", but seems
complicated.
was (Author: yjxxtd):
[~szetszwo] Let's continue the discussion: how listener get log from
folllower? I have two thoughts:
1. Learner pull log from follower in a round robin way
cons: We need to write code about learner pull log, we can not reuse
GrpcLogAppender.
pros: Learner does not need to consider follower crash.
2. Follower push log to learner. When learner start, it register to one
follower, then follower use GrpcLogAppender to append log to learner, if
follower crash, learner need to register to other follower.
cons: We need to consider the logic of register , especially when follower
crash.
pros: We can use GrpcLogAppender to append log.
One more discussion, how can we make follower load balance? For example, if
there are 1 leader, 4 followers, 4 listeners, how to make sure 1 follower -> 1
listener. And when 2 follower crash, how to make sure 1 follower -> 2
listeners. Consistent hash can achieve "follower load balance", but seems
complicated.
> Support non-voting members (Listeners/Learners)
> -----------------------------------------------
>
> Key: RATIS-1298
> URL: https://issues.apache.org/jira/browse/RATIS-1298
> Project: Ratis
> Issue Type: New Feature
> Components: server
> Reporter: Rui Wang
> Assignee: Rui Wang
> Priority: Major
>
> It's time to add the non-voting member, or leaner that is proposed in Raft
> thesis 4.2.1 (you can find a copy at [1]).
> The leaner is useful to maintain high availability when new servers join Raft
> ring (details at thesis 4.2.1). For Ozone SCM HA effort, we have also
> discussed the possibility to utilize leaner as the tool to replace SCM nodes
> online.
> [1]: https://github.com/ongardie/dissertation
--
This message was sent by Atlassian Jira
(v8.3.4#803005)