RAFT系统设计(发送数据)

RAFT系统中LOGSVR TASK 从KV TASK中获得数据发送到其他NODE的处理流程:

LOGSVR  TASK 和KV TASK 进行SOCKET连接后,获得FD+SHAREMEM,  有两个处理的触发点来处理来着 KV TASK的数据,一个KV TASK 过来的消息,一个是TIMER需要进行FIFO的读取。 KV TASK过来的消息是要求加快处理的消息,因为TIMER处理有周期性,及时性不足。

获得FIFO的数据后,得到BUFFERID,从MEMSHARE中进行数据定位,一种是直接转发处理,一种是再缓存一次处理。不知道选哪个? 缓存肯定是增加COPY的次数,对性能有降低,但选用有什么更大的好处呢?程序结构是否更清楚,控制难点是否有所降低?直接转发处理,性能好,控制复杂,需要折中?

直接转发处理,需要RAFTSVR 线程来对 SHAREMEM的数据进行读取,是LOGSVR获得消息或者是TIMER消息转发给RAFTSVR线程,通过消息体获得BUFFERID,然后进行转发到相应的NODE上,需要记录RAFTID, LOGSVRID, FILEID+PAGEID的对应关系。不好的是消息中的定时消息有可能频繁,同时RAFTSVR线程本身也有TIMER,是否可以合并使用?中间在缓存就比较简单,各种管各自的,RAFTSVR 和LOGSVR间的消息少。不好的地方是多次COPY, 同时占空间。

猜你喜欢

转载自blog.csdn.net/DQWKLC/article/details/124311284
今日推荐