本文是執行個體說明一緻性哈希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負載。
操作例如以下圖:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yMwIGNhVDO3ATZmZDNmRjMmNjZ5IzY3U2NwYjNzImNi9CXyAzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLzM3Lc9CX6MHc0RHaiojIsJye.png)