ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

es 写一致性解析

2019-08-25 16:03:44  阅读:357  来源: 互联网

标签:quorum shard timeout 一致性 操作 解析 es


我们都知道,es存储的时候分主副分片来提高高可用,那es是如何确定写一致性的呢,下面我们一起了解一下。

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

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

这里着重介绍一下quorum,quorum机制,写之前必须确保大多数shard都可用,如下算法:shardNum = int( (primary + number_of_replicas) / 2 ) + 1,只有至少shardNum个节点处于active状态才能执行写操作。

但是这里我们要注意一点,举例说明:比如新建一个索引,有一个主分片,一个副分片,那(1 + 1/2) + 1 = 2,那就必须要有两个节点活跃才能执行写操作,那咱们要是只有单节点集群,这就无法玩了,所以es对这种特殊情况,做了处理,就是说当number_of_replicas>1时才生效。

另外quorum不齐全时,不会立即判定写入失败,而是进入wait状态,默认1分钟,等待期间,期望活跃的shard数量可以增加,最后实在不行,就会timeout我们其实可以在写操作的时候,加一个timeout参数,比如说put /index/type/id?timeout=30,这个就是说自己去设定quorum不齐全的时候,es的timeout时长,可以缩短,也可以增长

es写入一致性就介绍到这里,如有帮助请关注,谢谢!

标签:quorum,shard,timeout,一致性,操作,解析,es
来源: https://blog.csdn.net/macro_csdn/article/details/100064055

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有