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介绍的更多相关文章

  1. MemSQL分布式架构介绍(一)

    最近在了解MemSQL架构,看了些官方文档,在这里做个记录,原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ ...

  2. MemSQL分布式架构介绍(二)

    接上次的MemSQL分布式架构介绍(一),原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ 首先上张图,是我 ...

  3. Elasticsearch 6.x版本全文检索学习之分布式特性介绍

    1.Elasticsearch 6.x版本全文检索学习之分布式特性介绍. 1).Elasticsearch支持集群默认,是一个分布式系统,其好处主要有两个. a.增大系统容量,如内存.磁盘.使得es集 ...

  4. Celery学习---Celery 分布式队列介绍及安装

    Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, ...

  5. etcd介绍

    etcd是一个开源的.分布式的键值对数据存储系统,提供共享配置.服务的注册和发现. etcd与zookeeper相比算是轻量级系统.etcd的raft比zookeeper的paxos简单. 我们用et ...

  6. Etcd学习(一)安装和.NETclient測试

    Etcd是一个比較新的分布式协调框架,由CoreOS的开发团队开发,如今才仅仅到0.4.6版本号,还没公布1.0版本号 我看了一下GitHub上作者们的提交记录,如今应该还在如火如荼的开发以及改动Bu ...

  7. Go语言学习之12 etcd、contex、kafka消费实例、logagent

    本节内容:    1. etcd介绍与使用    2. ElastcSearch介绍与使用 1. etcd介绍与使用    概念:高可用的分布式key-value存储,可以使用配置共享和服务发现    ...

  8. go etcd

    etcd介绍 GitHub:https://github.com/coreos/etcd 官网:https://coreos.com/etcd/ 下载:https://github.com/coreo ...

  9. Go操作etcd

    etcd是近几年比较火热的一个开源的.分布式的键值对数据存储系统,提供共享配置.服务的注册和发现,本文主要介绍etcd的安装和使用. etcd etcd介绍 etcd是使用Go语言开发的一个开源的.高 ...

  10. 彻底搞懂 etcd 系列文章(一):初识 etcd

    0 专辑概述 etcd 是云原生架构中重要的基础组件,由 CNCF 孵化托管.etcd 在微服务和 Kubernates 集群中不仅可以作为服务注册与发现,还可以作为 key-value 存储的中间件 ...

随机推荐

  1. 【转载】Adobe Acrobat XI Pro闪退原因及解决办法

    https://www.cnblogs.com/zohoo/p/12704689.html https://www.cnblogs.com/zohoo/p/12704689.html

  2. 整合Junit5

    1.引入依赖 <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-j ...

  3. List集合拆分为多个List

    List切分为多个List 使用SubList实现分批处理 // 创建模拟list List<Integer> dataList = new ArrayList<>(); fo ...

  4. 掌控安全学院SQL注入靶场-布尔盲注(三)

    测试了username参数,没有发现注入 123456' or '1'='1 123456' or '1'='2 第二种注入方法

  5. Mac 启动转换助理 安装 win10

    Mac 启动转换助理 安装 win10 Mac的处理器 是Inter芯 才有该功能 打开启动转换助理/Bootcamp 设置分区大小 win10安装完成后 在左侧的此电脑中找到咱们的Boot Camp ...

  6. EXE项目和DLL项目远程调试、Props设置说明

    通用宏设置 exe项目根据平台.配置设置输出路径: dll项目根据平台.配置设置输出路径,dll文件.lib文件分别输出到自己的路径: 中间文件根据平台.配置.项目设置输出路径: 设置远程调试命令.远 ...

  7. OKHttp 之--------http/https协议处理方法 (Finn_ZengYuan博客)

    如果遇到okttp需要使用https协议,那么就需要在支持ssl,不说了,撸码搞起: 加入下面代码即可搞定:主要就是设置 builder.sslSocketFactory(sslParams.sSLS ...

  8. 【C++】之前学习C++没有注意到的点或者学到了冷知识(待补充)

    1.string和c_str() string str = "hello"; const char* cstr = str.c_str(); str = "yep,i m ...

  9. NOI 1.7编程基础之字符串

    11:潜伏者 1.描述 R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动. 历经艰险后,潜伏于S国的R国间谍小C终于摸清了S国军用密码的编码规则: 1.    S国军方内部欲发送的原信 ...

  10. 如何手动安装python模块包package

    我们不用Cd C:\Users\xxx.xx\AppData\Local\Programs\Python\Python311 Python -m pip install openpyxl的方法. 解答 ...