Replication
Comdb2上的每个事务都要经过如下过程:
a. 客户端连接地理最近的replicant(一般来说会在一个数据中心里)
b. 在这个replicant中,做全部transaction交互阶段的工作,包括SELECT,INSERT,UPDATE,DELETE操作。这时不需要lock。在这个阶段,写操作会被记录到bplog上,以供之后执行和验证。bplog将不断被运送到主机并且被缓存起来。
c. 客户端commit。
d. master开始2PL。首先执行写操作,并且检查读写冲突和写写冲突。
e. master生成描述改变的物理日志记录,然后保存到本地日志和网络
f. 处理结束,bplog中的事务释放锁。master同步等待所有Replicate返回确认后,回复最初的db node的被阻塞的session。
g. master回复后,该节点响应原始应用程序。