• <menu id="sssag"></menu>
  • <menu id="sssag"></menu>
  • ElasticSearch內部基于_version樂觀鎖控制機制

    1、悲觀鎖與樂觀鎖機制

    為控制并發問題,我們通常采用鎖機制。分為悲觀鎖和樂觀鎖兩種機制。

    悲觀鎖:很悲觀,所有情況都上鎖。此時只有一個線程可以操作數據。具體例子為數據庫中的行級鎖、表級鎖、讀鎖、寫鎖等。

    特點:優點是方便,直接加鎖,對程序透明。缺點是效率低,并發能力非常弱。

      

    樂觀鎖:很樂觀,對數據本身不加鎖。提交數據時,通過一種機制驗證是否存在沖突,如es中通過版本號驗證。

    特點:優點是并發能力高。缺點是操作繁瑣,在提交數據時,高并發的情況下,可能反復重試多次。

      

    2、內部基于_version樂觀鎖控制

    es對于文檔的增刪改都是基于版本號。

    第一次執行

    PUT /test_index/_doc/4
    {
      "test_field": "test"
    }

    此時可以版本號為1

      

    在執行一次:

      

    此時版本號已變為2,且result的值也為update

    在執行刪除文檔操作

    DELETE /test_index/_doc/4

      

    版本號變為3,result的值為deleted

    再執行一次新增語句,注意這里要和前一條刪除語句間隔時間不要太長,最好立即執行。

    PUT /test_index/_doc/3
    {
      "test_field": "test"
    }

    可以看到版本號依然遞增,并且驗證成功延遲刪除策略。

      

    因為如果刪除一條數據立馬刪除的話,所有分片和副本都要立馬刪除,對es集群壓力太大。

    3、圖解es內部并發控制

      

    es內部主從同步時,是多線程異步。采用樂觀鎖機制。

    posted @ 2022-03-07 21:25  |舊市拾荒|  閱讀(141)  評論(2編輯  收藏  舉報
    国产在线码观看超清无码视频,人妻精品动漫H无码,十大看黄台高清视频,国产在线无码视频一区二区三区,国产男女乱婬真视频免费,免费看女人的隐私超爽,狠狠色狠狠色综合久久蜜芽