nacos-group / r-nacos

Nacos server re-implemented in Rust.
https://r-nacos.github.io/docs/
Apache License 2.0
807 stars 84 forks source link

raft实现替换提案 #96

Closed J0HN50N133 closed 3 months ago

J0HN50N133 commented 3 months ago

目前本项目的raft是在async-raft的基础上魔改的,而且async-raft已经很久没有维护了。作者有没有考虑过使用datafuse维护的openraft

heqingpan commented 3 months ago

其实最开始我就是用openraft实现的,但是当时开发完成后测试下来有问题( 压测时openraft leader 节点优先处理请求,但几乎没有同步到从节点,停止压测流量后,才开始同步到从节点。 这个逻辑不符合raft协议,有丢数据的风险。)。 最后没办法就切换成async-raft重新实现。

具体可以参考 #8

再之后发现async-raft有些场景有点小问题,就拉个分支出来单独调整。后面有什么问题就要自己维护。这个已经发版很久,目前算是比较稳定,没有收到这方面有问题的反馈。

heqingpan commented 3 months ago

所以目前没有切回openraft的计划。

J0HN50N133 commented 3 months ago

了解了,压测的代码能否提供给我复现一下?我去openraft那边看看他们是否有修复的意愿

heqingpan commented 3 months ago

压测工具有放在本项目中 https://github.com/nacos-group/r-nacos/tree/master/loadtest

当时实现openraft版本的代码,在项目git history log中应该能找到。不过当时用的openraft版本应该相对较老,可能不能直接达到你想要的效果。

heqingpan commented 3 months ago

我可以晚点找一下对应的commit id,推一个当时的分支出来给你试试。

heqingpan commented 3 months ago

我把之前接openraft的分支openraft_feature推上来了,你可以试试。

J0HN50N133 commented 3 months ago

了解了,感谢