成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

漫畫說算法之什么是一致性哈希?

開發(fā) 前端 算法
當緩存集群的節(jié)點有所增加的時候,整個環(huán)形空間的映射仍然會保持一致性哈希的順時針規(guī)則,所以有一小部分key的歸屬會受到影響。

 漫畫說算法之什么是一致性哈希?

漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?

一年之前——

漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?

未來兩年內(nèi),系統(tǒng)預估的總訂單數(shù)量可達一億條左右。

按Mysql單表存儲500萬條記錄來算,暫時不必分庫,單庫30個分表是比較合適的水平分表方案。

于是小灰設計了這樣的分表邏輯:

  1. 訂單表創(chuàng)建單庫30個分表
  2. 對用戶ID和30進行取模,取模結(jié)果決定了記錄存于第幾個分表
  3. 查詢時需要以用戶ID作為條件,根據(jù)取模結(jié)果確定查詢哪一個分表

分表方式如下圖(為了便于描述,簡化為5個分表):

漫畫說算法之什么是一致性哈希?

過了兩個月——

漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?

又過了半年多——

漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?

小灰的回憶告一段落——

漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?

1.首先,我們把全量的緩存空間當做一個環(huán)形存儲結(jié)構(gòu)。環(huán)形空間總共分成2^32個緩存區(qū),在Redis中則是把緩存key分配到16384個slot。

漫畫說算法之什么是一致性哈希?

2.每一個緩存key都可以通過Hash算法轉(zhuǎn)化為一個32位的二進制數(shù),也就對應著環(huán)形空間的某一個緩存區(qū)。我們把所有的緩存key映射到環(huán)形空間的不同位置。

漫畫說算法之什么是一致性哈希?

3.我們的每一個緩存節(jié)點(Shard)也遵循同樣的Hash算法,比如利用IP做Hash,映射到環(huán)形空間當中。

漫畫說算法之什么是一致性哈希?

4.如何讓key和節(jié)點對應起來呢?很簡單,每一個key的順時針方向最近節(jié)點,就是key所歸屬的存儲節(jié)點。所以圖中key1存儲于node1,key2,key3存儲于node2,key4存儲于node3。

漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?

1.增加節(jié)點

當緩存集群的節(jié)點有所增加的時候,整個環(huán)形空間的映射仍然會保持一致性哈希的順時針規(guī)則,所以有一小部分key的歸屬會受到影響。

漫畫說算法之什么是一致性哈希?

有哪些key會受到影響呢?圖中加入了新節(jié)點node4,處于node1和node2之間,按照順時針規(guī)則,從node1到node4之間的緩存不再歸屬于node2,而是歸屬于新節(jié)點node4。因此受影響的key只有key2。

漫畫說算法之什么是一致性哈希?

最終把key2的緩存數(shù)據(jù)從node2遷移到node4,就形成了新的符合一致性哈希規(guī)則的緩存結(jié)構(gòu)。

2.刪除節(jié)點

當緩存集群的節(jié)點需要刪除的時候(比如節(jié)點掛掉),整個環(huán)形空間的映射同樣會保持一致性哈希的順時針規(guī)則,同樣有一小部分key的歸屬會受到影響。

漫畫說算法之什么是一致性哈希?

有哪些key會受到影響呢?圖中刪除了原節(jié)點node3,按照順時針規(guī)則,原本node3所擁有的緩存數(shù)據(jù)就需要“托付”給node3的順時針后繼節(jié)點node1。因此受影響的key只有key4。

漫畫說算法之什么是一致性哈希?

最終把key4的緩存數(shù)據(jù)從node3遷移到node1,就形成了新的符合一致性哈希規(guī)則的緩存結(jié)構(gòu)。

漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?

如上圖所示,假如node1的ip是192.168.1.109,那么原node1節(jié)點在環(huán)形空間的位置就是hash(“192.168.1.109”)。

我們基于node1構(gòu)建兩個虛擬節(jié)點,node1-1 和 node1-2,虛擬節(jié)點在環(huán)形空間的位置可以利用(IP+后綴)計算,例如:

hash(“192.168.1.109#1”),hash(“192.168.1.109#2”)

此時,環(huán)形空間中不再有物理節(jié)點node1,node2,只有虛擬節(jié)點node1-1,node1-2,node2-1,node2-2。由于虛擬節(jié)點數(shù)量較多,緩存key與虛擬節(jié)點的映射關(guān)系也變得相對均衡了。

漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?
漫畫說算法之什么是一致性哈希?

 

責任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2021-07-27 08:57:10

算法一致性哈希哈希算法

2020-07-20 08:30:37

算法哈希分布式系統(tǒng)

2021-02-05 08:00:48

哈希算法?機器

2016-12-19 18:41:09

哈希算法Java數(shù)據(jù)

2021-02-02 12:40:50

哈希算法數(shù)據(jù)

2023-12-12 08:00:50

節(jié)點哈希算法

2018-07-05 09:41:08

一致性哈希算法

2023-12-20 08:11:02

Redis節(jié)點通信

2021-09-15 07:46:42

哈希一致性哈希算法

2023-06-25 09:44:00

一致性哈希數(shù)據(jù)庫

2023-06-26 07:17:48

負載均衡策略Dubbo

2021-05-19 21:50:46

Hash算法測試

2022-03-22 09:54:22

Hash算法

2017-07-25 14:38:56

數(shù)據(jù)庫一致性非鎖定讀一致性鎖定讀

2023-12-05 14:44:01

2022-01-27 08:31:20

一致性哈希

2021-11-12 08:38:26

一致性哈希算法數(shù)據(jù)結(jié)構(gòu)

2020-03-16 11:55:28

PaxosRaft協(xié)議

2021-08-13 07:56:13

Raft算法日志

2019-10-11 23:27:19

分布式一致性算法開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品成人品 | 亚洲精品一区中文字幕乱码 | 一区二区成人在线 | 欧美日韩亚洲国产 | 国产片一区二区三区 | 亚洲最新在线 | 亚洲91精品 | 亚洲 日本 欧美 中文幕 | 日本欧美国产在线观看 | 一级片网站视频 | 亚洲人a| 成人亚洲片 | 久久天天| 天天插天天操 | 视频一区二区在线观看 | 精品国产乱码久久久久久蜜臀 | 久久九九色 | 久久久精品一区二区三区四季av | 日本在线综合 | 2019天天干夜夜操 | 欧美影院久久 | 在线观看日本高清二区 | av手机免费在线观看 | 中文字幕精品一区 | 成人免费看片 | 黄色永久免费 | 国产情品 | 欧美亚洲国产一区二区三区 | 欧美vide | 99亚洲精品 | 欧美日韩国产一区二区三区 | 欧美日韩午夜精品 | 一级欧美| 毛片av免费看 | 国产伦精品一区二区三区照片91 | 在线免费毛片 | 欧美亚洲激情 | h视频在线播放 | 久久亚洲国产 | 精品福利视频一区二区三区 | a国产一区二区免费入口 |