天天看點

tair(一)--入門

一.簡介

1.tair是淘寶開發的一個分布式key/value存儲引擎,tair分為持久化和非持久化兩種使用方式,非持久化的tair可以看成是一個分布式緩存,持久化的tair将資料存放于磁盤中。為了解決磁盤損壞導緻資料丢失,tair可以配置資料的備份數目,tair自動将一份資料的不同備份放到不同的主機上,當有主機發生異常,無法正常提供服務的時候,其餘的備份将會繼續提供服務。

二.tair的總體結構

1.tair作為一個分布式系統,是由一個中心控制節點和一系列的服務節點組成,我們稱中心控制節點為config server,服務節點是data server,config server負責管理所有的data server,維護data server的狀态資訊,data server對外提供各種資料服務,并以心跳的形式将自身狀況彙報給config server。config server 是控制點,采用一主一備的形式來保證其可靠性,所有的data server地位都是等價的;

2.架構圖

tair(一)--入門

3.config server功能:

1)通過維護和data server心跳來獲知叢集中存活節點的資訊;

2)根據存活節點的資訊來建構資料在叢集中的分布表;

3)根據資料分布表的查詢服務;

4)排程data server之間的資料遷移、複制;

4.data server功能

1)提供存儲引擎;

2)接受client的put/get/remove等操作;

3)執行資料遷移,複制等;

4)插件:在接受請求的時候處理一些自定義功能;

5)通路統計;

5.client功能

1)在應用端提供通路tair叢集的接口;

2)更新并緩存資料分布表和invalid server位址等;

3)local cache,避免過熱資料通路影響tair叢集服務;

4)流控;

三.tair的負載均衡算法

tair的分布采用的是一緻性雜湊演算法,對于所有的key,分到Q個桶中,桶是負載均衡和資料遷移的基本機關,config server根據一定的政策把每個桶指派到不同的data server上,因為資料按照key做hash算法,保證了桶分布的均衡性,進而保證了資料分布的均衡性;

四.資料遷移

1.增加或減少data server的時候,config server會發現這個情況,config server負責重新計算一張新的桶在data server上的分布表,将原來由減少的機器服務的桶的通路重新指派到其他的data server中,這個時候就會發生資料的遷移。比如原來由data server A負責的桶,在新表中需要由B負責,而B上并沒有該桶的資料,那麼就将資料遷移到B上來,同時config server會發現哪些桶的備份數目減少了,然後根據負載均衡情況在負載較低的data server上增加這些桶的備份。當系統增加data server的時候,config server根據負載,協調data server将他們控制的部分桶遷移到新的data server上,遷移完成後調整路由;

2.資料遷移時data server對外提供服務的政策,假設data server A要把桶1,2,3遷移到data server B,因為遷移完成前,用戶端的路由表沒有變化,用戶端對1,2,3的通路請求都會路由到A,現在假設1還沒遷移,2正在遷移,3已經遷移完成,那麼如果通路1,則還是通路data server A,如果通路3,則A會把請求轉發給B,并且将B的傳回結果傳回給客戶,如果通路2,則在A上處理,同時如果是對2的修改操作,會記錄修改log,當桶2完成遷移的時候,還有把log發送給B,在B上應用這些log,最終AB資料一緻才是真正完成遷移。如果A是由于當機而引發的遷移,用戶端會收到一張中間臨時狀态的配置設定表,把當機的data server負責的桶臨時指派給有其備份的data server來處理,此時服務是可用的,負載可能不均衡,當遷移完成後,又能達到一個新的負載均衡狀态;

參考:http://tair.taobao.org/

繼續閱讀