nacos-group / r-nacos

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

配置中心使用raft协议支持集群部署 #8

Closed heqingpan closed 1 year ago

heqingpan commented 1 year ago
  1. [x] 根据raft协议论文,熟悉raft 交互逻辑

  2. [x] rust 有几个raft库,初定在openraft和async-raft中选一个

    • [x] openraft 的样例完成度比较高,先选 openraft
    • [x] 因 openraft 版本性能不太理想,切换成async-raft实现。
  3. [x] 完成一版接入raft的结构设计 t003

  4. [x] 开发

    • [x] 初步完主体成功能开发 ,三个实例的集群写入同步功能验证通过
    • [x] 整理代码,处理代码报警和格式化问题。
    • [x] 调整配置,支持单机模式与集群模式。单机默认使用单节点集群模式。
  5. [x] 测试验收

    • [x] 配置中心写入压测
      • 2023-07-16 压测结果不理想。 openraft leader 节点优先处理请求,但几乎没有同步到从节点,停止压测流量后,才开始同步到从节点。 也可能是我使用方式不对,还需要进一步确认原因。
      • [x] 2023-07-22 切换到async-raft实现版本,写入性能可接受。性能还有优化空间,先实现功能后继再进一步优化性能。
    • [x] 分别完成主节点、从节点的写入、查询功能测试。
  6. [x] 合并代码到主干

    • [x] 补充集群模式配置说明文档。
    • [x] 合并代码到主干。
heqingpan commented 1 year ago
  1. 初步完主体成功能开发 ,三个实例的集群写入同步功能验证通过
  2. 压测结果不理想。 openraft leader 节点优先处理请求,但几乎没有同步到从节点,停止压测流量后,才开始同步到从节点。 也可能是我使用方式不对,还需要进一步确认原因。
    • 初步确认和负载有关,写入20qps时正常,100qps时开始出现异常(没把流量同步给从节点)
heqingpan commented 1 year ago

今天用async-raft实现一个 demo,对三个实例的集群做写压测,其rps能到1.5万。 async-raft 性能满足要求。

async-raft目前已处理不维护状态(使用后有问题可能需要自己修),openraft 还在持续更新;如果 openraft 性能满足,还是尽量用 openraft。

再对 openraft 不同版本、不同实现细节做些调整,看看性能有没有提升空间。

实在不行就用async-raft 。

heqingpan commented 1 year ago

已切换到async-raft,功能验证通过。

写入压测在1千rps左右,集群数越多性能越差,应该是同一台机器共用同一个磁盘、网络io的原因。 查询单机性能一致,单机 qps 2万左右,集群查询总qps为集群数量*2万。

实际使用场景,配置中心是读多写少,目前这个写入性能算可以接受。

调整好代码、并补充集群部署说明文档后再合并的主干。

heqingpan commented 1 year ago

2023-08-06

  1. [x] 完成raft 集群通讯协议从http切换成grpc。
  2. [x] 完成通过转发请求的方式支持从节点写入配置功能。
  3. [x] 整理代码具备合并的主干分支条件。
  4. [x] 待补充集群模式配置使用说明。
heqingpan commented 1 year ago

已合并到主干,并发布新的版本,Issues关闭