etcd 层面,作为 Kubernetes 存储对象的数据库有哪些改进?
第一版本的改进,我们通过将 etcd 的数据转存到 tair 集群中,提高了 etcd 存储的数据总量。但这个方式有一个显著的弊端是额外增加的 tair 集群,增加的运维复杂性对集群中的数据安全性带来了很大的挑战,同时其数据一致性模型也并非基于 raft 复制组,牺牲了数据的安全性。 第二版本的改进,我们通过将 API Server 中不同类型的对象存储到不同的 etcd 集群中。从 etcd 内部看,也就对应了不同的数据目录,通过将不同目录的数据路由到不同的后端 etcd 中,从而降低了单个 etcd 集群中存储的数据总量,提高了扩展性。 第三版本的改进,我们深入研究了 etcd 内部的实现原理,并发现了影响 etcd 扩展性的一个关键问题在底层 bbolt db 的 page 页面分配算法上:随着 etcd 中存储的数据量的增长,bbolt db 中线性查找“连续长度为 n 的 page 存储页面”的性能显著下降。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。