InfluxDB集群 -- anti-entropy概念解析

a朋

influxdb的data节点是AP一致性,可用性优先,但是数据要最终一致。

anti-entropy意为“反熵”,熵简单的理解成shard间的不一致;anit-entropy运行在data节点上,通过对比shard间的不一致,进行shard数据修复,实现数据的最终一致。

anti-entropy的配置

anti-entropy默认是关闭的:

### [anti-entropy]
### Anti Entropy is used to check missing shards on data node.
### If missing shards are found it will copy the shards from other replications.
### Please don't enable anit-entropy if replication is 1.
###

[anti-entropy]
  enabled = false
  # check-interval = "30s" # The anti entropy service will check the missing shards very check-interval seconds.

当被开启时,node上丢失的分片会被自动修复,而内容不一致的分片需要手动(命令行)确认修复。

shard修复策略

丢失的分片:

  • goroutine定期检查node上缺少的分片(元数据中有,但是本地没有shard文件);
  • 对缺少的每个分片,启动1个goroutine从peer节点copy这个分片;

内容不一致的分片:分片熵的检测和修复流程如下

image.png

典型应用场景

Data节点由于磁盘故障等原因不可用,则只需将新的data节点加入集群,新节点上的anti-entropy会自动从其它节点copy分片。

由于硬件升级等原因,替换正在运行的data节点,新节点上的anti-entropy会自动从其它节点copy分片。

anti-entropy与hinted-handoff

anti-entropy和hinted-handoff都用来保证data节点AP一致性,最终达到数据的最终一致。

  • hh不能处理节点更换的场景;

    • hh处理的是远端节点暂时无响应时,先在本机缓存下来,待远端节点恢复时,再将数据发往远端节点;
  • anti-entropy可以自动修复整个分片缺少的场景,当发生分片内容不一致时,需要手动命令行修复。
阅读 393
10 声望
5 粉丝
0 条评论
10 声望
5 粉丝
文章目录
宣传栏