More about Tair (NoSql)

1、前言

  關於Tair的相關介紹請參照wiki(http://code.taobao.org/p/tair/wiki/index/)或者以前的博文,再也不重複描述。區別於其它主流NoSql數據庫,Tair支持多機架多機房管理,提供了一套完整的集羣解決方案和安全機制,本文主要介紹了Tair相關的擴展性和可靠性。html

2、桶(Bucket) 

  桶是Tair最基本的數據存儲單位,能夠經過配置指定Cluster中總共桶的數量(桶的個數必須大於等於Data Server的數量),每一個DS上至少須要分配一個桶,默認配置爲1023個桶,若是部署2臺Data Server那麼兩臺DS上分別爲512,511個桶,若是3臺Data Server則每臺DS上爲341個桶,當PUT數據的時候,Config Server會對Key計算Hash並按必定的算法將Data分配到具體某個桶,從而實現數據在桶上的分佈平衡,這也是Tair數據桶的默認分佈策略:負載平衡優先,同時Tair還提供了另一種更爲高級的位置安全優先策略,保證數據在同一個桶的多個duplication分佈在不一樣的機架、機房。web

  

  如下是實驗環境4臺Data Server、默認1023個桶的Bucket分配表:算法

   

3、控制節點(ConfigServer)

   控制節點Config Server管理Data Server節點、維護Data Server的狀態信息,採用一主一備(Master/Slave)的方式保證可靠性,主Config Server下配置文件的修改,會自動同步更新到Slave節點,當主節點不可用時,Slave節點會自動接管成主節點。Client首次鏈接到Config Server,CS會返回一個帶version的路由表信息給Client,以後集羣中DS的增減都會修改CS上的路由表version,Client再次鏈接到CS的時候先比較version,若是不一致則先更新路由表,理論上即便2個Config Server都down掉後,Client依然能夠經過緩存的路由表信息直接訪問到Data Server。數據庫

 

4、Area、配額(Quota)、LRU

  Area相似於Namespace,用來將Tair集羣中的數據進行區域劃分邏輯分區,能夠經過在Config Server的group.conf文件中指定多個Area,每一個Area設置固定的Quota Size,但全部Area的Quota合計不能超過全部Data Server分配的內存大小總和。每一個Area做爲獨立的管理單元,不一樣的Area能夠包含重名的Key。經過Tair Client向Tair插入的數據超過默認閥值(8192字節)會自動將kv壓縮後再存儲到DS,當累計put的kv字節超過配額大小的時候,Tair會啓用LRU策略(Least Recently Used,每次淘汰最久沒有使用的元素),自動移除過時kv。若是put指定的Area在Config中不存在,Tair能夠自動生成一個臨時Area,當全部數據移除後臨時Area會被自動刪除。緩存

1 #quota info (1024000=1M)
2 _areaCapacity_list=0,2048000;
3 _areaCapacity_list=1,1024000;
4 _areaCapacity_list=2,1024000;

 

5、容災(CopyCount)和負載平衡(Migrate)

  Tair能夠指定CopyCount實現數據進行屢次備份,理論上備份越多、Data Server數量越多則數據安全越可靠,備份數據一樣會按照必定算法分佈到不一樣的DataS erver的桶上,假設CopyCount=3,Data Server個數爲3 ,那麼數據分佈狀況以下圖。增長或者減小Data Server,因爲存在Heartbeat,Config Server會當即監視到DS的變化,會從新計算一張數據桶的分佈表,而後開始進行數據遷移,將到故障Data Server的訪問轉到別的Data Server上,Migrate的時間和Bucket數量、KV數量有關,遷移過程當中能夠經過Health命令監視到每臺DS的剩餘遷移桶數量,當遷移結束後全部DS從新達到數據分佈平衡。在遷移過程當中,Config Server會保證數據分佈表的正確性,使得客戶端可以獲得數據。安全

  關於「增長或者減小data server的時候會發生什麼」,wiki中提供了更爲原子的細節說明,請先閱讀「http://code.taobao.org/p/tair/wiki/intro/」。app

  

  按下圖示意,每臺DS上都有3份不一樣的數據容許的宕機數量爲2,只要有1臺DS能正常工做,那麼就能保證數據的完整性。webapp

  

 

6、監控(Monitor)

  Tair提供相關監控的工具用於監視當前集羣中全部Data Server、Area的數據分佈狀況及查詢功能。
  開源svn地址:http://code.taobao.org/p/tair-monitor/src/trunk/tair_2_3_mon/
  項目基於servlet,部署後須要修改MonitorArgs文件(Tomcat/webapps/tair_2_3_mon/WEB-INF/classes/com/tair_2_3/statmonitor目錄),指定ConfigServer的地址和端口。svn

configserverA=10.129.221.70:5198 
groupname=group_1 
interval=10 
is_rdb=false 
need_support_cplusplus=true 
is_test_cluster=false

 

7、感謝@Clear 張舒鰲童鞋 協助進行的大量驗證工做

相關文章
相關標籤/搜索