ES 写一致性

写一致性在发送任何一个增删改查的时候,比如说PUT /index/type/id,都可以带上一个consistency参数,指定想要的写一致性是什么

PUT /index/type/id?consistency=one

one : 要求写操作只要在primary shard是active可用的就可以执行

all : 要求所有的primary和replica都是active才可以执行,不能有冗机

quarum(默认值) : 要求所有的shard中必须是大部分的shard都是active的,可用的<!--more-->

quarum机制

quarum = int( (primary + number_of_replica) / 2) + 1

例如,3个primary shard,number_of_replica = 1,共六个shard综上所述,利用quarum机制计算得出quram = ((3 + 1) / 2) + 1 = 3,必须在6个shard中有3个shard为可用时才能够进行写入

如果节点数量小于quarum数量,可能导致quarum不齐全,进而导致无法执行任何写操作 ES提供了一种特殊的处理场景,当number_of_replica>1时才生效

quarum不齐全时,默认等待60s在写操作时候,可以使用timeout参数

PUT /index/type/id?timeout=30s

不加s默认毫秒

标签: quarum、shard、replica、primary、齐全、面试
  • 回复
隐藏