ElasticSearch汇总请查看:ElasticSearch教程——汇总篇

一致性概念

在分布式环境下,一致性指的是多个数据副本是否能保持一致的特性。
在一致性的条件下,系统在执行数据更新操作之后能够从一致性状态转移到另一个一致性状态。
对系统的一个数据更新成功之后,如果所有用户都能够读取到最新的值,该系统就被认为具有强一致性。

写一致性

对于写操作,Elasticsearch支持与大多数其他数据库不同的一致性级别,它允许初步检查以查看有多少个分片可用于允许写入。可用的选项是:consistency的可设置的值为:one、all和quorum。默认情况下,它被设置为:quorum,这意味着只有当大多数分片可用时,才允许写入操作。在大部分分片可用的情况下,由于某种原因,写入复制副本分片失败仍然可能发生,在这种情况下,副本被认为是错误的,该分片将在不同的节点上进行重建。

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

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

quorum机制

写之前必须确保大多数shard都可用,int( (primary + number_of_replicas) / 2 ) + 1,当number_of_replicas>1时才生效,number_of_replicas是在索引中的的设置,用来定义复制分片的数量,如果只有一台机器(没有备机),那么就为0。

计算公式

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状态的,才可以执行这个写操作。

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

看清上面说的,是有可能,并不是一定,按照我下图的分配,就不会出现相关问题。具体的分片相关知识以及注意点可以看ElasticSearch教程——分片、扩容以及容错机制

注意: 新索引默认有1个复制分片,这意味着为了满足quorum的要求需要两个active的分片。当然,这个默认设置将阻止我们在单一节点集群中进行操作。为了避开这个问题,规定数量只有在number_of_replicas大于一时才生效。

timeout

quorum不齐全时,会wait(等待),默认1分钟,可以设置timeout手动去调,默认单位毫秒。
等待期间,期望活跃的shard数量可以增加,最后实在不行,就会timeout,我们其实可以在写操作的时候,加一个timeout参数,比如说

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

这个就是说自己去设定quorum不齐全的时候,ES的timeout时长。默认是毫秒,加个s代表秒。

读一致性

对于读操作,新文档在刷新间隔时间后才能用于搜索。为了确保搜索结果来自最新版本的文档,可以将复制(replication)设置为sync(默认值)(同步),当在主分片和副本分片的写操作都完成后,写操作才返回。在这种情况下,来自任何分片的搜索请求将从文档的最新版本返回结果。甚至如果你的应用要求高索引吞吐率(higher indexing rate)时,replication=async(异步),可以为搜索请求设置 '_preference' 参数为 primary 。这样搜索请求会查询主分片,从而保证结果中的文档是最新版本。

ElasticSearch教程——数据一致性相关推荐

  1. ElasticSearch教程——汇总篇

    环境搭建篇 ElasticSearch教程--安装 ElasticSearch教程--安装Head插件 ElasticSearch教程--安装IK分词器插件 ElasticSearch教程--安装Ki ...

  2. (转)ElasticSearch教程——汇总篇

    https://blog.csdn.net/gwd1154978352/article/details/82781731 环境搭建篇 ElasticSearch教程--安装 ElasticSearch ...

  3. 适用于Java开发人员的Elasticsearch教程

    课程大纲 Elasticsearch是基于Lucene的搜索引擎. 它提供了具有HTTP Web界面和无模式JSON文档的分布式多租户全文搜索引擎. Elasticsearch是用Java开发的,并根 ...

  4. elasticsearch 索引存储深入详解(Elasticsearch教程03)|MVP讲堂

    作者:阿里云MVP 铭毅 往期内容: 死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招! Elasticsearch学习,请先看这一篇!(Elasticsearch教程01 ...

  5. ElasticSearch教程——proximity match 近似匹配

    ElasticSearch汇总请查看:ElasticSearch教程--汇总篇 1.什么是近似匹配 两个句子 java is my favourite programming language, an ...

  6. ElasticSearch教程——创建索引、类型、文档

    ElasticSearch汇总请查看:ElasticSearch教程--汇总篇 介绍 索引是ElasticSearch存放数据的地方,可以理解为关系型数据库中的一个数据库.事实上,我们的数据被存储和索 ...

  7. Elasticsearch教程(4) High Level REST Client API 查询 聚合 分组

    ES High Level REST Client API 查询 聚合 1 准备数据 1.1 插入测试数据 2 Maven引入ES 3 创建Client 4 查询API 4.1 根据id查询单条数据 ...

  8. 关于Elastic、关于Elasticsearch教程

    不写教程就会感到寂寞. 国庆期间,著名的数据搜索公司Elastic在纽交所上市,股票发行价为36美元,Elastic上市首日最高股价为74.2美元,最高涨幅达到106%.于是网上有人感叹,这么多年,终 ...

  9. ES篇:ElasticSearch教程——创建索引、类型、文档

    ES知识汇总:https://blog.csdn.net/gwd1154978352/article/details/82781731 介绍 索引是ElasticSearch存放数据的地方,可以理解为 ...

  10. ElasticSearch教程——cardinality(去重)算法之优化内存开销以及HLL算法

    ElasticSearch汇总请查看:ElasticSearch教程--汇总篇 说明,一般使用第一种和第二种方法,很少使用第三种HLL优化(效果不是特别明显) 1.cardinality语法 es,去 ...

最新文章

  1. Spark采坑系列(三)Spark操作Hive的坑
  2. java中关键字volatile的作用(转载)
  3. python并发编程之多进程理论部分
  4. python程序能不能在安卓手机上跑-如何在手机上运行Python与及编程
  5. 北京内推 | 微软亚洲互联网工程院(STCA)招聘NLP算法实习生
  6. word手写字体以假乱真_学会Word上下标,搞定公式输入
  7. 太强了!这个 Jupyter notebook 离线工具可以用一辈子!
  8. Java基础 系统注解 @Override @Deprecated @SuppressWarnings 使用的方法及原因
  9. Apache CXF实战之七 使用Web Service传输文件
  10. 023 -uniApp
  11. Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyExce
  12. jsp+servlet实现文件的上传和下载
  13. LeetCode刷题——80. 删除排序数组中的重复项 II
  14. iOS开发-iOS学习完整路线
  15. python操作QQ
  16. 【RX解码MIPI输出】XS9922B 4通道模拟复合视频解码芯片 功能对标TP2815
  17. wireshark保存文件集-解决pcap文件过大,打开极慢的问题
  18. 黑群晖frp内网穿透配置
  19. element ui 级联选择器,渲染后不显示数据
  20. 【4022】有些KPI的完成,╮(╯▽╰)╭

热门文章

  1. 求最大公约数的MATLAB,matlab求最大公约数和最小公倍数
  2. 域名注册处更改dns服务器,怎么修改DNS服务器_为什么要修改DNS服务器
  3. 商业定律22条,你读懂了几条
  4. android实现手机号验证码注册
  5. Linux之Python代码打包工具Nuitka使用说明
  6. 眨眼视频制作与生成活体视频生成
  7. LeetCode 2122. 还原原数组
  8. 软件工程课程设计-ch小说网站
  9. linux服务器有电信和网通,Linux 双网关(电信与联通)
  10. 一键搭建kms激活服务器