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
771 stars 211 forks source link

这个实现接收客户端请求的处理过程是串行的 #20

Open cjj137783 opened 1 year ago

cjj137783 commented 1 year ago

这个实现接收客户端请求的处理过程是串行的 ,而且每一次处理都会多次写db, 这个吞吐量不会很高吧,应用于生产的raft也是这么实现的吗?

leakey0626 commented 1 year ago

感谢提出这么高质量的问题,下面是我的一些看法:

  1. 不同的客户端请求是并行处理的,因为 RPC 调用会开新线程来响应
  2. 每次处理请求都写入本地日志是为了保证一致性,可以根据业务需求对稳定性和吞吐量进行折中。如果想要提高吞吐量,可以让跟随者在处理 appendEntries 的时候只把日志写入内存,并由后台线程定期将内存里的日志写进磁盘。