Posts tagged with etcd


最近在看etcd的相关源码,从简单的raftexample进行代码入手是一个不错的方案。相应代码入口在etcd-io/etcd/contrib/raftexample,建议可以先从github上将对应clone下来对照着来会好些。 raftexample大致流程图 我尝试用过先整理整个大概框架,然后再通过细分讲解里面具体模块的方式来说明这个服务的处理流程。 挑里面的重点,简单讲解下流程 这个示例中,我们Server支持PUT、GET、POST、DELETE共四种请求方式,分别对应的也是数据的更新和获取,配置的新增和删除; 步骤1、2,我们以其中的PUT方法展开说明,当收到client发送过来的数据更新或新建操作后,首先会调用我们的状态机(KVStore)向我们的通信管道(proposeC)发送数据; 步骤3,raftNode模块从管道proposeC中监听到有数据事件到来后会将该数据继续往下层模块node传递,node模块也算是我们raft协议里面实现的核心部分,在这个地方我们先记住它是预先对我们数据进行了一些简单处理。随后node模块会通过另外一个管道告知我们数据预处理好了; 步骤4,当raftNode收到从nkvode模块传递上来的准备就绪信息后就开始进行余下的操作,…