• 31.分片和复制带来的副本一致性


    主要知识点:

    consistency

    one

    all

    quorum

       

    一、consistency

    oneprimary shard),allall shard),quorumdefault

    es的一致性主要有两个方面:

    1、使用lucene索引机制带来的refresh问题

    2、使用分片和复制带来的副本一致性问题(consistencyoneallquorum)

    本小节只是说明第2个方面

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

       

    one:要求我们这个写操作,只要有一个primary shardactive活跃可用的,就可以执行

    all:要求我们这个写操作,必须所有的primary shardreplica shard都是活跃的,才可以执行这个写操作

    quorum:默认的值,是一个比较折中的方面,要求所有的shard中,必须是大部分的shard都是活跃的、可用的,才可以执行这个写操作。

       

    二、quorum机制,

    es写之前必须确保大多数shard都可用,int( (primary + number_of_replicas) / 2 ) + 1,当number_of_replicas>1时才生效。

    举例:3primary shardnumber_of_replicas=1,总共有3 + 3 * 1 = 6shard

    quorum = int( (3 + 1) / 2 ) + 1 = 3

    所以,要求6shard中至少有3shardactive状态的,才可以执行写操作。

       

    三、如果节点数少于quorum数量的情况

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

    例如:3primary shardreplica=1,要求至少3shardactive3shard按照之前学习的shard&replica机制,必须在不同的节点上,如果说只有2台机器的话(两个Node),就有可能出现3shard都没法分配齐全,此时就可能会出现写操作无法执行的情况。对于这种情况,es提供了一种特殊的处理场景,就是说只有当number_of_replicas>1quorum机制才生效,因为,假如就一个primary shardreplica=1,此时就2shard

    (1 + 1 / 2) + 1 = 2,要求必须有2shard是活跃的,但是可能就1node,此时就1shard是活跃的,如果你不特殊处理的话,导致我们的单节点集群就无法工作。

       

    四、quorum不全时es的处理,

    quorum不齐全时es会wait,默认时间1分钟。等待期间,期望活跃的shard数量可以增加,当时间到达但是quorum机制还是没有满足时,就会timeout错误。

    我们其实可以在写操作的时候,加一个timeout参数,比如说put /index/type/id?timeout=30(时间的默认单位是毫秒,加上s就变成秒。30s表示30秒),这个就是说自己去设定quorum不齐全的时候,estimeout时长,可以缩短,也可以增长

  • 相关阅读:
    Turtlebot3 OpenCR 机器人端刷固件方案(包括ROS1和ROS2)
    TurtleBot3自动驾驶Noetic模拟仿真项目 1.准备工作
    OpenManipulatorX Gazebo仿真(Noetic)
    Ned
    OpenMANIPULATORX Melodic ROS包安装
    TurtleBot3自动驾驶Noetic6.模拟隧道
    Turtlebot3 Noetic ROS包安装
    WEB网站发布服务器IIS报错问题终极解决方案,查到问题点
    理解javascript中的连续赋值
    C# webBrowser.DocumentCompleted 解决之道
  • 原文地址:https://www.cnblogs.com/liuqianli/p/8465082.html
Copyright © 2020-2023  润新知