一致性哈希server的数据维护

本文是实例说明一致性哈希server的数据维护用途。

理论说明參考:http://blog.csdn.net/chenjiayi_yun/article/details/41624603 

例如以下图所看到的。本例中一致性哈希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负载。

操作例如以下图:




posted @ 2017-07-07 17:26  yfceshi  阅读(151)  评论(0编辑  收藏  举报