分布式-Etcd介绍
Etcd客户端基本操作
提供了如下操作接口:
- put - 添加一个新的 key-value 到存储中
- get - 获取一个 key 的 value
- delete - 删除节点
- range - 获取一个范围的 key 的 value,例如:key1 - key10
- txn(Transaction) - 读、if-else、修改、写的组合(事务处理)
- watch - 监控一个或一个范围的 key,发生变化后就会得到通知
Etcd整体架构
gRPC Server:集群之间的通讯及Server与Client之间的通讯
Boltdb:是支持事务的KV数据库,boltdb为每一个key都创建了一个索引(B+树),B+树中存储了这个key的版本信息(如下)

- raft_term任期,每一个Leader当选,任期就+1
- revision:全局版本号,只要对etcd进行修改,全局版本号就+1
- create_revision:创建key时的全局版本号
- mod_revision:修改key时的全局版本号
步骤:
0)写请求发送
1)转发给Leader
2)Leader写日志记录,
2.1)Leader将写日志操作广播到Follower
2.2)Follower写日志
3)Follower返回ack表示收到
4)Leader提交写数据到磁盘
4.1)Leader广播commit信息到Follower
4.2)Follower提交数据到磁盘
Etcd一致性实现 raft机制
raft是Etcd的一致性实现机制,主要包括集群的Leader选举、数据复制、http://thesecretlivesofdata.com/raft/
Leader选举
0)集群三个节点为例
1)当未收到Leader发送的消息,则三个节点分别随机产生时间进行选举倒计时,谁先倒计时完成,谁成为候选者
2)候选者term任期+1,对自己的vote投票数+1,候选者节点重新选举倒计时,并向其他节点发送投票消息
3)其他节点收到消息后回复,也分别重新开始倒计时
4)候选者收到>n/2的消息,则自动成为Leader
5)成为Leader后,Leader会发送心跳/数据给Follower节点,每次Follower节点收到后都会重置选举倒计时
6)如果Leader节点Down机,循环1)->5)
Log复制
流程如上架构图
Etcd分布式锁机制
Lease租约(过期时间):etcd将过期时间相同的key放在一起,称为一个租约
续约:一般在主线程下再开启一个子线程专门用来续约,在租约时长还剩1/3时进行续约
1.获取锁,即存个key并规定这个key的过期时间(Lease),如果存在key则锁存在,如果key过期则无锁。
2.在获取锁的主线程下,开一个子线程专门用来续约,如果主线程没有执行完,则在租约时长还剩1/3时子线程会进行续约。
所以,如果服务Down掉,子线程也会Down掉,则锁到租期后会自动解锁。
分布式-Etcd介绍的更多相关文章
- MemSQL分布式架构介绍(一)
最近在了解MemSQL架构,看了些官方文档,在这里做个记录,原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ ...
- MemSQL分布式架构介绍(二)
接上次的MemSQL分布式架构介绍(一),原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ 首先上张图,是我 ...
- Elasticsearch 6.x版本全文检索学习之分布式特性介绍
1.Elasticsearch 6.x版本全文检索学习之分布式特性介绍. 1).Elasticsearch支持集群默认,是一个分布式系统,其好处主要有两个. a.增大系统容量,如内存.磁盘.使得es集 ...
- Celery学习---Celery 分布式队列介绍及安装
Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, ...
- etcd介绍
etcd是一个开源的.分布式的键值对数据存储系统,提供共享配置.服务的注册和发现. etcd与zookeeper相比算是轻量级系统.etcd的raft比zookeeper的paxos简单. 我们用et ...
- Etcd学习(一)安装和.NETclient測试
Etcd是一个比較新的分布式协调框架,由CoreOS的开发团队开发,如今才仅仅到0.4.6版本号,还没公布1.0版本号 我看了一下GitHub上作者们的提交记录,如今应该还在如火如荼的开发以及改动Bu ...
- Go语言学习之12 etcd、contex、kafka消费实例、logagent
本节内容: 1. etcd介绍与使用 2. ElastcSearch介绍与使用 1. etcd介绍与使用 概念:高可用的分布式key-value存储,可以使用配置共享和服务发现 ...
- go etcd
etcd介绍 GitHub:https://github.com/coreos/etcd 官网:https://coreos.com/etcd/ 下载:https://github.com/coreo ...
- Go操作etcd
etcd是近几年比较火热的一个开源的.分布式的键值对数据存储系统,提供共享配置.服务的注册和发现,本文主要介绍etcd的安装和使用. etcd etcd介绍 etcd是使用Go语言开发的一个开源的.高 ...
- 彻底搞懂 etcd 系列文章(一):初识 etcd
0 专辑概述 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管.etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册与发现,还可以作为 key-value 存储的中间件 ...
随机推荐
- Install Argo Workflows
Install Argo Workflows Release v3.4.3 · argoproj/argo-workflows (github.com) CLI # Download the bina ...
- usb 2.0 request
- debian11下载软件包及依赖(本地使用)
记录下实践情况,原文: https://blog.csdn.net/zgp210317/article/details/120586189?spm=1001.2101.3001.6650.2& ...
- 用有限差分估计(Finite Difference Estimate)解决地理坐标与平面像素坐标转换过程的误差造成风场粒子向量失真问题
下载NCEP的气象场grib2数据,风场是二维的向量,包含u和v两个分量.这个用经纬度投影到像素坐标会产生误差,直接绘制效果不太对:( 通过插值计算得到风场粒子的预测数据wind = interp ...
- OC基础 - iOS在枚举赋值时为何采用左移格式
枚举值 1 - iOS 枚举成员在赋值时往往是如下模式:左移对齐 2 - 为何这般设计 ?其一提高了阅读性:其二便于计算,能够更好的表达枚举值的含义 1 #import "ViewContr ...
- [Oracle19C 数据库管理] 管理PDB
更改PDB的打开模式 RESTRICT模式 维护时使用,可以让只有RESTRICT权限的用户才能连接到数据库,其他用户无法连接. ALTER PLUGGABLE DATABASE 数据库名 CLOSE ...
- 蓝桥杯训练赛二-1199 问题 E: 哥德巴赫曾猜测
题目描述 德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和.但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对 输入 输 ...
- IT部门一线主管要如何才能对员工的某项工作的时间和难度评估心里有数?
自己去处理一些棘手的问题,并趁此机会了解系统的逻辑,评估复杂度,是复杂度,不是具体的内容,然后把这个印象记住. 定一个需求,请员工去做,看看完成到底需要多久,在做的过程中或者做完之后,跟他讨论实现的过 ...
- python func_timeout 设置函数超时退出
使用func_timeout设置函数超时退出,使用func_set_timeout装饰器和func_timeout方法 from func_timeout import func_set_timeou ...
- 【Python】语言的控制流程
二.Python语言的控制流程 1.程序的组织结构 1.1 顺序结构:从上到下顺序的执行代码,直到程序结束,没有任何判断和跳转 1.2 选择结构:根据判断条件的布尔值选择性的执行部分代码:if语句 1 ...