阿里云 Elasticsearch 云原生内核的两大核心技术是什么?
核心技术之一:内存物理复制,实现 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,这样就实现了数据一致性的保证。
核心技术之二:两阶段 IO fence 核心要解决的问题是防止多写。通过分布式文件系统的管控侧将异常节点加入黑名单, 直接从根本上防止了异常节点的显露。
上图展示了整体的流程,在主 Shard 节点异常的时候,MasterNode 首先发现主 Shard 的异常,然后将主 Shard 所在的节点加入黑名单。第三步,这个节点切断了 IO 的 权限,彻底失去了写的能力。第四步,master 通知从 Shard 晋升成主 Shard。第五步, 从 Shard 晋升成主 Shard 后,就开始正常地读写数据。
资料来源于《开源与云Elasticsearch应用剖析》下载地址:https://developer.aliyun.com/topic/download?id=1169
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。