stateIs0 / lu-raft-kv

this is raft java project. raft-kv-storage
https://thinkinjava.cn/2019/01/12/2019/2019-01-12-lu-raft-kv/
Apache License 2.0
806 stars 216 forks source link

选举Leader细节问题 #5

Open Zouxxyy opened 4 years ago

Zouxxyy commented 4 years ago

选举Leader的一个需求是 candidate 请求投票时,如果有超过半数的响应为 success,就获选leader。

但这处代码的实现是:通过 CountDownLatch(size)阻塞实现,且是在全部都响应了才开始判断。

而且这部分的异步任务处理 分提交和检测完成两次,觉得写的有点繁琐。个人觉得可使用一个ExecutorCompletionService,写起来更清晰,同时在每次take后检测是否有超过半数的成功响应。

kebukeYi commented 1 year ago

CountDownLatch latch_1 = new CountDownLatch(futureArrayList.size() / 2); 把全部 改为 一半 怎么样?