疲劳是最舒适的枕头,努力工作吧。

Elastic Search CCR增量同步

Elasticsearch | 作者 JaydenRansom | 发布于2020年12月21日 | 阅读数:721

各位大佬,目前在调研使用CCR来实现异地复制。
从官方的介绍和使用中,已经了解到其follow索引的创建、自动跟随等高级特性。也了解到CCR的基础模型是由follow索引发起pull请求来进行数据同步。
想问下,CCR是如何触发增量同步的呢?follow索引的时效性是如何保证的?
已邀请:

Ombres

赞同来自: JaydenRansom

昨天发了需要审核,今天再发一次试试。昨天详细的解释也没有了,凑合看吧。
首次创建会完全复制远程索引的当前索引数据,同时记录seqno,后续会创建定时任务,每次获取上个seqno 到最新(或者达到单次上限)的数据,本地保存之后再去拉新数据。

Ombres

赞同来自: JaydenRansom

1. 创建follow任务时,follower节点会先恢复远程索引的数据
2. 恢复完成后会创建一个定时任务
3. 根据你的配置请求leader(有最大等待时间,有重试机制,具体看官方文档,一旦拿到新数据,会立刻进行下一次请求),获取上次的translog的seqNo到最新的(根据配置调整单次的获取量)的operations
4. 持久化leader的operations到本地。
5. 重复3-4

JiangJibo - 喊我雷锋

赞同来自:

leader上会注册follow的Listener,当有集群状态变更或者数据修改时,会notify这个Listener,具体的实现你可以看es的源码:org.elasticsearch.xpack.ccr.action.AutoFollowCoordinator,比如他的updateAutoFollowers 方法就是告诉follower集群状态变更了,同步增量数据过去。

要回复问题请先登录注册