天天看點

一緻性哈希server的資料維護

本文是執行個體說明一緻性哈希server的資料維護用途。

例如以下圖所看到的。本例中一緻性哈希server群組是視訊server群組,包含server類型:VChannelMediaServer、VChannelServer、VChannelLoadServer、VChannelSuperServer。

server類型和其用途:

VChannelMediaServer頻道動态資料(成員資料)和接入server。儲存頻道成員資訊。提供接入位址到client(類似于網關),發送到VChannelServer的請求是依據頻道id的一緻性哈希決定。

VChannelServer頻道資料server,儲存頻道的詳細資訊,提供操作頻道對象的接口,每一個頻道對象以一緻性哈希形式存在于該server中。

VChannelLoadServer是頻道負載server,備份全部的頻道清單以及頻道相應的VChannelServer。維護VChannelMediaServer和VChannelServerserver内的server一緻性哈希表,維護VChannelServer中的頻道對象載入和移除。

(VChannelLoadServer是單server,VChannelServer和VChannelMediaServer是動态啟動的多server。)

VChannelSuperServer直播間上級server,為全部直播間相關的server提供向上的連接配接其它server的接口。

資料維護包含:動态啟動vchannelserverserver須要動态載入頻道資料和移除舊的server的頻道資料,動态關閉vchannelserverserver須要恢複該server的頻道到其它server,新資料須要載入和備份。

(VChannelLoadServer依據頻道清單記錄每一個VChannelServer相應的一些頻道)

(1)載入資料

一個VChannelServer啟動時,須要VChannelLoadServer同步server哈希一緻性清單,計算清單是本server的那些頻道,則從資料庫載入那些頻道的資料到本程序。VChannelLoadServer依據哈希表。計算出屬于新啟動VChannelServer的一些頻道,發送指令到其它VChannelServer使它們移除本程序中屬于那些頻道的資料。

(2)當機恢複資料

一個vchannelserver當機時,須要又一次載入頻道資料到其它server。VChannelLoadServer會定時檢查vchannelserver連接配接中的當機server的連接配接。依據server哈希表為原來當機server的每一個頻道都配置設定新的server(會增加等待配置設定清單,在有合适server時再配置設定)

(3)新資料

建立頻道時,在指定的一個VChannelServer會載入該頻道的資料,并備份該頻道id到VChannelLoadServer,更新其server哈希一緻性清單,更新VChannelServer負載。

操作例如以下圖:

一緻性哈希server的資料維護