ETCD原理和基本实现

王司技术谈 · · 1935 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:王司技术谈

查看原文:ETCD原理和基本实现

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1935 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传