发明名称 适用于大规模流媒体直播系统的对等网络成员管理方法
摘要 本发明的名称为适用于大规模流媒体直播系统的对等网络成员管理方法,属于网络技术领域:其特征在于所述方法将系统的各个结点分为服务器结点和客户端结点,其中,服务器结点包括:集中点服务器、成员管理服务器和日志服务器:各个结点通过互相之间的消息传递、消息处理以及一些周期性的操作来实现对等网络的成员管理方法,即完成大量结点的命名、组织以及确定结点的加入和离开方式等功能;在本方法里,各个结点之间的消息传递采用了用户数据报协议(UDP)来实现。本发明的实现为大规模网络流媒体直播系统提供了可靠、高效的对等网络成员管理方法。
申请公布号 CN100433657C 申请公布日期 2008.11.12
申请号 CN200610078852.8 申请日期 2006.05.11
申请人 蓝汛网络科技(北京)有限公司 发明人 尹浩;邱锋;刘雪宁
分类号 H04L12/24(2006.01) 主分类号 H04L12/24(2006.01)
代理机构 北京同达信恒知识产权代理有限公司 代理人 黄志华
主权项 1.适用于大规模流媒体直播系统的对等网络成员管理方法,其特征在于所述方法将系统的各个结点分为服务器结点和客户端结点,其中,服务器结点包括:集中点服务器RPS、成员管理服务器MMS和日志服务器LOG;各个结点通过互相之间的消息传递、消息处理以及一些周期性的操作来实现对等网络的成员管理方法,即完成大量结点的命名、组织以及确定结点的加入和离开方式功能;各个结点之间的消息传递采用了用户数据报协议UDP,系统中的各个结点分别会有以下工作步骤:集中点服务器RPS工作步骤:步骤1、RPS初始化,依次会有以下步骤:步骤1.1、RPS的全局唯一编号为1;步骤1.2、将32位全局用户编号变量初始化设为0x10000,该变量的变量名为GUID,该变量用于为客户端结点分配全局唯一编号;步骤1.3、MMS空闲连接数变量初始化设为0,该变量存储MMS服务器的空闲连接数,用于进行代理结点分配的判断,当收到MMS的消息时更新;步骤1.4、建立一个空的循环列表,名为代理结点列表,表长256,表项为<全局编号、IPv4网络地址、端口、保留字、更新时间>,其中,所述全局编号为32bit,所述IPv4网络地址为32bit,所述端口为16bit,所述保留字为16bit;步骤1.5、建立一个空的列表,名为结点更新列表,表长100,表项为<全局编号、IPv4网络地址、端口、保留字>;步骤1.6、建立一个空的列表,名为结点退出列表,表长300,表项为<全局编号>,其中,所述全局编号为32bit;步骤1.7、RPS进行完前述初始化操作后,开始等待其它结点的各类消息并进行消息处理以及进行一些周期性的操作,见步骤2~8;步骤2、收到客户端结点的登录服务器消息,进行消息处理,依次会有以下步骤:步骤2.1、为该客户端结点分配全局唯一编号:步骤2.1.1、该客户端结点的编号为当前变量GUID的值,将该值填入到登录反馈消息中;步骤2.1.2、变量GUID加1,如果GUID不在范围0x10000~0xfffeffff里,将其置为0x10000;步骤2.2、为该客户端结点分配一个代理结点:步骤2.2.1、如果MMS空闲连接数变量大于0,代理结点为MMS,并将该变量减1,转入步骤2.2.4;步骤2.2.2、如果代理结点列表为空,代理结点为MMS,转入步骤2.2.4;步骤2.2.3、从代理结点列表中随机选取一个结点作为代理结点;步骤2.2.4、将选定的代理结点信息<全局编号、IPv4网络地址、端口、保留字>填入到登录反馈消息中,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit;步骤2.3、为发送登录服务器消息的结点返回登录反馈消息:登录反馈消息的组成:<RPS全局唯一编号、消息类型、保留字、客户端全局唯一编号、代理结点信息>,其中,所述RPS全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit、所述客户端全局唯一编号为32bit、所述代理结点信息为96bit;步骤3、收到客户端结点的重新登录服务器消息,进行消息处理,依次会有以下步骤:步骤3.1、为该客户端结点分配一个代理结点:步骤3.1.1、如果MMS空闲连接数变量大于0,代理结点为MMS,并将该变量减1,转入步骤3.1.4;步骤3.1.2、如果代理结点列表为空,代理结点为MMS,转入步骤3.1.4;步骤3.1.3、从代理结点列表中随机选取一个结点作为代理结点;步骤3.1.4、将选定的代理结点信息<全局编号、IPv4网络地址、端口、保留字>填入到重新登录反馈消息中,其中,所述全局编号为32bit,所述IPv4网络地址为32bit,所述端口为16bit,所述保留字为16bit;步骤3.2、为发送重新登录服务器消息的结点返回重新登录反馈消息:重新登录反馈消息的组成:<RPS全局唯一编号、消息类型、保留字、代理结点信息>,其中,所述RPS全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit、所述代理结点信息为96bit;步骤4、收到客户端结点的存活消息,进行消息处理,依次会有以下步骤:步骤4.1、将该客户端结点的结点信息<全局编号、IPv4网络地址、端口、保留字>填入到循环列表代理结点列表的表尾,如果表已满,则覆盖之前的结点信息,将列表该项的更新时间设为RPS的系统时间,精确到秒,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit;步骤4.2、将该客户端的结点信息填入到结点更新列表的表尾,如果表已满,则放弃此次信息填入;步骤4.2.1、填完该客户端的结点信息后,判断结点更新列表是否已满,如果是,执行步骤4.3,否则,不执行步骤4.3;步骤4.3、发送结点更新消息至日志服务器LOG;结点更新消息的组成:<RPS全局唯一编号、消息类型、保留字、结点更新列表的长度、结点更新列表>,其中,所述RPS全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit、所述结点更新列表的长度为32bit、所述结点更新列表为列表长度×96bit;步骤5、收到客户端结点的退出消息,进行消息处理,依次会有以下步骤:步骤5.1、将该客户端结点的全局编号填入到结点退出列表的表尾,如果表已满,放弃此次信息填入;步骤5.1.1、填完该客户端的编号信息后,判断结点退出列表是否已满,如果是,执行步骤5.2,否则,不执行步骤5.2;步骤5.2、发送结点退出消息至日志服务器LOG;结点退出消息的组成:<RPS全局唯一编号、消息类型、保留字、结点退出列表的长度、结点退出列表>,其中,所述RPS全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit、所述结点退出列表的长度为32bit、所述结点退出列表为列表长度×32bit;步骤6、收到成员管理服务器MMS的消息,进行消息处理,会有以下步骤:步骤6.1、从该消息中获取MMS空闲连接数变量的值,更新该变量;步骤7、每隔一个设定的周期间隔,该周期间隔为1秒,进行如下步骤的操作:步骤7.1、如果结点更新列表不空,则执行步骤4.3;步骤7.2、如果结点退出列表不空,则执行步骤5.2;步骤8、每隔一个设定的周期间隔,该周期间隔为10秒,进行如下步骤的操作:步骤8.1、置代理结点列表中更新时间与当前系统时间间隔超过1分钟的表项失效;日志服务器LOG的工作步骤:步骤1、LOG初始化,依次会有以下步骤:步骤1.1、LOG的全局唯一编号为2;步骤1.2、在数据库中建立一张系统客户端结点的表,表项为<全局编号Key、IPv4网络地址、端口、保留字、更新时间time>;步骤1.3、LOG进行完前述初始化操作后,开始等待RPS的消息并进行消息处理以及进行一些周期性的操作;步骤2、收到RPS的结点更新消息,进行消息处理,依次会有以下步骤:步骤2.1、从该消息中获取结点更新列表;步骤2.2、从数据库的客户端结点表中依次删除结点更新列表的全局编号对应的结点表项;步骤2.3、将结点更新列表中的结点信息一次性加入到数据库的表中,表项的更新时间设为系统时间;步骤3、收到RPS的结点退出消息,进行消息处理,依次会有以下步骤:步骤3.1、从该消息中获取结点退出列表;步骤3.2、从数据库的客户端结点表中依次删除结点退出列表的全局编号对应的结点表项;步骤4、每隔一个设定的周期间隔,该周期间隔为30秒,进行如下步骤的操作:步骤4.1、将数据库的客户端结点表中更新时间与当前系统时间间隔超过5分钟的表项删除;成员管理服务器MMS的工作步骤:步骤1、MMS初始化,依次会有以下步骤:步骤1.1、MMS的全局唯一编号为3;步骤1.2、建立一个空的列表,名为推送结点列表,表长可以自由选定,表长默认为50,表项为<全局编号、IPv4网络地址、端口、保留字、更新时间>,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit;步骤1.3、建立一个空的列表,名为备用结点列表,表长可以自由选定,表长默认为100,表项为<全局编号、IPv4网络地址、端口、保留字、更新时间>,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit;步骤1.4、MMS进行完前述初始化操作后,开始等待客户端结点的消息并进行消息处理以及进行一些周期性的操作;步骤2、收到第一客户端结点的接入请求消息后,进行消息处理,依次会有以下步骤:步骤2.1、如果推送结点列表已满,转入步骤2.3;步骤2.2、将该第一客户端结点的结点信息<全局编号、IPv4网络地址、端口、保留字>加入到推送结点列表中,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit,将相应项的更新时间设为MMS的系统时间,定义该第一客户端结点的类型为推送类型,转入步骤2.6;步骤2.3、如果备用结点列表已满,转入步骤2.5;步骤2.4、将该第一客户端结点的结点信息<全局编号、IPv4网络地址、端口、保留字>加入到备用结点列表中,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit,将相应项的更新时间设为MMS的系统时间,定义该第一客户端结点的类型为备用类型,转入步骤2.6;步骤2.5、定义该第一客户端结点的类型为普通类型;步骤2.6、返回第一客户端结点接入请求反馈消息;接入请求反馈消息的组成:<MMS全局唯一编号、消息类型、保留字、客户端结点类型、保留字>,其中,所述MMS全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit、所述客户端结点类型为16bit、所述保留字为16bit;步骤2.7、发送接入请求转发消息到推送结点列表的所有结点,其中转发次数设为默认值,该默认值为5:接入请求转发消息的组成:<MMS全局唯一编号、消息类型、保留字、第一客户端结点的结点信息、转发次数>,其中,所述MMS全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit、所述第一客户端结点的结点信息为96bit、所述转发次数为32bit;步骤2.8、如果第一客户端结点的结点类型为备用或者普通,则发送接入请求转发消息到备用结点列表的所有结点,其中转发次数设为默认值,该默认值为5:接入请求转发消息的组成:<MMS全局唯一编号、消息类型、保留字、第一客户端结点的结点信息、转发次数>,其中,所述MMS全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit、所述第一客户端结点的结点信息为96bit、所述转发次数为32bit;步骤3、收到客户端结点的存活消息,进行消息处理,依次会有以下步骤:步骤3.1、在推送结点列表中依据全局编号查找是否有该客户端结点的信息;步骤3.1.1、若有,将推送结点列表中该结点的更新时间设为当前的MMS系统时间,不再执行步骤3的后续步骤;步骤3.1.2、若没有,则转入步骤3.2;步骤3.2、在备用结点列表中依据全局编号查找是否有该客户端结点的信息;步骤3.2.1、若有,将备用结点列表中该结点的更新时间设为当前的MMS系统时间;步骤3.2.2、若没有,判断备用结点列表是否已满;步骤3.2.2.1、如果该列表未满,则将该客户端的结点信息<全局编号、IPv4网络地址、端口、保留字>加入到备用结点列表中,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit,将相应项的更新时间设为MMS的系统时间,定义该客户端结点的类型为备用类型,仅执行步骤2.6;步骤4、收到客户端结点的退出消息,进行消息处理,依次会有以下步骤:步骤4.1、在推送结点列表和备用结点列表中依据全局编号查找是否有该客户端结点的信息;步骤4.1.1、如果有,则将该结点的信息从对应列表中删除;步骤4.1.2、如果没有,则不作处理;步骤5、每隔一个设定的周期间隔,该周期间隔为2秒钟,进行如下步骤的操作:步骤5.1、将推送结点列表和备用结点列表中更新时间与当前系统时间间隔超过5秒钟的表项从列表中删除;步骤5.2、发送消息至RPS服务器:<MMS全局唯一编号、消息类型、保留字、MMS空余连接数>,其中,所述MMS全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit、所述MMS空余连接数为32bit;MMS空余连接数=推送结点列表的最大数减去推送结点列表的当前数+备用结点列表的最大数减去备用结点列表的当前数;客户端结点的工作步骤:步骤1、客户端初始化,依次会有以下步骤:步骤1.1、建立一个空的列表,名为数据源结点列表,表长20,表项为<全局编号、IPv4网络地址、端口、保留字、更新时间>,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit;步骤1.2、建立一个空的列表,名为数据请求者结点列表,表长80,表项为<全局编号、IPv4网络地址、端口、保留字、更新时间>,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit;步骤2、登录服务器,依次会有以下步骤:步骤2.1、发送登录服务器消息至集中点服务器RPS;登录服务器消息的组成:<0xffffffff、消息类型、保留字>,其中,所述0xffffffff为32bit,所述消息类型为16bit,所述保留字为16bit;步骤2.2、按设定的超时间隔,该超时间隔为1秒,启动超时计时器;步骤2.3、超时时间到,尚未获得登录反馈消息时,若超时次数大于设定次数时,则放弃登录服务器,客户端终止操作,否则重新执行步骤2.1~2.2,其中,所述设定次数为5次;步骤2.4、若在超时间隔内获得登录反馈消息,得到RPS分配给本结点的全局唯一编号以及代理结点的信息<全局编号、IPv4网络地址、端口、保留字>,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit;步骤2.5、根据代理结点的全局编号进行判断,如果是MMS服务器的编号,则转入步骤3;如果是客户端结点的编号,则转入步骤4;步骤3、通过MMS服务器接入系统,依次会有以下步骤:步骤3.1、发送接入请求消息至MMS服务器;接入请求消息的组成:<本结点的全局唯一编号、消息类型、保留字>,其中,所述本结点的全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit;步骤3.2、按设定的超时间隔,该超时间隔为2秒,启动超时计时器;步骤3.3、超时时间到,尚未获得接入请求反馈消息时,若超时次数大于设定次数时,则执行步骤5,否则重新执行步骤3.1~3.2,其中,所述设定次数为5次;步骤3.4、若在超时间隔内获得接入请求反馈消息,从中获得MMS为自己定义的客户端结点类型,开始等待客户端结点的消息并进行消息处理以及进行一些周期性的操作,即转入步骤6;步骤4、通过客户端代理结点接入系统,依次会有以下步骤:步骤4.1、由于代理结点是客户端,则本结点的结点类型被定义为普通类型;步骤4.2、发送接入请求消息至代理结点;接入请求消息的组成:<本结点的全局唯一编号、消息类型、保留字>,其中,所述本结点的全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit;步骤4.3、按设定的超时间隔,该超时间隔为3秒,启动超时计时器;步骤4.4、超时时间到,尚未获得任何接入请求转发反馈消息时,若超时次数大于设定次数时,则执行步骤5,否则重新执行步骤4.2~4.3,其中,所述设定次数为5次;步骤4.5、若在超时间隔内获得接入请求转发反馈消息,开始等待客户端结点的消息并进行消息处理以及进行一些周期性的操作,即转入步骤6;步骤5、重新登录服务器,依次会有以下步骤:步骤5.1、发送重新登录服务器消息至集中点服务器RPS;重新登录服务器消息的组成:<0xffffffff、消息类型、保留字>,其中,所述0xffffffff为32bit,所述消息类型为16bit,所述保留字为16bit;步骤5.2、按设定的超时间隔,该超时间隔为1秒,启动超时计时器;步骤5.3、超时时间到,尚未获得重新登录反馈消息时,若超时次数大于设定次数时,则放弃重新登录服务器,客户端终止操作,否则重新执行步骤5.1~5.2,其中,所述的设定次数为3次;步骤5.4、若在超时间隔内获得重新登录反馈消息,得到RPS分配给本结点的全局唯一编号以及代理结点的信息<全局编号、IPv4网络地址、端口、保留字>,其中,所述全局编号为32bit、所述IPv4网络地址为32bit、所述端口为16bit、所述保留字为16bit;步骤5.5、根据代理结点的全局编号进行判断,如果是MMS服务器的编号,则转入步骤3;如果是客户端结点的编号,则转入步骤4;步骤6、收到第二客户端结点的接入请求转发反馈消息,进行消息处理,会有以下步骤:步骤6.1、在数据源结点列表中依据第二客户端结点的全局编号查找是否存在记录;步骤6.1.1、如果不存在,判断数据源结点列表是否已满;步骤6.1.1.1、如果没满,则将第二客户端结点的结点信息加入到数据源结点列表中;步骤6.1.1.2、如果列表已满,放弃步骤6的其它操作;步骤6.1.2、如果存在,将对应表项的更新时间置为本结点的系统时间;步骤7、收到第三客户端结点的接入请求消息,进行消息处理,会有以下步骤:步骤7.1、发送接入请求转发消息到数据源结点列表的所有结点,其中转发次数设为默认值5;接入请求转发消息的组成:<自己全局唯一编号、消息类型、保留字、第三客户端结点的结点信息、转发次数>,其中,所述全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit、所述第三客户端结点的结点信息为96bit、所述转发次数为32bit;步骤7.2、发送接入请求转发消息到数据请求者结点列表的随机选定的N个结点,其中,N=min(数据请求者结点列表当前结点数,数据源结点列表的最大数减去-数据源结点列表的当前结点数),转发次数设为默认值5;接入请求转发消息的组成:同步骤7.1的消息组成;步骤8、收到第四客户端结点的接入请求转发消息,进行消息处理,会有以下步骤:步骤8.1、从消息中获得最初发送接入请求消息的第三客户端结点的信息;步骤8.2、查找本结点的数据源结点列表和数据请求者结点列表中是否有第三客户端结点的信息;步骤8.2.1、若没有第三客户端结点的信息,判断本结点的数据请求者结点列表是否已满;步骤8.2.1.1、若已满,执行步骤8.3;步骤8.2.1.2、以概率P=1/(1+局部数据请求者视图大小),保留第三客户端结点的信息至本结点的数据请求者结点列表,如果保留,则执行步骤8.4,不保留,则执行步骤8.3;步骤8.2.2、若有第三客户端结点的信息,判断该消息中转发次数是否大于0;步骤8.2.2.1、如果是,则执行步骤8.3;步骤8.2.2.2、如果不是,则放弃执行步骤8的其它子步骤;步骤8.3、从本结点的数据源结点列表和数据请求者结点列表中随机选取一个结点,向其发送接入请求转发消息,其中,转发次数为步骤8收到的消息中转发次数减1,不执行步骤8.4;接入请求转发消息的组成:<自己全局唯一编号、消息类型、保留字、第三客户端结点的结点信息、转发次数>,其中,所述全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit,所述第三客户端结点的结点信息为96bit,所述转发次数为32bit;步骤8.4、将第三客户端结点的结点信息加入到数据请求者结点列表中,发送接入请求转发反馈消息至第三客户端结点;接入请求转发反馈消息的组成:<本结点的全局唯一编号、消息类型、保留字>,其中,所述全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit;步骤9、收到第五客户端结点的存活消息,进行消息处理,会有以下步骤:步骤9.1、在本结点的数据源结点列表和数据请求者结点列表中依据全局唯一编号查找第五客户端结点的信息,如果有,则将对应记录的更新时间设为当前的系统时间;步骤10、收到客户端结点的结点扩充消息,进行消息处理,会有以下步骤:步骤10.1、从该消息中获取结点信息列表;步骤10.2、依据这些结点的全局编号在本结点的数据源结点列表和数据请求者结点列表中查找是否存在记录;步骤10.2.1、如果没有且数据请求者结点列表未满,则将对应的结点信息填入到该列表中;步骤11、每隔一个设定的周期间隔,该周期间隔为2秒钟,进行如下步骤的操作:步骤11.1、向本结点的中所有结点发送存活消息:<本结点的全局唯一编号、消息类型、保留字>,其中,所述全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit;步骤11.2、从本结点的数据请求者结点列表中随机选取一个第六客户端结点,从本结点的数据源结点列表和数据请求者结点列表中随机的选取m个结点,所述m不大于5,将这些结点信息组成结点扩充消息发送给第六客户端结点;结点扩充消息的组成:<本结点的全局唯一编号、消息类型、保留字、m个结点信息>,其中,所述全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit,所述m个结点信息为m×96bit;步骤12、每隔一个设定的周期间隔,该周期间隔为1秒钟,进行如下步骤的操作:步骤12.1、将本结点的数据源结点列表和数据请求者结点列表中更新时间与当前系统时间的间隔超过设定值5秒钟的结点记录从列表中删除;步骤12.2、当本结点的数据源结点列表未满时,从数据请求者结点列表中随机选取N个结点,将这些结点的信息从数据请求者结点列表中删除,加入到数据源结点列表中,其中N=min(数据请求者结点列表当前结点数,数据源结点列表的最大数减去数据源结点列表的当前结点数);步骤13、收到其它第七客户端结点的退出消息,进行消息处理,依次会有以下步骤:步骤13.1、将第七客户端结点从本结点的数据源结点列表和数据请求者结点列表中删除;步骤13.2、从退出消息中获取替代结点的信息,如果替代结点没有在本结点的数据源结点列表和数据请求者结点列表中,则将替代结点的信息加入到第七客户端结点原来所在的列表中;步骤14、客户端结点的退出,依次会有以下步骤;步骤14.1、即将退出系统的结点发送退出消息给本结点的数据源结点列表和数据请求者结点列表中的每个结点,并且在每个退出消息中包括一个自己数据源结点列表中随机选出的结点;退出消息的组成:<本结点的全局唯一编号、消息类型、保留字、替代结点信息>,其中,所述全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit,所述替代结点信息为96bit;步骤14.2、发送退出消息至MMS服务器;退出消息的组成:<本结点的全局唯一编号、消息类型、保留字>,其中,所述全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit;步骤14.3、发送退出消息至RPS服务器;退出消息的组成:<本结点的全局唯一编号、消息类型、保留字>,其中,所述全局唯一编号为32bit、所述消息类型为16bit、所述保留字为16bit。
地址 100083北京市海淀区塔院朗秋园甲八号综合楼2层