etcd是一个使用Go语言编写的分布式键值存储系统,是CNCF(Cloud Native Computing Foundation)的核心项目之一。它提供了高可用性、一致性和分布式事务的支持。
etcd的服务端模块是etcd的核心模块,它定义了主要的接口和数据交互格式,并解决了以下问题:
etcd服务端主要由几个组件构成,下面对每个组件进行介绍:
EtcdServer
:主进程,包含了多个核心组件,如raftNode
、WAL
、snapshotter
等,可以理解为一个容器[1]。raftNode
:对内部RAFT协议实现的封装,暴露简单的接口,用于保证写事务的集群一致性[1]。etcd服务器通过Etcd
结构抽象,对应了etcdserver/server.go
中的代码。它包含了属性r
,代表RAFT集群中的一个节点。在启动过程中,会调用EtcdServer.NewServer()
来创建一个新的服务器实例[1]。
etcd的启动流程主要包括以下几个步骤[1]:
etcdserver.NewServer()
创建一个新的服务器实例。node.run()
[1]。raftNode.start()
[1]。除了服务端设计外,etcd还包含其他重要的组件,如:
mvcc
:用于实现多版本并发控制的存储引擎,提供了对键值对的读写操作[1]。lessor
:用于管理租约,即键值对的过期时间和自动删除[1]。authStore
:用于管理用户认证和授权的存储引擎[1]。Learn more:
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!