emq5.0的集群方案最终一致性的考虑是什么?

在emq5.0之后的版本集群方案是core节点之间保持强一致性,但是core节点和复制节点并不是保持强一致性的,那就会出现不同core节点对应的复制节点数据部是强一致性的问题,这种会不会有问题?

总的来说还是一个设计取舍的问题。

异步复制的好处是

  1. 发布和订阅的响应会非常快
  2. replicant 节点从集群的同步事务解放出来,会降低 core 节点集群的脑裂风险(这和 emqx 使用的集群数据库 Mnesia有关)

当然也会有缺点,最关键的是:

  1. 异步复制会导致 replicant B 收到来自 relicant A 的路由更新不够及时;所以有个时间gap,在 B 上发布的消息无法路由到 A。