十 写一致性原理

一 综述

在发送增删改操作的时候,可以带上一个consistency参数来指明写一致性是什么。put /index/type/id?consistency=quorum

有三种写一致性:

1. one:只要有一个primary shard是active活跃可用的,就可以执行。

2. all:要求所有的primary shard和replica shard都是活跃的,才可以执行。

3. quorum:默认值,要求所有shard中大部分的shard都是活跃可用的,才可以执行。

二 quorum机制

写之前必须确保大多数shard都可用,计算公式如下:

quroum = int( (primary + number_of_replicas) / 2 ) + 1

当number_of_replicas>1时才生效(也就是说,number_of_replicas<=1时,不会启用quorum机制),number_of_replicas是指每个shard拥有的副本数,而不是副本数总和。

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值