<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### 為什么要使用hash算法 > 在分布式系統中,為了提高吞吐量,集群是一個常見的手段, > 為了保證訪問集群中節點達到一個均衡的效果,就需要采用一些算法【輪詢法】【隨機法】【hash】【加權輪詢】【加權隨機】【最小連接數】 #### 以redis集群為例: > 假設集群有4個節點,那么hash算法為:hash值 % 4,余數即為需要訪問的節點。假設 hash值 % 4 = 2 那么就指向2號節點(0,1,2,3)。 #### hash算法的問題: > 如果在4個節點的情況下,增加一個節點,那么算法為:hash值 % 5 那么,之前計算的結果就發生了變動,無法找到原來訪問的節點了。 > 當大量的訪問都找不到原來的節點,那么就會直接查數據庫,造成緩存雪崩 ### 一致性hash算法 #### 一致性hash算法介紹 > 一致性hash算法也是采用取模的方法,只是取模的分母不是節點數,而是固定的 2^32,這樣所有的對象取模結果永遠是一樣的。 > hash取模結果就一定會在這個`hash環`上的一點,整個空間按順時針方向組織。 ![> ](https://box.kancloud.cn/60869aadcaef47548889936d2fc2af25_449x468.png) #### 怎么找到對應的服務器 > 將服務器的ip或者主機名也通過 2^32進行取模,那么服務器也一定會落在這個hash環上,如圖: ![> ](https://box.kancloud.cn/dc979ae5eedbac4021e913f97b55de00_714x727.png) > 然后通過對象的hash結果,順時針找,碰到的第一個服務器節點,就是分配的服務器,如圖 > ObjectA-> NodeA ObjectB->NodeB ObjectC->NodeC ObjectD->NodeD ![](https://box.kancloud.cn/de30e10deba14b2a12414aede0fa3279_704x719.png) #### 擴容,縮容是怎么操作的呢 > `擴容` > 假設增加一個節點,那么這個節點到逆時針的節點之間的對象都會指向該新的服務器 ![](https://box.kancloud.cn/c4efee6ff1040110a227a2c106b5ac25_696x722.png) > `縮容` > 假設移除一個節點,那么這個節點到沿著逆時針方向的那個節點之間的對象都會被指向到該移除的服務器的順時針的下一個服務器 #### hash傾斜問題 > 原因:節點經過hash算法之后,并不會均衡的分布在hash環上,這就會導致這些節點分配的對象不均衡 ![](https://box.kancloud.cn/917f1a2b56adbbda0d27da4b682ea51c_444x473.png) > 解決辦法:每個節點增加多個虛擬節點,這樣就會盡量讓節點均衡 ![](https://box.kancloud.cn/3cd19e6f3eafe2fe5d3ee30a8fa713e9_720x731.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看