個人習慣把etcd拆解,劃分一下幾個模塊:

對外接口模塊:主要是通過grpc來對外實現(xiàn)通信。
raft模塊:主要作用是使etcd構成的集群對外看起來是一個整體,提供所謂的分布式存儲的功能。raft在etcd中的實現(xiàn)介紹比較好的 文章為:http://www.itdecent.cn/p/5aed73b288f7
wal模塊:預寫日志模塊。主要作用是提供數(shù)據(jù)在存儲之前,先寫入日志功能,便于故障恢復。內(nèi)部還可以繼續(xù)分為日志和快照兩部分。日志部分為真實數(shù)據(jù)日志記錄,快照部分為定時為日志部分生成快照,避免日志記錄過多導致磁盤寫滿。
存儲模塊:etcd把key索引存儲在內(nèi)存中,把value執(zhí)行為落盤。采用的mvcc機制實現(xiàn)的存儲模塊。這方面介紹比較好的文章是:https://mp.weixin.qq.com/s?__biz=MzAxMTA4Njc0OQ==&mid=2651442478&idx=2&sn=05a3ec4991f1f38cc7f8d47b4927422e&scene=21#wechat_redirect
補充:
etcd工作流程說明比較好的文章為:https://zhuanlan.zhihu.com/p/54996432
etcd租約介紹比較好的文章:https://my.oschina.net/u/4300698/blog/3382491
etcd的watch機制介紹比較好的文章:https://segmentfault.com/a/1190000021787055