阿里云 Elasticsearch 云原生内核的两大核心技术之一:内存物理复制,实现 replica 的近实时访问是什么?
核心技术之一:内存物理复制,实现 replica 的近实时访问 Segment 同步的实现细节
图中描述的是 ES 物理复制的状态机,核心是为了解决 segment 同步乱序的问题。通 用的物理复制功能也是一样的实现,主要区别在于计算存储分离只需要复制实时生成的 segment,对于后续产生的 segment,强制提交 commit,确保 segment 落盘,来防止 大的 segment 进行复制。而通用的物理复制,外界的 segment 也是需要复制的,这种 segment 往往会比较大。所以这里有一个关键的优化,为了防止大 segment 复制导致的 主从可见性差距过大,主 shard 在从 shard 复制完成后才会打开最新的 segment 下图介绍了物理复制保证数据一致性的方式。
核心是保证 checkpoint 的一致性,通过将主 shard 的 checkpoint 同步到从 shard 来实现。结合这张图可以看下流程,当数据写进来的时候,主 shard 会更新 checkpoint, 在第二步刷新 segment 时,第三步将 segment 复制到从 shard 时,会带上 checkpoint, 第四步从 shard 会用这个 checkpoint 更新自己的 local checkpoint 来保证主从 shard 使用了相同的 checkpoint,这样就实现了数据一致性的保证。
资料来源于《开源与云Elasticsearch应用剖析》下载地址:https://developer.aliyun.com/topic/download?id=1169
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。