Tair中的對照表

2022-05-02 21:15:09 字數 1947 閱讀 5813

tair

是由**開發的乙個key/value儲存系統。

參考:在資料分配方面,tair使用了對照表,對照表由於資料路由功能,由配置伺服器(configserver負責維護),configserver週期性的初始化各個資料節點的資訊,並通過heartbeat來管理資料節點的狀態。對照表通常包含多個slot(應遠大於資料節點的個數,以便將slot盡可能均勻的分配給資料節點)。

如下圖所示,對照表包含6個slot,其中0、2、4號slot被分配給了資料節點192.168.10.1;而1、3、5號儲存節點被分配給了192.168.10.2。當客戶端儲存key/value時,通過key計算出乙個hash值,並對對照表的總slot數取餘,所得的值即為key應該被儲存的slot。0

192.168.10.1

1192.168.10.2

2192.168.10.1

3192.168.10.2

4192.168.10.1

5192.168.10.2

tair

使用者和configserver的互動主要是為了獲取資料分布的對照表,當client獲取到對照表後,會cache這張表,然後通過查這張表決定資料儲存的節點,所以請求不需要和configserver互動,這使得tair對外的服務不依賴configserver,所以它不是傳統意義上的中心節點,configserver也不會成為集群的瓶頸。

configserver

維護的對照表有乙個版本號,每次新生成表,該版本號都會增加。當有資料節點狀態發生變化(比如新增節點或者有節點不可用了)時,configserver會根據當前可用的節點重新生成對照表,並通過資料節點的心跳,將新錶同步給資料節點。

當客戶端請求資料節點時,資料節點每次都會將自己的對照表的版本號放入response中返回給客戶端,客戶端接收到response後,會將資料節點返回的版本號和自己的版本號比較,如果不相同,則主動和configserver通訊,請求新的對照表。故客戶端也不需要和configserver保持心跳,以便及時的更新對照表。這使得在正常的情況下,客戶端不需要和configserver通訊,即使configserver不可用了,也不會對整個集群的服務造成大的影響。

當有新的節點加入時,如

192.168.10.3

,configserver

會構造新的對照表,具體的做法為:1.

在新增節點(有機器不可用)時,會存在三張表:新增前的對照表,新增後的對照表和遷移表,此時客戶端取到的還是老的表。當按照新舊對照表完成遷移後,暴露給客戶端的表才會被更新為新錶。

2. 對照表的更新演算法是:計算根據新的節點數,每個節點需要負責的桶數目(假設為

y),然後針對每個原有的節點,保留原來負責的

x個桶(假設某節點原來負責的桶數為

x,則空餘出了

x-y個桶),然後把空餘的桶交由新節點負責。

更新後的對照表可能類似於:0

192.168.10.1

1192.168.10.2

2192.168.10.1

3192.168.10.2

4192.168.10.3

5192.168.10.3

根據新舊對照表,

tair

對某些key/value

需要進行資料遷移操作,如將原來雜湊結果為4或

5的key/value

遷移到192.168.10.3

,為了加速遷移,可將

key/value

在資料節點中按照

hash

值聚類存放,這樣遷移操作就能迅速找到需要被遷移的

key/value

。key/value

儲存系統通常使用餘數分步法(節點數取餘)對

key進行分布儲存,一旦資料節點發生變化,

key就需要重新進行分布,

tair

通過維護對照表來實現資料的重新分布,類似的機制還被應用在

fastdht

()。

Keycode對照表(鍵碼對照表)

字母和數字鍵的鍵碼值 keycode 按鍵鍵碼 按鍵鍵碼 按鍵鍵碼 按鍵鍵碼a65 j74s83 149b66 k75t84 250c67 l76u85 351d68 m77v86 452e69 n78w87 553f70 o79x88 654g71 p80y89 755h72 q81z90 856...

Keycode對照表(鍵碼對照表)

字母和數字鍵的鍵碼值 keycode 按鍵鍵碼 按鍵鍵碼 按鍵鍵碼 按鍵鍵碼a65 j74s83 149b66 k75t84 250c67 l76u85 351d68 m77v86 452e69 n78w87 553f70 o79x88 654g71 p80y89 755h72 q81z90 856...

Keycode對照表(鍵碼對照表)

vue前端事件程式設計中,不可避免地要處理keycode,特別是各種組合鍵,以便讓使用者的操作更加人性化。字母和數字鍵的鍵碼值 keycode 按鍵鍵碼 按鍵鍵碼 按鍵鍵碼 按鍵鍵碼a65 j74s83 149b66 k75t84 250c67 l76u85 351d68 m77v86 452e69...