RAFT系统设计(LOG传递)

在进行发送到其他节点的过程中,RAFT协议中CURINDEX就转换为FILEID + PAGEID, 从一个变量变成两个变量;同理 LAST INDEX 也是一样的。比较关系要发生变化,从单值比较变化为多值比较,比较的规则也有变化。

其他NODE的进行同步的过程,需要特定的NODEID +FILEID+PAGEID, 也是通过 LOGSVR SERVICE 发消息给 KV TASK, 然后获得FIFO对应的BUFFER数据。此时RAFT TASK需要记录需要节点的路径信息,也是对应关系,有两种处理方式,一种是随要求对应的消息发给KV TASK, KV TASK返回数据是一同带着返回,这种方式RAFT TASK不需要进行保存对应关系,对应关系在通讯中保存;另一种方式是RAFT TASK中进行保存,等KV TASK回数据过来在进行比对,恢复对应关系。通讯中不含有对应关系。有一个问题是多个NODE请求同一个FILEID+ PAGEID的情况,是否需要进行合并,合并比较复杂,NODE个数有限,个位数下,查找没有性能问题。

LOGSVR 发数据个KV TASK过程:

RAFTSVR获得数据后,需要通过LOGSVR写入到 KV TASK中,流程简单,需要定位到对应的SOCKET上,获得FD+SHAREMEM, 然后进行FIFO进行传递的过程了,这个可以要设计RAFTSVR到LOGSVR线程间的缓存,防止大数据量的冲击。

你可能感兴趣的:(数据库,系统设计,网络,数据库)