13、db大小:为什么etcd社区建议db大小不超过8G

你好,我是唐聪。 在[03]写流程中我和你分享了etcd Quota模块,那么etcd为什么需要对db增加Quota限制,以及不建议你的etcd集群db大小超过8G呢? 过大的db文件对集群性能和稳定性有哪些影响? 今天我要和你分享的主题就是关于db...

ETCD实战课

12、一致性:为什么基于Raft实现的etcd还会出现数据不一致

你好,我是唐聪。 今天我要和你分享的主题是关于etcd数据一致性的。 我们都知道etcd是基于Raft实现的高可用、强一致分布式存储。但是有一天我和小伙伴王超凡却遭遇了一系列诡异的现象:用户在更新Kubernetes集群中的Deployment资源镜...

ETCD实战课

11、压缩:如何回收旧版本数据

你好,我是唐聪。 今天是大年初一,你过年都有什么安排?今年过年对我来说,其实是比较特别的。除了家庭团聚走亲访友外,我多了一份陪伴。感谢你和我在这个专栏里一块精进,我衷心祝你在新的一年里平安喜乐,万事胜意。 这节课是我们基础篇里的最后一节,正巧这节课的...

ETCD实战课

10、boltdb:如何持久化存储你的key、value数据

你好,我是唐聪。 在前面的课程里,我和你多次提到过etcd数据存储在boltdb。那么boltdb是如何组织你的key-value数据的呢?当你读写一个key时,boltdb是如何工作的? 今天我将通过一个写请求在boltdb中执行的简要流程,分析其...

ETCD实战课

9、事务:如何安全地实现多key操作

你好,我是唐聪。 在软件开发过程中,我们经常会遇到需要批量执行多个key操作的业务场景,比如转账案例中,Alice给Bob转账100元,Alice账号减少100,Bob账号增加100,这涉及到多个key的原子更新。 无论发生任何故障,我们应用层期望的...

ETCD实战课

8、Watch:如何高效获取数据变化通知

你好,我是唐聪。 在Kubernetes中,各种各样的控制器实现了Deployment、StatefulSet、Job等功能强大的Workload。控制器的核心思想是监听、比较资源实际状态与期望状态是否一致,若不一致则进行协调工作,使其最终一致。 那...

ETCD实战课

7、MVCC:如何实现多版本并发控制

你好,我是唐聪。 在[01]课里,我和你介绍etcd v2时,提到过它存在的若干局限,如仅保留最新版本key-value数据、丢弃历史版本。而etcd核心特性watch又依赖历史版本,因此etcd v2为了缓解这个问题,会在内存中维护一个较短的全局事...

ETCD实战课

6、租约:如何检测你的客户端存活

你好,我是唐聪。 今天我要跟你分享的主题是租约(Lease)。etcd的一个典型的应用场景是Leader选举,那么etcd为什么可以用来实现Leader选举?核心特性实现原理又是怎样的? 今天我就和你聊聊Leader选举背后技术点之一的Lease, ...

ETCD实战课

5、鉴权:如何保护你的数据安全

你好,我是唐聪。 不知道你有没有过这样的困惑,当你使用etcd存储业务敏感数据、多租户共享使用同etcd集群的时候,应该如何防止匿名用户访问你的etcd数据呢?多租户场景又如何最小化用户权限分配,防止越权访问的? etcd鉴权模块就是为了解决以上痛点...

ETCD实战课

4、Raft协议:etcd如何实现高可用、数据强一致的

你好,我是唐聪。 在前面的etcd读写流程学习中,我和你多次提到了etcd是基于Raft协议实现高可用、数据强一致性的。 那么etcd是如何基于Raft来实现高可用、数据强一致性的呢? 这节课我们就以上一节中的hello写请求为案例,深入分析etcd...

ETCD实战课