ETCD原理和基本实现

2020-04-07  本文已影响0人  王司技术谈

什么是 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 算法库,相信会对分布式系统认识会有大的提升。

上一篇下一篇

猜你喜欢

热点阅读