zoukankan      html  css  js  c++  java
  • 6:Partial Update 内部原理 和 乐观锁并发控制

    Partial Update 内部执行过程:
    1. 首先,ES文档是不可变的,它们只能被修改,不能被替换。Update Api 也不例外。
    2. Update API 简单使用与之前描述相同的 检索-修改-重建索引(reindex) 的处理过程。 区别在于这个过程发生在分片内部。
    3. 相当于ES的Shard内部 执行了 Get(获取该文档所有数据),CreateDoc(根据请求生成新文档),Put(把新文档写入ES)。如果使用全量替换,这3个步骤会发生在Java程序里,但如果使用partial update,ES则会帮我们做这些事。
     
    Partial Update的好处:
    1. 把原来的3次网络请求转换为1次,降低网络负荷
    2. 使Java程序逻辑变得简单
    3. 由于 检索 和 重建索引 发生在 shard内,这两个步骤时间间隔小,大大降低冲突的可能
     
    并发问题:
      1. 检索 和 重建索引(reindex) 步骤的间隔越小,变更冲突的机会越小。 但是它并不能完全消除冲突的可能性。 还是有可能在 update 设法重新索引之前,来自另一进程的请求修改了文档。
      2. 因此,ES内部也参照Java步骤,实现了基于version的乐观锁控制并发。
      3. 我们可以对ES内部的乐观锁,设置一些参数:
        并发冲突后,允许重试的次数:retry_on_conflict
    POST /test_index/test_type/1/_update?retry_on_conflict=5
    {
        "doc":{
            "num":20
        }
    }
     
  • 相关阅读:
    关于ubantu在VMWARE里安装时出现'SMBus Host Controller not enabled'
    临时备忘录
    第七届 山东ACM热身赛 Dwarf Tower
    数学问题题目连接
    蓝桥杯2016决赛 凑平方数
    博弈整理(取物)
    格子刷油漆(DP)
    蓝桥杯第六届总决赛B组
    蓝桥杯第五届决赛B组
    蓝桥杯第四届总决赛
  • 原文地址:https://www.cnblogs.com/cc299/p/11032809.html
Copyright © 2011-2022 走看看