什么是 ETCD
官方定义为:Distributed reliable key-value store for the most critical data of a distributed system
简单直直译对就是:分布式系统中最关键的数据进行可靠的键值存储
ETCD 名字含义
/etc 是linux 操作系统的配置存储目录, d durtubute 分布式缩写,简单理解为分布式配置数据库。
ETCD 特性和应用场景
ETCD主要为了存储系统关键配置数据,配置数据很少修改,符合读多写少特性,根据此特性采用MVCC(MVCC Multi-Version Concurrency Control)进行读写冲突控制(锁机制)来提高读写效率。
ETCD利用btree实现数据索引,提高数据读取效率。
ETCD带有版本号,可以访问旧版本的数据,
ETCD本身提供了事务机制(类比思考:关系型数据库事务)
ETCD主要为了解决了分布式场景中最为常见的一致性问题,采用
raft一致性算法机制来实现。
ETCD提供了数据和服务的高可用,也是利用了raft一致性算法,同步多台服务器数据,部分节点挂掉不影响服务提供。
ETCD通过watch机制,实现配置文件自动更新检测,可以实现服务的动态配置。
ETCD 底层实现概述
底层数据存储采用BoltDB 一个简单的支持事务的golang写的kv数据库,
基于分布式协议 Raft来实现选主(Leader Election)、复制日志(Log Replication), 实现数据高可用(多服务器备份)和服务高可用(允许部分节点挂掉)。
理解ETCD原理核心是理解raft算法,ETCD实现了一个基于raft扩展算法的库,是一个很经典的实现。raft算法是Paxos算法的简化实现,方便进行工程化,目前在分布式系统中应用较为广泛。 TiDB开始也使用ETCD,后来移植ETCD raft 算法库,实现了自己的raft一致性算法功能。raft算法本身较为复杂感兴趣的朋友 可以自己看相关的文章,然后可以细研究下ETCD raft 算法库,相信会对分布式系统认识会有大的提升。
有疑问加站长微信联系(非本文作者)