[ 
https://issues.apache.org/jira/browse/RATIS-800?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17150915#comment-17150915
 ] 

runzhiwang edited comment on RATIS-800 at 7/3/20, 11:36 AM:
------------------------------------------------------------

1. Add (selfPriority, targetPriority) to each group member,  the member can 
trigger a leader election if selfPriority > targetPriority.  For example, when 
init group,
  we can set the suggested leader with (targetPriority + 100, targetPriority), 
and the two follower with (targetPriority - 100, targetPriority) and 
(targetPriority - 200, targetPriority),  so only the suggested leader can 
trigger leader election and will be elected as a leader.

2.  But if the leader crash, two follower can not trigger leader election 
because  selfPriority < targetPriority. To address this, if follower can not 
trigger leader election,  and after a time threshold, there is no leader was 
elected, follower will decrease it's targetPriority at a fix rate such as 20% 
until selfPriority > targetPriority.  After leader was elected, all followers 
set targetPriority = selfPriority  + randomValue in a range.

3.  After cluster run a long time, leader election happen a lot of times, maybe 
leader is not balance among datanode, so we need to re-balance leader by force 
change leader to some datanode with low load. For example, datanode1 is a 
leader of  group1 and group2, we can change the leader of group2 from datanode1 
to datanode2 by ask datanode2 trigger a election. 

[~szetszwo][~ljain][~msingh][~shashikant] Could you help review this proposal ? 
Thank you very much.


was (Author: yjxxtd):
1. Add (selfPriority, targetPriority) to each group member,  the member can 
trigger a leader election if selfPriority > targetPriority.  For example, when 
init group,
  we can set the suggested leader with (targetPriority + 100, targetPriority), 
and the two follower with (targetPriority - 100, targetPriority) and 
(targetPriority - 200, targetPriority),  so only the suggested leader can 
trigger leader election and will be elected as a leader.

2.  But if the leader crash, two follower can not trigger leader election 
because  selfPriority < targetPriority. To address this, if follower can not 
trigger leader election,  and after a time threshold, there is no leader was 
elected, follower will decrease it's targetPriority at a fix rate such as 20% 
until selfPriority > targetPriority. 

3.  After cluster run a long time, leader election happen a lot of times, maybe 
leader is not balance among datanode, so we need to re-balance leader by force 
change leader to some datanode with low load. For example, datanode1 is a 
leader of  group1 and group2, we can change the leader of group2 from datanode1 
to datanode2 by ask datanode2 trigger a election.

[~szetszwo][~ljain][~msingh][~shashikant] Could you help review this proposal ? 
Thank you very much.

> Make Ratis consume recommended leader host from the pipeline creator
> --------------------------------------------------------------------
>
>                 Key: RATIS-800
>                 URL: https://issues.apache.org/jira/browse/RATIS-800
>             Project: Ratis
>          Issue Type: Sub-task
>            Reporter: Li Cheng
>            Assignee: runzhiwang
>            Priority: Critical
>
> Start a Jira for suggested leader sematics. It would help Ratis performance 
> if it can consume the leader host which its upstream user like Ozone 
> recommends. User can choose the leader host based on load balance and rack 
> awareness. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to