KitDB支持自定义一致性的实现方式

KitDB对多节点一致性的支持是通过拆分操作和数据接入实现的,可见下图:

自定义实现方式 - 图1

实现DB.FunctionCommit接口

  1. public interface FunctionCommit {
  2. void call(DBCommandChunk dbCommandChunk) throws KitDBException, RocksDBException;
  3. }

DBCommandChunk是KitDB数据存入磁盘的操作类,获取了DBCommandChunk,即可根据一致性规则,把对应的操作提交到本地和远程节点

对应数据操作

DBCommandChunk中的DBCommandChunkType,可以判断出对应的操作类型

本地

DBCommandChunkType操作
NOM_COMMITsimpleCommit
TX_LOGScommit
TX_COMMITcommitTX
TX_ROLLBACKrollbackTX
SIMPLE_COMMITsimpleCommit

远程

DBCommandChunkType操作
NOM_COMMITsimpleCommit
TX_LOGS本地缓冲区
TX_COMMIT本地缓冲区-simpleCommit
TX_ROLLBACK本地缓冲区-清除
SIMPLE_COMMITsimpleCommit

请参考:top.thinkin.lightd.raft.DBStateMachine

实现一致性协议

此步骤可能会比较复杂或难以理解。如需实现,可研究raft和KitDB-Raft如何对接JRaft,即可理解

替换db.functionCommit

  1. db.functionCommit = logs -> dbRequestProcessor.call(logs);