首页 > 其他分享 >31_分布式文档系统_图解写一致性原理以及quorum机制深入剖析

31_分布式文档系统_图解写一致性原理以及quorum机制深入剖析

时间:2024-10-01 19:45:04浏览次数:6  
标签:number quorum replicas 31 primary shard replica 图解

(1)consistency,one(primary shard),all(all shard),quorum(default)

我们在发送任何一个增删改操作的时候,比如说put /index/type/id,都可以带上一个consistency参数,指明我们想要的写一致性是什么?
put /index/type/id?consistency=quorum

one:要求我们这个写操作,只要有一个primary shard是active活跃可用的,就可以执行
all:要求我们这个写操作,必须所有的primary shard和replica shard都是活跃的,才可以执行这个写操作
quorum:默认的值,要求所有的shard中,必须是大部分的shard都是活跃的,可用的,才可以执行这个写操作

(2)quorum机制,写之前必须确保大多数shard都可用,int( (primary + number_of_replicas) / 2 ) + 1,当number_of_replicas>1时才生效

quroum = int( (primary + number_of_replicas) / 2 ) + 1
举个例子,3个primary shard,number_of_replicas=1,总共有3 + 3 * 1 = 6个shard
quorum = int( (3 + 1) / 2 ) + 1 = 3
所以,要求6个shard中至少有3个shard是active状态的,才可以执行这个写操作

(3)如果节点数少于quorum数量,可能导致quorum不齐全,进而导致无法执行任何写操作

3个primary shard,replica=1,要求至少3个shard是active,3个shard按照之前学习的shard&replica机制,必须在不同的节点上,如果说只有1台机器的话,是不是有可能出现说,3个shard都没法分配齐全,此时就可能会出现写操作无法执行的情况

1个primary shard,replica=3,quorum=((1 + 3) / 2) + 1 = 3,要求1个primary shard + 3个replica shard = 4个shard,其中必须有3个shard是要处于active状态的。如果这个时候只有2台机器的话,会出现什么情况呢?

es提供了一种特殊的处理场景,就是说当number_of_replicas>1时才生效,因为假如说,你就一个primary shard,replica=1,此时就2个shard
(1 + 1 / 2) + 1 = 2,要求必须有2个shard是活跃的,但是可能就1个node,此时就1个shard是活跃的,如果你不特殊处理的话,导致我们的单节点集群就无法工作

(4)quorum不齐全时,wait,默认1分钟,timeout,100,30s

等待期间,期望活跃的shard数量可以增加,最后实在不行,就会timeout
我们其实可以在写操作的时候,加一个timeout参数,比如说put /index/type/id?timeout=30,这个就是说自己去设定quorum不齐全的时候,es的timeout时长,可以缩短,也可以增长


标签:number,quorum,replicas,31,primary,shard,replica,图解
From: https://www.cnblogs.com/siben/p/18443154

相关文章

  • 32_分布式文档系统_document查询内部原理图解揭秘
    1、客户端发送请求到任意一个node,成为coordinatenode2、coordinatenode对document进行路由,将请求转发到对应的node,此时会使用round-robin随机轮询算法,在primaryshard以及其所有replica中随机选择一个,让读请求负载均衡3、接收请求的node返回document给coordinatenode4、coor......
  • 23_图解partial update实现原理以及动手实战演练
    课程大纲1、什么是partialupdate?PUT/index/type/id,创建文档&替换文档,就是一样的语法一般对应到应用程序中,每次的执行流程基本是这样的:(1)应用程序先发起一个get请求,获取到document,展示到前台界面,供用户查看和修改(2)用户在前台界面修改数据,发送到后台(3)后台代码,会将用户修改的......
  • 10_shard&replica机制再次梳理以及单node环境中创建index图解
    1、shard&replica机制再次梳理2、图解单node环境下创建index是什么样子的1、shard&replica机制再次梳理(1)index包含多个shard(2)每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力(3)增减节点时,shard会自动在nodes中负载均衡(4)primaryshard和......
  • 12_分布式原理_图解横向扩容过程,如何超出扩容极限,以及如何提升容错性
    1、图解横向扩容过程,如何超出扩容极限,以及如何提升容错性(1)primary&replica自动负载均衡,6个shard,3primary,3replica(2)每个node有更少的shard,IO/CPU/Memory资源给每个shard分配更多,每个shard性能更好(3)扩容的极限,6个shard(3primary,3replica),最多扩容到6台机器,每个shard可以占用单......
  • 17_document的全量替换、强制创建以及图解lazy delete机制
    1、document的全量替换2、document的强制创建3、document的删除1、document的全量替换(1)语法与创建文档是一样的,如果documentid不存在,那么就是创建;如果documentid已经存在,那么就是全量替换操作,替换document的json串内容(2)document是不可变的,如果要修改document的内容,第一种......
  • 20_图解Elasticsearch内部如何基于_version进行乐观锁并发控制
    1、图解Elasticsearch内部如何基于_version进行乐观锁并发控制(1)_version元数据PUT/test_index/test_type/6{"test_field":"testtest"}{"_index":"test_index","_type":"test_type","_id":"6",&......
  • 14_初步解析document的核心元数据以及图解剖析index创建反例
    1、_index元数据2、_type元数据3、_id元数据{"_index":"test_index","_type":"test_type","_id":"1","_version":1,"found":true,"_source":{"test_content":&quo......
  • 3319 哈夫曼树 优先队列 最小堆
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e3+10,inf=0x3f3f3f3f;//优先队列(最小堆),用于存储叶结点的权值priority_queue<int,vector<int>,greater<int>>q;intn,ans,x;intmain(){//读取叶结点的数量......
  • 触摸芯片SI314替代 GTX314L—低功耗14通道电容触摸传感器芯片 应用智能门锁动能世纪
    1.介绍Si314是一款具有自动灵敏度校准功能的14通道电容传感器,其工作电压范围为1.8~5.5v.Si314设置休眠模式来节省功耗,此时,功耗电流为[email protected]。Si314各个感应通道可实现独立使能、校准、灵敏度调节,可以确保可靠性,且具有自适应滤波功能,以应对各种噪音和环境变化。I2C串行接口可......
  • 图解Docker Compose 架构设计分析与全攻略:构建、扩展和管理你的容器(第一部分)
    DockerCompose是Docker官方编排工具,它允许用户通过简洁的YAML文件定义多容器的Docker应用程序。无论是开发者、系统管理员还是DevOps工程师,DockerCompose都能帮助轻松地管理复杂的服务堆栈。通过本文,将深入了解DockerCompose的强大功能和使用场景,探索如何利......