美文网首页ElasticSearch入门玩转大数据elasticsearch
三十、Elasticsearch一致性和quorum机制深入剖析

三十、Elasticsearch一致性和quorum机制深入剖析

作者: 编程界的小学生 | 来源:发表于2017-07-08 14:05 被阅读276次

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可用
(1)公式:
int((primary shard + number_of_replicas) / 2) + 1
当number_of_replicas > 1时才生效。

(2)举例
3个primary shard,1个副本,则
int((3 + 1) /2) + 1 = 3;
所以要求6个shard中至少有3个shard是active状态的,才可以执行这个写操作

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

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

Paste_Image.png

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分钟
默认1分钟,可以设置timeout手动去调,默认单位毫秒。

等待期间,期望活跃的shard数量可以增加,最后实在不行,就会timeout,我们其实可以在写操作的时候,加一个timeout参数,比如说PUT /index/type/id?timeout=30s,这个就是说自己去设定quorum不齐全的时候,ES的timeout时长。默认是毫秒,加个s代表秒

若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:


qrcode_for_gh_577b64e73701_258.jpg

相关文章

网友评论

  • 5dd2bbe1c6ec:我这里理解上感觉有问题,望大佬指点,这里的计算我有困惑,在上面的计算中如果 replica shard 不是1 而是2 的话,这里的 shard 总数就是 9个, 按照公式计算的话就有 quorum 就是 4, 4相比于9来说应该不是大多数吧,虽然这里所有的 primary shard 都能留住,但是如果 primary shard 很多,比如是 10个primary shard ,number_of_replicas = 2,这样 quorum = 7 这样的话全部的 primary shard 都不保不住。。。这里不太明白,望指点下下。。刚刚接触的 es小白,望大佬指点。。
    bb911dc4f283:看了文章我也有点困惑,但我的理解是 primary + replicas, 应该不是指的所有的primary shard。 如果有3个primary shard, replicas是1 那么 quorum应该是 (1+1)/2+1 = 2。 这样就保证了如果有两个节点,过半就是2。 这里不能用 (3+1)/2+1 = 3来算。 只是说出我的想法,如果不对,轻喷。

本文标题:三十、Elasticsearch一致性和quorum机制深入剖析

本文链接:https://www.haomeiwen.com/subject/ziodhxtx.html