首页>科技 >内容

Kubernetes发布分散式键值资料库Etcd 3.4强化后端储存与客户端平衡器功能

科技2021-02-20 12:05:42
最佳答案

Kubernetes团队发布了分散式键值资料库Etcd 3.4,这个版本强化了储存后端的效能,并改进Raft投票程序,还加入了全新的客户端平衡器(Client Balancer)。Etcd是一个分散式具高可靠性的键值储存,可用来储存分散式系统的重要资料,在去年底,CoreOS团队将Etcd专案捐赠给CNCF。

新版Etcd对大规模Kubernetes工作负载进行了最佳化,大幅提升了执行效能,其最重要的更新,便是提供更好的存储后端。在之前的版本,即便没有任何写入任务,Etcd也会在大量读取交易的时候出现效能问题,花费过长的时间执行唯读工作,而原因在于,储存后端在提交等待写入操作时,会阻挡进来的读取交易,而且即便没有待处理的写入资料,也会发生同样的问题。现在,提交不会阻挡读取工作,而这能改善长时间的读取交易效能。

另外,开发团队也让后端读取交易更加并行,这将使得资料吞吐量大增70%,长时间进行读取操作的情况下,P99写入延迟减少了90%。官方也对租约储存(Lease Storage)进行了许多改进,以提高整体操作效能,新版本还新增实验性的租约检查点功能,能透过共识机制,保存租约物件的剩余生存时间值。

Etcd使用Raft共识演算法进行资料複製,过去在当一个新的成员加入或是离开丛集时,可能会影响整体丛集的可用性,而这个情况在网路分区(Network Partition)时更加严重。开发团队在Etcd 3.4改进了Raft投票流程,并加入预投票功能,以解决在网路分区的情况下,可能出现的中断问题。

Etcd 3.4的重大更新还包括添加新的客户端平衡器。Etcd被设计成可以容忍各种系统和网路故障,即便其中一个节点发生故障,多伺服器架构下的逻辑丛集看起来仍然运作正常,但是这种情况却无法保证客户端也能够正确运作,而过去Etcd客户端採用了複杂的协定,以确保在任何错误情况发生时,仍然可以维持正确性与可用性。

但由于Etcd客户端平衡器过度依赖旧的gRPC介面,因此当gRPC相依项目升级时,便会破坏客户端的行为,因此开发团队花了许多的心力修复这些问题,但叠床架屋的结果,使得客户端对伺服器的连接机制过于複杂。Etcd 3.4客户端简化了平衡器故障转移逻辑,不再维护不健康的端点列表,因为当端点连结中断时,列表就可能过时,现在客户端与当前端点连结中断,便会由下一个端点轮替,客户端也就不用追蹤端点状态。 另外,新客户端会创建自己的凭证綑绑包,以修正安全端点的故障转移问题,开发团队提到,之前当第一个Etcd伺服器故障的时候,kube-apiserver就无法与Etcd丛集连结,而Etcd 3.4更新修正了这个存在一年的臭虫。

免责声明:本文由用户上传,如有侵权请联系删除!