spring cloud

etcd架构原理

2021-10-26  本文已影响0人  Wu杰语

etcd重要的两个功能是一致性和watch,针对这两个特性深入理解一下。

一致性raft算法

一致性要学习的是raft协议,对于raft协议,有这么几个角色


角色

当leader失效的时候,Follower接收leader的心跳超时,就会转化为candidate节点,投票给自己,然后投票给其它节点,如果它获取到超过半数节点支持,就会成为新的leader。为了避免同时发起投票都成为leader节点,每个candidate发起投票使用了一段随机时间。简要理解就是这样,深入理解还有任期等复杂机制,我们先理解简要的就可以了。

一致性实现

交互图

一致性raft实现需要很多模块的配合:

一个etcd,包含的东西可不少,对于关键的技术点我们需要注意。

为什么需要这么多模块,是raft协议的要求,当发起put操作时,先把日志写入wal并发送到follower,当follower半数承认后,才会把数据提交到boltdb写入。

watch机制

watch机制是核心功能


watch

通过上图可以看到,一个gprc流可以支持多个watch操作,这都是因为grpc使用了http2,http2是可以支持流式处理,不需要每个watch一个链接,所以能支持海量watch。watch是k8s控制器的核心依赖。

etcd的性能

在微服务或者组件设计,特别是k8s,会把etcd作为状态持有者,如果etcd出了问题,会导致整个集群都出现问题,可见etcd的重要性。

为了确保etcd的稳定和性能,有很多需要考虑的地方,例如:

小结

etcd进化到v3达到工程化着实不易,通用我们看到开源的力量,一个组件只有开源,才能不断进化,有更大的场景和用户。
下一节再学习一下etcd在真实的k8s中的交互。

上一篇下一篇

猜你喜欢

热点阅读