ConfigServer裏面涉及到的幾個最重要的對象是,configServer,dataServer,table,group
1.對象介紹
(1)table,對照表
key通過hash之後,再取模可以得到value存放在哪個桶。這個桶是放在哪個dataServer的信息,可以由一個表來表示。
這個表就是對照表。
(2)configServer,配置服務器
功能主要有,①讀取配置信息以及心跳得到dataServer的信息,進行對照表的生成。
②根據client的請求,傳遞對照表信息
③根據心跳得到dataServer的信息,然後控制數據在dataServer中的複製與遷移,以及重新建立對照表等。
(3)dataServer,數據服務器
數據實際存儲的抽象,可以採用不同的存儲引擎,在configServer的控制下,完成數據的保存、複製、遷移。
(4)group,組
通常,configServer有2個,互爲主備。而dataServer通常有許多個,可以將dataServer維護爲多個不同的group。
而對照表的新建與棄用,是以group爲單位的。
2.代碼結構
如圖所示,這就是Tair中,ConfigServer模塊下的代碼。
其中,
①是入口,表示tair_config_server
②是整個模塊的主要工作的線程,重要的函數都在這個thread的run裏面
③是信息,分爲group信息和server信息,作爲②運行的一些處理判斷
④就是與對照表table相關的,上面的一些是控制table行爲的類,下面的是描述表的具體的類,
table_builder1和table_builer2都繼承自table_builder,
table_builder1是採用負載均衡優先建立的對照表,table_builder2是採用優先考慮區分機房的邏輯建立的對照表。
3.主要流程