Doris中,Leader节点与非Leader节点和Observer节点之间的元数据高可用和一致性,是通过bdbje(全称:Oracle Berkeley DB Java Edition)的一致性和高可用实现的。
元数据主要存储四类数据:
元数据同步图:
元数据流转如下:
Leader节点修改内存元数据后,元数据日志首先写入bdbje,达到阈值后,bdbje形成一个新的DB,然后将新的DB内的日志,在旧的image上回放,生成一个新的image,然后删除bdbje中已经被集群节点全部同步的旧的元数据日志。这样周而复始。保证bdbje中的数据不会无限制得增长,也保证了image中始终保存着较新的元数据。同时,其他非leader节点,也访问bdbje,将bdbje中的新写入的元数据日志,在自己内存中的元数据上回放。
元数据层面,Doris采用Paxos协议以及Memory + Checkpoint + Journal的机制来确保元数据的高性能及高可靠。Doris的元数据存储是 memory -> bdbje -> checkpoint(image)。
为什么同时需要 bdbje 和 image 镜像呢?
参考: