CN1881900A - 适用于大规模流媒体直播系统的对等网络成员管理方法 - Google Patents

适用于大规模流媒体直播系统的对等网络成员管理方法 Download PDF

Info

Publication number
CN1881900A
CN1881900A CN 200610078852 CN200610078852A CN1881900A CN 1881900 A CN1881900 A CN 1881900A CN 200610078852 CN200610078852 CN 200610078852 CN 200610078852 A CN200610078852 A CN 200610078852A CN 1881900 A CN1881900 A CN 1881900A
Authority
CN
China
Prior art keywords
node
message
tabulation
16bit
32bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200610078852
Other languages
English (en)
Other versions
CN100433657C (zh
Inventor
尹浩
邱锋
刘雪宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lanxun Network Science-Technology Co., Ltd., Beijing
Original Assignee
BEIJING LIVESKY TECHNOLOGIES Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING LIVESKY TECHNOLOGIES Co Ltd filed Critical BEIJING LIVESKY TECHNOLOGIES Co Ltd
Priority to CNB2006100788528A priority Critical patent/CN100433657C/zh
Publication of CN1881900A publication Critical patent/CN1881900A/zh
Application granted granted Critical
Publication of CN100433657C publication Critical patent/CN100433657C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明为适用于大规模流媒体直播系统的对等网络成员管理方法,属于网络技术领域;其特征在于所述方法将系统的各个结点分为服务器结点和客户端结点,其中,服务器结点包括:集中点服务器、成员管理服务器和日志服务器;各个结点通过互相之间的消息传递、消息处理以及一些周期性的操作来实现对等网络的成员管理方法,即完成大量结点的命名、组织以及确定结点的加入利离开方式等功能;在本方法里,各个结点之间的消息传递采用了用户数据报协议(UDP)来实现。本发明的实现为大规模网络流媒体直播系统提供了可靠、高效的对等网络成员管理方法。

Description

适用于大规模流媒体直播系统的对等网络成员管理方法
技术领域
本发明属于网络技术领域。
背景技术
对等网络(Peer-to-Peer,简称P2P)技术是目前新一代互联网技术研究的一个热点,得到国内外学术界和工业界的广泛关注。美国的《财富》杂志更将其称为改变因特网发展的四大新技术之一。
传统的分布式系统的实现主要采取的是客户端-服务器模式,对等网络技术从根本上改变了这一模式。在采用对等网络技术实现的分布式系统里,每个结点即充当客户端又充当服务器,享用其它结点提供的服务同时也为其它结点提供服务。附图1给出了客户端-服务器模式和对等网络模式的基本对比。
对等网络技术具有以下几个方面的显著特点:
(1)非中心化:系统中的资源和服务分散在各个结点上,信息的传递和服务的实现都直接在结点之间进行,可以无需中间环节和服务器的介入,避免了可能存在的瓶颈。非中心化是对等网络技术的基本特点,由此带来了其在可扩展性、健壮性等方面的优势。
(2)可扩展性:在对等网络中,随着用户数的增加,服务的需求增加,但同时系统整体的资源和服务能力也得到扩充,始终能较容易的满足用户的需求,整个体系是全分布的,不存在瓶颈。理论上其可扩展性几乎可以认为是无限的。
(3)健壮性:由于对等网络的服务是分散在各个结点之上的,部分结点或网络遭到破坏对其它部分的影响很小。对等网络通常是以自组织的方式建立起来,允许结点自由的加入和离开,一般能够在部分结点失效时自动恢复,具有耐攻击、高容错的优势。
(4)高性价比:采用对等网络架构可以有效地利用互联网中散布的大量普通结点的计算、存储、网络资源,从而降低成本。
(5)负载均衡:对等网络环境下每个结点既是服务器又是客户端,减少了对传统客户端-服务器结构中服务器计算、存储等能力的要求,由于资源分布在各个结点,更好的实现了整个网络的负载均衡。
                     表1对等网络四种拓扑结构性能比较
拓扑结构是指分布式系统中各个结点之间的物理或逻辑的互联关系,结点之间的拓扑结构一直是确定系统类型的重要依据。对等网络系统一般要构造一个非集中式的拓扑结构,在构造过程中需要解决系统中所包含的大量结点如何命名、组织以及确定结点的加入和离开方式、出错恢复等问题。根据拓扑结构的关系可以将对等网络分为四种形式:中心化拓扑;全分布式非结构化拓扑;全分布式结构化拓扑和半分布式拓扑。表1给出了这四种拓扑结构的性能比较。
与传统的分布式系统相比,对等网络技术具有无可比拟的优势,具有广阔的应用前景。互联网上各种对等网络应用软件层出不穷,用户数量急剧增加。对等网络技术正不断应用到军事领域、商业领域、政府信息、通讯等领域。根据具体应用不同,可以把对等网络分为以下这些类型:
提供文件和其它内容共享的对等网络,例如Napster、Gnutella、eDonkey、emule、BitTorrent等;
挖掘对等网络对等计算能力和存储共享能力,例如Avaki、Popular Power等;
基于对等网络方式的协同处理与服务共享平台,例如JXTA、Magi、Groove、.NET My Service等;
即时通讯交流,包括ICQ、OICQ、Yahoo Messenger等;
安全的对等网络通讯与信息共享,例如Skype、Crowds、Onion Routing等。
对等网络技术在最近几年获得了如此高速的发展,尤其是其与网络流媒体服务的结合必将会更加促进对等网络技术的发展,也必将带动网络流媒体服务的迅速发展。
对等网络的成员管理方法主要就是为了解决如何构建对等网络的拓扑结构的问题,即解决大量结点如何命名、组织以及确定结点的加入和离开方式、出错恢复等问题。目前,比较成熟的方法主要是Gossip算法,该算法主要解决的是大量客户端结点之间的成员管理问题。
对于大规模网络流媒体直播系统这个特殊的应用,如何实现服务器与客户端之间、客户端与客户端之间或者多个服务器(如果存在)之间的成员管理,如何综合现有的对等网络相关技术,尤其是Gossip算法,实现一个完整、可靠、高效的成员管理方法,是一个关键的技术问题。
发明内容
本发明是为了更好的支持大规模网络流媒体直播系统,总结了现有的对等网络技术,并进行了详细的设计与优化,实现了可靠、高效的对等网络成员管理方法。
本发明的特征在于所述方法将系统的各个结点分为服务器结点和客户端结点,其中,服务器结点包括:集中点服务器(RPS)、成员管理服务器(MMS)和日志服务器(LOG);各个结点通过互相之间的消息传递、消息处理以及一些周期性的操作来实现对等网络的成员管理方法,即完成大量结点的命名、组织以及确定结点的加入和离开方式等功能;各个结点之间的消息传递采用了用户数据报协议(UDP),成功的实现了大规模流媒体直播系统的成员管理功能。附图2给出了该方法的系统结构图。
下面,将分别详细阐述系统中各个结点的工作流程。
集中点服务器(RPS):系统中的客户端结点在加入系统时首先登录RPS,由RPS分配自己的全局唯一编号,并获取代理结点的信息来加入系统,客户端结点也定时向RPS发送自己的存活状态,以便RPS和LOG共同完成对系统的所有客户端结点的状态维护,下面详细阐述RPS服务器的工作流程。
步骤1、RPS初始化,依次会有以下步骤:
步骤1.1、RPS的全局唯一编号为1;
步骤1.2、将32位全局用户编号变量(变量名为GUID)初始化设为0x10000,该变量用于为客户端结点分配全局唯一编号;
步骤1.3、MMS空闲连接数变量初始化设为0,该变量存储MMS服务器的空闲连接数,用于进行代理结点分配的判断,当收到MMS的消息时更新;
步骤1.4、建立一个空的循环列表,名为代理结点列表,表长256,表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)、更新时间>;
步骤1.5、建立一个空的列表,名为结点更新列表,表长100,表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit));
步骤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、将选定的代理结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>填入到登录反馈消息中;
步骤2.3、为发送登录服务器消息的结点返回登录反馈消息:
登录反馈消息的组成:<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、将选定的代理结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>填入到重新登录反馈消息中;
步骤3.2、为发送重新登录服务器消息的结点返回重新登录反馈消息:
重新登录反馈消息的组成:<RPS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、代理结点信息(96bit)>;
步骤4、收到客户端结点的存活消息,进行消息处理,依次会有以下步骤:
步骤4.1、将该客户端结点的结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>填入到循环列表代理结点列表的表尾,如果表已满,则覆盖之前的结点信息,将列表该项的更新时间设为RPS的系统时间,精确到秒;
步骤4.2、将该客户端的结点信息填入到结点更新列表的表尾,如果表已满,则放弃此次信息填入;
步骤4.2.1、填完该客户端的结点信息后,判断结点更新列表是否已满,如果是,执行步骤4.3,否则,不执行步骤4.3;
步骤4.3、发送结点更新消息至日志服务器(LOG);
结点更新消息的组成:<RPS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、结点更新列表的长度(32bit)、结点更新列表(列表长度×96bit)>;
步骤5、收到客户端结点的退出消息,进行消息处理,依次会有以下步骤:
步骤5.1、将该客户端结点的全局编号填入到结点退出列表的表尾,如果表已满,放弃此次信息填入;
步骤5.1.1、填完该客户端的编号信息后,判断结点退出列表是否已满,如果是,执行步骤5.2,否则,不执行步骤5.2;
步骤5.2、发送结点退出消息至日志服务器(LOG);
结点退出消息的组成:<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):接收RPS的结点更新消息和结点退出消息,依据这些消息,对在线客户结点的数据库进行操作,下面详细阐述日志服务器的工作流程:
步骤1、LOG初始化,依次会有以下步骤:
步骤1.1、LOG的全局唯一编号为2;
步骤1.2、在数据库中建立一张系统客户端结点的表,表项为<全局编号(unsigned int)(Key)、IPv4网络地址(unsigned long)、端口(unsigned short)、保留字(unsigned short)、更新时间(time)>;
步骤1.3、LOG进行完前述初始化操作后,开始等待RPS的消息并进行消息处理以及进行一些周期性的操作,见步骤2~4;
步骤2、收到RPS的结点更新消息,进行消息处理,依次会有以下步骤:
步骤2.1、从该消息中获取结点更新列表;
步骤2.2、从数据库的客户端结点表中依次删除结点更新列表的全局编号对应的结点表项;
步骤2.3、将结点更新列表中的结点信息一次性加入到数据库的表中,表项的更新时间设为系统时间;
步骤3、收到RPS的结点退出消息,进行消息处理,依次会有以下步骤:
步骤3.1、从该消息中获取结点退出列表;
步骤3.2、从数据库的客户端结点表中依次删除结点退出列表的全局编号对应的结点表项;
步骤4、每隔一个设定的周期间隔(30秒),进行如下步骤的操作:
步骤4.1、将数据库的客户端结点表中更新时间与当前系统时间间隔超过5分钟的表项删除;
成员管理服务器(MMS):MMS负责维护部分客户端结点的状态信息,该部分客户端结点和MMS的交互间隔明显短于和RPS的交互间隔,这样的系统结构很好的支持了大规模流媒体直播系统的应用。下面详细阐述MMS服务器的工作流程:
步骤1、MMS初始化,依次会有以下步骤:
步骤1.1、MMS的全局唯一编号为3;
步骤1.2、建立一个空的列表,名为特殊结点列表(Push结点列表),表长可以自由选定(默认为50),表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)、更新时间>;
步骤1.3、建立一个空的列表,名为备用结点列表(Stby结点列表),表长可以自由选定(默认为100),表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)、更新时间>;
步骤1.4、MMS进行完前述初始化操作后,开始等待客户端结点的消息并进行消息处理以及进行一些周期性的操作,见步骤2~5;
步骤2、收到客户端结点A(此处的A仅为了步骤2的后续阐述简便而设)的接入请求消息后,进行消息处理,依次会有以下步骤:
步骤2.1、如果Push结点列表已满,转入2.3;
步骤2.2、将该客户端A的结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>加入到Push结点列表中,将相应项的更新时间设为MMS的系统时间,定义该客户端结点A的类型为Push类型,转入2.6;
步骤2.3、如果Stby结点列表已满,转入2.5;
步骤2.4、将该客户端A的结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>加入到Stby结点列表中,将相应项的更新时间设为MMS的系统时间,定义该客户端结点A的类型为Stby类型,转入2.6;
步骤2.5、定义该客户端结点A的类型为普通类型(Normal类型);
步骤2.6、返回客户端A接入请求反馈消息;
接入请求反馈消息的组成:<MMS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、客户端结点类型(16bit)、保留字(16bit)>;
步骤2.7、发送接入请求转发消息到Push结点列表的所有结点,其中转发次数设为默认值(可取5):
接入请求转发消息的组成:<MMS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、客户端A的结点信息(96bit)、转发次数(32bit)>;
步骤2.8、如果客户端A的结点类型为Stby或者Normal,则发送接入请求转发消息到Stby结点列表的所有结点,其中转发次数设为默认值(可取5):
接入请求转发消息的组成:同步骤2.7中的消息组成;
步骤3、收到客户端结点的存活消息,进行消息处理,依次会有以下步骤:
步骤3.1、在Push结点列表中依据全局编号查找是否有该客户端结点的信息;
步骤3.1.1、若有,将Push结点列表中该结点的更新时间设为当前的MMS系统时间,不再执行步骤3的后续步骤;
步骤3.1.2、若没有,则转入步骤3.2;
步骤3.2、在Stby结点列表中依据全局编号查找是否有该客户端结点的信息;
步骤3.2.1、若有,将Stby结点列表中该结点的更新时间设为当前的MMS系统时间;
步骤3.2.2、若没有,判断Stby结点列表是否已满;
步骤3.2.2.1、如果该列表未满,则将该客户端的结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>加入到Stby结点列表中,将相应项的更新时间设为MMS的系统时间,定义该客户端结点A的类型为Stby类型,仅执行步骤2.6;
步骤4、收到客户端结点的退出消息,进行消息处理,依次会有以下步骤:
步骤4.1、在Push结点列表和Stby结点列表中依据全局编号查找是否有该客户端结点的信息;
步骤4.1.1、如果有,则将该结点的信息从对应列表中删除;
步骤4.1.2、如果没有,则不作处理;
步骤5、每隔一个设定的周期间隔(2秒钟),进行如下步骤的操作:
步骤5.1、将Push结点列表和Stby结点列表中更新时间与当前系统时间间隔超过5秒钟的表项从列表中删除;
步骤5.2、发送消息至RPS服务器:<MMS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、MMS空余连接数(32bit)>,其中,MMS空余连接数=Push结点列表(最大数-当前数)+Stby结点列表(最大数-当前数);
客户端结点:客户端结点的操作起始于登录服务器,终止于退出系统,中间以消息传递、消息处理和多种周期性操作组成,配合服务器端的各种操作,共同实现了对等网络的成员管理方法。附图3给出了客户端结点的基本工作流程图,下面详细阐述其工作流程:
步骤1、客户端初始化,依次会有以下步骤:
步骤1.1、建立一个空的列表,名为数据源结点列表(Ptn结点列表),表长20,表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)、更新时间>;
步骤1.2、建立一个空的列表,名为数据请求者结点列表(Mem结点列表),表长80,表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)、更新时间>;
步骤2、登录服务器,依次会有以下步骤:
步骤2.1、发送登录服务器消息至集中点服务器(RPS);
登录服务器消息的组成:<0xffffffff(32bit)、消息类型(16bit)、保留字(16bit)>;
步骤2.2、按设定的超时间隔(1秒)启动超时计时器;
步骤2.3、超时时间到,尚未获得登录反馈消息时,若超时次数大于设定次数(5次)时,则放弃登录服务器,客户端终止操作,否则重新执行步骤2.1~2.2;
步骤2.4、若在超时间隔内获得登录反馈消息,得到RPS分配给本结点的全局唯一编号以及代理结点的信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>;
步骤2.5、根据代理结点的全局编号进行判断,如果是MMS服务器的编号,则转入步骤3;如果是客户端结点的编号,则转入步骤4;
步骤3、通过MMS服务器接入系统,依次会有以下步骤:
步骤3.1、发送接入请求消息至MMS服务器;
接入请求消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>;
步骤3.2、按设定的超时间隔(2秒)启动超时计时器;
步骤3.3、超时时间到,尚未获得接入请求反馈消息时,若超时次数大于设定次数(5)时,则执行步骤5,否则重新执行步骤3.1~3.2;
步骤3.4、若在超时间隔内获得接入请求反馈消息,从中获得MMS为自己定义的客户端结点类型(Push、Stby或者Normal),开始等待客户端结点的消息并进行消息处理以及进行一些周期性的操作,见步骤6~13,转入步骤6;
步骤4、通过客户端代理结点接入系统,依次会有以下步骤:
步骤4.1、由于代理结点是客户端,则本结点的结点类型被定义为Normal;
步骤4.2、发送接入请求消息至代理结点;
接入请求消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>;
步骤4.3、按设定的超时间隔(3秒)启动超时计时器;
步骤4.4、超时时间到,尚未获得任何接入请求转发反馈消息时,若超时次数大于设定次数(5)时,则执行步骤5,否则重新执行步骤4.2~4.3;
步骤4.5、若在超时间隔内获得接入请求转发反馈消息,开始等待客户端结点的消息并进行消息处理以及进行一些周期性的操作,见步骤6~13,转入步骤6;
步骤5、重新登录服务器,依次会有以下步骤:
步骤5.1、发送重新登录服务器消息至集中点服务器(RPS);
重新登录服务器消息的组成:<0xffffffff(32bit)、消息类型(16bit)、保留字(16bit)>;
步骤5.2、按设定的超时间隔(1秒)启动超时计时器;
步骤5.3、超时时间到,尚未获得重新登录反馈消息时,若超时次数大于设定次数(3次)时,则放弃重新登录服务器,客户端终止操作,否则重新执行步骤5.1~5.2;
步骤5.4、若在超时间隔内获得重新登录反馈消息,得到RPS分配给本结点的全局唯一编号以及代理结点的信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>;
步骤5.5、根据代理结点的全局编号进行判断,如果是MMS服务器的编号,则转入步骤3;如果是客户端结点的编号,则转入步骤4;
步骤6、收到客户端结点B(此处的B仅为了步骤6的后续阐述简便而设)的接入请求转发反馈消息,进行消息处理,会有以下步骤:
步骤6.1、在数据源结点列表中依据结点B的全局编号查找是否存在记录;
步骤6.1.1、如果不存在,判断数据源结点列表是否已满;
步骤6.1.1.1、如果没满,则将结点B的结点信息加入到数据源结点列表中;
步骤6.1.1.2、如果列表已满,放弃步骤6的其它操作;
步骤6.1.2、如果存在,将对应表项的更新时间置为本结点的系统时间;
步骤7、收到客户端结点C(此处的C仅为了步骤7的后续阐述简便而设)的接入请求消息,进行消息处理,会有以下步骤:
步骤7.1、发送接入请求转发消息到数据源结点列表的所有结点,其中转发次数设为默认值(5);接入请求转发消息的组成:<自己全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、客户端C的结点信息(96bit)、转发次数(32bit)>;
步骤7.2、发送接入请求转发消息到数据请求者结点列表的随机选定的N个结点,其中,N=min(数据请求者结点列表当前结点数,数据源结点列表(最大数-当前结点数)),转发次数设为默认值(5);
接入请求转发消息的组成:同步骤7.1的消息组成;
步骤8、收到客户端结点D(此处的D仅为了步骤8的后续阐述简便而设)的接入请求转发消息,进行消息处理,会有以下步骤:
步骤8.1、从消息中获得最初发送接入请求消息的结点C的信息;
步骤8.2、查找本结点的数据源结点列表和数据请求者结点列表中是否有结点C的信息;
步骤8.2.1、若没有结点C的信息,判断本结点的数据请求者结点列表是否已满;
步骤8.2.1.1、若已满,执行步骤8.3;
步骤8.2.1.2、以概率P=1/(1+局部数据请求者视图大小),保留结点C的信息至本结点的数据请求者结点列表,如果保留,则执行步骤8.4,不保留,则执行步骤8.3;
步骤8.2.2、若有结点C的信息,判断该消息中转发次数是否大于0;
步骤8.2.2.1、如果是,则执行步骤8.3;
步骤8.2.2.2、如果不是,则放弃执行步骤8的其它子步骤;
步骤8.3、从本结点的数据源结点列表和数据请求者结点列表中随机选取一个结点,向其发送接入请求转发消息,其中,转发次数为步骤8收到的消息中转发次数减1,不执行步骤8.4;
接入请求转发消息的组成:<自己全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、客户端C的结点信息(96bit)、转发次数(32bit)>;
步骤8.4、将结点C的结点信息加入到数据请求者结点列表中,发送接入请求转发反馈消息至结点C;
接入请求转发反馈消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>;
步骤9、收到客户端结点E(此处的E仅为了步骤9的后续阐述简便而设)的存活消息,进行消息处理,会有以下步骤:
步骤9.1、在本结点的数据源结点列表和数据请求者结点列表中依据全局唯一编号查找结点E的信息,如果有,则将对应记录的更新时间设为当前的系统时间;
步骤10、收到客户端结点的结点扩充消息,进行消息处理,会有以下步骤:
步骤10.1、从该消息中获取结点信息列表;
步骤10.2、依据这些结点的全局编号在本结点的数据源结点列表和数据请求者结点列表中查找是否存在记录;
步骤10.2.1、如果没有且数据请求者结点列表未满,则将对应的结点信息填入到该列表中;
步骤11、每隔一个设定的周期间隔(2秒钟),进行如下步骤的操作:
步骤11.1、向本结点的中所有结点发送存活消息:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>;
步骤11.2、从本结点的数据请求者结点列表中随机选取一个结点F,从本结点的数据源结点列表和数据请求者结点列表中随机的选取m(不大于5)个结点,将这些结点信息组成结点扩充消息发送给结点F;
结点扩充消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、m个结点信息(m×96bit)>;
步骤12、每隔一个设定的周期间隔(1秒钟),进行如下步骤的操作:
步骤12.1、将本结点的数据源结点列表和数据请求者结点列表中更新时间与当前系统时间的间隔超过设定值(5秒钟)的结点记录从列表中删除;
步骤12.2、当本结点的数据源结点列表未满时,从数据请求者结点列表中随机选取N个结点,将这些结点的信息从数据请求者结点列表中删除,加入到数据源结点列表中,其中N=min(数据请求者结点列表当前结点数,数据源结点列表(最大数-当前结点数));
步骤13、收到其它客户端结点G的退出消息,进行消息处理,依次会有以下步骤:
步骤13.1、将结点G从本结点的数据源结点列表和数据请求者结点列表中删除;
步骤13.2、从退出消息中获取替代结点的信息,如果替代结点没有在本结点的数据源结点列表和数据请求者结点列表中,则将替代结点的信息加入到结点G原来所在的列表中;
步骤14、客户端结点的退出,依次会有以下步骤;
步骤14.1、即将退出系统的结点发送退出消息给本结点的数据源结点列表和数据请求者结点列表中的每个结点,并且在每个退出消息中包括一个自己数据源结点列表中随机选出的结点;
退出消息的组成:(本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、替代结点信息(96bit)>;
步骤14.2、发送退出消息至MMS服务器;
退出消息的组成:(本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>;
步骤14.3、发送退出消息至RPS服务器;
退出消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>。
附图说明
图1给出了传统的客户端-服务器模式(C/S)和本发明所采用的对等网络模式(P2P)两个示意图;
图2给出了本发明的系统结构图;
图3给出了客户端的基本流程图。

Claims (8)

  1. 适用于大规模流媒体直播系统的对等网络成员管理方法,其特征在于所述方法将系统的各个结点分为服务器结点和客户端结点,其中,服务器结点包括:集中点服务器(RPS)、成员管理服务器(MMS)和日志服务器(LOG);各个结点通过互相之间的消息传递、消息处理以及一些周期性的操作来实现对等网络的成员管理方法,即完成大量结点的命名、组织以及确定结点的加入和离开方式等功能;各个结点之间的消息传递采用了用户数据报协议(UDP),成功的实现了支持大规模流媒体直播系统的可靠、高效的对等网络成员管理方法。系统中的各个结点分别会有以下工作步骤:
    集中点服务器(RPS)工作步骤:
    步骤1、RPS初始化,依次会有以下步骤:
    步骤1.1、RPS的全局唯一编号为1;
    步骤1.2、将32位全局用户编号变量(变量名为GUID)初始化设为0x10000,该变量用于为客户端结点分配全局唯一编号;
    步骤1.3、MMS空闲连接数变量初始化设为0,该变量存储MMS服务器的空闲连接数,用于进行代理结点分配的判断,当收到MMS的消息时更新;
    步骤1.4、建立一个空的循环列表,名为代理结点列表,表长256,表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)、更新时间>;
    步骤1.5、建立一个空的列表,名为结点更新列表,表长100,表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>;
    步骤1.6、建立一个空的列表,名为结点退出列表,表长300,表项为<全局编号(32bit)>;
    步骤1.7、RPS进行完前述初始化操作后,开始等待其它结点的各类消息并进行消息处理以及进行一些周期性的操作,见步骤2~8;
  2. 步骤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、将选定的代理结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>填入到登录反馈消息中;
    步骤2.3、为发送登录服务器消息的结点返回登录反馈消息:
    登录反馈消息的组成:<RPS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、客户端全局唯一编号(32bit)、代理结点信息(96bit)>;
  3. 步骤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、将选定的代理结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、 \保留字(16bit)>填入到重新登录反馈消息中;
    步骤3.2、为发送重新登录服务器消息的结点返回重新登录反馈消息:
    重新登录反馈消息的组成:<RPS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、代理结点信息(96bit)>;
  4. 步骤4、收到客户端结点的存活消息,进行消息处理,依次会有以下步骤:
    步骤4.1、将该客户端结点的结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>填入到循环列表代理结点列表的表尾,如果表已满,则覆盖之前的结点信息,将列表该项的更新时间设为RPS的系统时间,精确到秒;
    步骤4.2、将该客户端的结点信息填入到结点更新列表的表尾,如果表已满,则放弃此次信息填入;
    步骤4.2.1、填完该客户端的结点信息后,判断结点更新列表是否已满,如果是,执行步骤4.3,否则,不执行步骤4.3;
    步骤4.3、发送结点更新消息至日志服务器(LOG);
    结点更新消息的组成:<RPS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、结点更新列表的长度(32bit)、结点更新列表(列表长度×96bit)>;
  5. 步骤5、收到客户端结点的退出消息,进行消息处理,依次会有以下步骤:
    步骤5.1、将该客户端结点的全局编号填入到结点退出列表的表尾,如果表已满,放弃此次信息填入;
    步骤5.1.1、填完该客户端的编号信息后,判断结点退出列表是否已满,如果是,执行步骤5.2,否则,不执行步骤5.2;
    步骤5.2、发送结点退出消息至日志服务器(LOG);
    结点退出消息的组成:<RPS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、结点退出列表的长度(32bit)、结点退出列表(列表长度×32bit)>;
  6. 步骤6、收到成员管理服务器(MMS)的消息,进行消息处理,会有以下步骤:
    步骤6.1、从该消息中获取MMS空闲连接数变量的值,更新该变量;
  7. 步骤7、每隔一个设定的周期间隔(1秒),进行如下步骤的操作:
    步骤7.1、如果结点更新列表不空,则执行步骤4.3;
    步骤7.2、如果结点退出列表不空,则执行步骤5.2;
  8. 步骤8、每隔一个设定的周期间隔(10秒),进行如下步骤的操作:
    步骤8.1、置代理结点列表中更新时间与当前系统时间间隔超过1分钟的表项失效;日志服务器(LOG):
    步骤1、LOG初始化,依次会有以下步骤:
    步骤1.1、LOG的全局唯一编号为2;
    步骤1.2、在数据库中建立一张系统客户端结点的表,表项为<全局编号(unsigned int)(Key)、IPv4网络地址(unsigned long)、端口(unsigned short)、保留字(unsigned short)、更新时间(time)>;
    步骤1.3、LOG进行完前述初始化操作后,开始等待RPS的消息并进行消息处理以及进行一些周期性的操作,见步骤2~4;
    步骤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、建立一个空的列表,名为特殊结点列表(Push结点列表),表长可以自由选定(默认为50),表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)、更新时间>;
    步骤1.3、建立一个空的列表,名为备用结点列表(Stby结点列表),表长可以自由选定(默认为100),表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)、更新时间>;
    步骤1.4、MMS进行完前述初始化操作后,开始等待客户端结点的消息并进行消息处理以及进行一些周期性的操作,见步骤2~5;
    步骤2、收到客户端结点A(此处的A仅为了步骤2的后续阐述简便而设)的接入请求消息后,进行消息处理,依次会有以下步骤:
    步骤2.1、如果Push结点列表已满,转入2.3;
    步骤2.2、将该客户端A的结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>加入到Push结点列表中,将相应项的更新时间设为MMS的系统时间,定义该客户端结点A的类型为Push类型,转入2.6;
    步骤2.3、如果Stby结点列表已满,转入2.5;
    步骤2.4、将该客户端A的结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>加入到Stby结点列表中,将相应项的更新时间设为MMS的系统时间,定义该客户端结点A的类型为Stby类型,转入2.6;
    步骤2.5、定义该客户端结点A的类型为普通类型(Normal类型);
    步骤2.6、返回客户端A接入请求反馈消息;
    接入请求反馈消息的组成:<MMS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、客户端结点类型(16bit)、保留字(16bit)>;
    步骤2.7、发送接入请求转发消息到Push结点列表的所有结点,其中转发次数设为默认值(可取5):接入请求转发消息的组成:<MMS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、客户端A的结点信息(96bit)、转发次数(32bit)>;
    步骤2.8、如果客户端A的结点类型为Stby或者Normal,则发送接入请求转发消息到Stby结点列表的所有结点,其中转发次数设为默认值(可取5):
    接入请求转发消息的组成:同步骤2.7中的消息组成;
    步骤3、收到客户端结点的存活消息,进行消息处理,依次会有以下步骤:
    步骤3.1、在Push结点列表中依据全局编号查找是否有该客户端结点的信息;
    步骤3.1.1、若有,将Push结点列表中该结点的更新时间设为当前的MMS系统时间,不再执行步骤3的后续步骤;
    步骤3.1.2、若没有,则转入步骤3.2;
    步骤3.2、在Stby结点列表中依据全局编号查找是否有该客户端结点的信息;
    步骤3.2.1、若有,将Stby结点列表中该结点的更新时间设为当前的MMS系统时间;
    步骤3.2.2、若没有,判断Stby结点列表是否已满;
    步骤3.2.2.1、如果该列表未满,则将该客户端的结点信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>加入到Stby结点列表中,将相应项的更新时间设为MMS的系统时间,定义该客户端结点A的类型为Stby类型,仅执行步骤2.6;
    步骤4、收到客户端结点的退出消息,进行消息处理,依次会有以下步骤:
    步骤4.1、在Push结点列表和Stby结点列表中依据全局编号查找是否有该客户端结点的信息;
    步骤4.1.1、如果有,则将该结点的信息从对应列表中删除;
    步骤4.1.2、如果没有,则不作处理;
    步骤5、每隔一个设定的周期间隔(2秒钟),进行如下步骤的操作:
    步骤5.1、将Push结点列表和Stby结点列表中更新时间与当前系统时间间隔超过5秒钟的表项从列表中删除;
    步骤5.2、发送消息至RPS服务器:<MMS全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、MMS空余连接数(32bit)>,其中,MMS空余连接数=Push结点列表(最大数-当前数)+Stby结点列表(最大数-当前数);
    客户端结点:
    步骤1、客户端初始化,依次会有以下步骤:
    步骤1.1、建立一个空的列表,名为数据源结点列表(Ptn结点列表),表长20,表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)、更新时间>;
    步骤1.2、建立一个空的列表,名为数据请求者结点列表(Mem结点列表),表长80,表项为<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)、更新时间>;
    步骤2、登录服务器,依次会有以下步骤:
    步骤2.1、发送登录服务器消息至集中点服务器(RPS);
    登录服务器消息的组成:<0xffffffff(32bit)、消息类型(16bit)、保留字(16bit)>;
    步骤2.2、按设定的超时间隔(1秒)启动超时计时器;
    步骤2.3、超时时间到,尚未获得登录反馈消息时,若超时次数大于设定次数(5次)时,则放弃登录服务器,客户端终止操作,否则重新执行步骤2.1~2.2;
    步骤2.4、若在超时间隔内获得登录反馈消息,得到RPS分配给本结点的全局唯一编号以及代理结点的信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>;
    步骤2.5、根据代理结点的全局编号进行判断,如果是MMS服务器的编号,则转入步骤3;如果是客户端结点的编号,则转入步骤4;
    步骤3、通过MMS服务器接入系统,依次会有以下步骤:
    步骤3.1、发送接入请求消息至MMS服务器;
    接入请求消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>;
    步骤3.2、按设定的超时间隔(2秒)启动超时计时器;
    步骤3.3、超时时间到,尚未获得接入请求反馈消息时,若超时次数大于设定次数(5)时,则执行
    步骤5,否则重新执行步骤3.1~3.2;
    步骤3.4、若在超时间隔内获得接入请求反馈消息,从中获得MMS为自己定义的客户端结点类型(Push、Stby或者Normal),开始等待客户端结点的消息并进行消息处理以及进行一些周期性的操作,见步骤6~13,转入步骤6;
    步骤4、通过客户端代理结点接入系统,依次会有以下步骤:
    步骤4.1、由于代理结点是客户端,则本结点的结点类型被定义为Normal;
    步骤4.2、发送接入请求消息至代理结点;
    接入请求消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>;
    步骤4.3、按设定的超时间隔(3秒)启动超时计时器;
    步骤4.4、超时时间到,尚未获得任何接入请求转发反馈消息时,若超时次数大于设定次数(5)时,则执行步骤5,否则重新执行步骤4.2~4.3;
    步骤4.5、若在超时间隔内获得接入请求转发反馈消息,开始等待客户端结点的消息并进行消息处理以及进行一些周期性的操作,见步骤6~13,转入步骤6;
    步骤5、重新登录服务器,依次会有以下步骤:
    步骤5.1、发送重新登录服务器消息至集中点服务器(RPS);
    重新登录服务器消息的组成:<0xffffffff(32bit)、消息类型(16bit)、保留字(16bit)>;
    步骤5.2、按设定的超时间隔(1秒)启动超时计时器;
    步骤5.3、超时时间到,尚未获得重新登录反馈消息时,若超时次数大于设定次数(3次)时,则放弃重新登录服务器,客户端终止操作,否则重新执行步骤5.1~5.2;
    步骤5.4、若在超时间隔内获得重新登录反馈消息,得到RPS分配给本结点的全局唯一编号以及代理结点的信息<全局编号(32bit)、IPv4网络地址(32bit)、端口(16bit)、保留字(16bit)>;
    步骤5.5、根据代理结点的全局编号进行判断,如果是MMS服务器的编号,则转入步骤3;如果是客户端结点的编号,则转入步骤4;
    步骤6、收到客户端结点B(此处的B仅为了步骤6的后续阐述简便而设)的接入请求转发反馈消息,进行消息处理,会有以下步骤:
    步骤6.1、在数据源结点列表中依据结点B的全局编号查找是否存在记录;
    步骤6.1.1、如果不存在,判断数据源结点列表是否已满;
    步骤6.1.1.1、如果没满,则将结点B的结点信息加入到数据源结点列表中;
    步骤6.1.1.2、如果列表已满,放弃步骤6的其它操作;
    步骤6.1.2、如果存在,将对应表项的更新时间置为本结点的系统时间;
    步骤7、收到客户端结点C(此处的C仅为了步骤7的后续阐述简便而设)的接入请求消息,进行消息处理,会有以下步骤:
    步骤7.1、发送接入请求转发消息到数据源结点列表的所有结点,其中转发次数设为默认值(5);接入请求转发消息的组成:<自己全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、客户端C的结点信息(96bit)、转发次数(32bit)>;
    步骤7.2、发送接入请求转发消息到数据请求者结点列表的随机选定的N个结点,其中,N=min(数据请求者结点列表当前结点数,数据源结点列表(最大数-当前结点数)),转发次数设为默认值(5);接入请求转发消息的组成:同步骤7.1的消息组成;
    步骤8、收到客户端结点D(此处的D仅为了步骤8的后续阐述简便而设)的接入请求转发消息,进行消息处理,会有以下步骤:
    步骤8.1、从消息中获得最初发送接入请求消息的结点C的信息;
    步骤8.2、查找本结点的数据源结点列表和数据请求者结点列表中是否有结点C的信息;
    步骤8.2.1、若没有结点C的信息,判断本结点的数据请求者结点列表是否已满;
    步骤8.2.1.1、若已满,执行步骤8.3;
    步骤8.2.1.2、以概率P=1/(1+局部数据请求者视图大小),保留结点C的信息至本结点的数据请求者结点列表,如果保留,则执行步骤8.4,不保留,则执行步骤8.3;
    步骤8.2.2、若有结点C的信息,判断该消息中转发次数是否大于0;
    步骤8.2.2.1、如果是,则执行步骤8.3;
    步骤8.2.2.2、如果不是,则放弃执行步骤8的其它子步骤;
    步骤8.3、从本结点的数据源结点列表和数据请求者结点列表中随机选取一个结点,向其发送接入请求转发消息,其中,转发次数为步骤8收到的消息中转发次数减1,不执行步骤8.4;接入请求转发消息的组成:<自己全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、客户端C的结点信息(96bit)、转发次数(32bit)>;
    步骤8.4、将结点C的结点信息加入到数据请求者结点列表中,发送接入请求转发反馈消息至结点C;
    接入请求转发反馈消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>;
    步骤9、收到客户端结点E(此处的E仅为了步骤9的后续阐述简便而设)的存活消息,进行消息处理,会有以下步骤:
    步骤9.1、在本结点的数据源结点列表和数据请求者结点列表中依据全局唯一编号查找结点E的信息,如果有,则将对应记录的更新时间设为当前的系统时间;
    步骤10、收到客户端结点的结点扩充消息,进行消息处理,会有以下步骤:
    步骤10.1、从该消息中获取结点信息列表;
    步骤10.2、依据这些结点的全局编号在本结点的数据源结点列表和数据请求者结点列表中查找是否存在记录;
    步骤10.2.1、如果没有且数据请求者结点列表未满,则将对应的结点信息填入到该列表中;
    步骤11、每隔一个设定的周期间隔(2秒钟),进行如下步骤的操作:
    步骤11.1、向本结点的中所有结点发送存活消息:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>;
    步骤11.2、从本结点的数据请求者结点列表中随机选取一个结点F,从本结点的数据源结点列表和数据请求者结点列表中随机的选取m(不大于5)个结点,将这些结点信息组成结点扩充消息发送给结点F;
    结点扩充消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、m个结点信息(m×96bit)>;
    步骤12、每隔一个设定的周期间隔(1秒钟),进行如下步骤的操作:
    步骤12.1、将本结点的数据源结点列表和数据请求者结点列表中更新时间与当前系统时间的间隔超过设定值(5秒钟)的结点记录从列表中删除;
    步骤12.2、当本结点的数据源结点列表未满时,从数据请求者结点列表中随机选取N个结点,将这些结点的信息从数据请求者结点列表中删除,加入到数据源结点列表中,其中N=min(数据请求者结点列表当前结点数,数据源结点列表(最大数-当前结点数));
    步骤13、收到其它客户端结点G的退出消息,进行消息处理,依次会有以下步骤:
    步骤13.1、将结点G从本结点的数据源结点列表和数据请求者结点列表中删除;
    步骤13.2、从退出消息中获取替代结点的信息,如果替代结点没有在本结点的数据源结点列表和数据请求者结点列表中,则将替代结点的信息加入到结点G原来所在的列表中;
    步骤14、客户端结点的退出,依次会有以下步骤;
    步骤14.1、即将退出系统的结点发送退出消息给本结点的数据源结点列表和数据请求者结点列表中的每个结点,并且在每个退出消息中包括一个自己数据源结点列表中随机选出的结点;退出消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)、替代结点信息(96bit)>;
    步骤14.2、发送退出消息至MMS服务器;
    退出消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>;
    步骤14.3、发送退出消息至RPS服务器;
    退出消息的组成:<本结点的全局唯一编号(32bit)、消息类型(16bit)、保留字(16bit)>。
CNB2006100788528A 2006-05-11 2006-05-11 适用于大规模流媒体直播系统的对等网络成员管理方法 Active CN100433657C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100788528A CN100433657C (zh) 2006-05-11 2006-05-11 适用于大规模流媒体直播系统的对等网络成员管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100788528A CN100433657C (zh) 2006-05-11 2006-05-11 适用于大规模流媒体直播系统的对等网络成员管理方法

Publications (2)

Publication Number Publication Date
CN1881900A true CN1881900A (zh) 2006-12-20
CN100433657C CN100433657C (zh) 2008-11-12

Family

ID=37519889

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100788528A Active CN100433657C (zh) 2006-05-11 2006-05-11 适用于大规模流媒体直播系统的对等网络成员管理方法

Country Status (1)

Country Link
CN (1) CN100433657C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106603749A (zh) * 2017-01-06 2017-04-26 浙江中都信息技术有限公司 一种动态ip到主机映射的高效方法
CN108494853A (zh) * 2018-03-22 2018-09-04 广州视源电子科技股份有限公司 一种海量设备状态自维护方法及其装置和系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7613796B2 (en) * 2002-09-11 2009-11-03 Microsoft Corporation System and method for creating improved overlay network with an efficient distributed data structure
US20040107242A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Peer-to-peer content broadcast transfer mechanism
CN1535036A (zh) * 2003-04-01 2004-10-06 �ʼҷ����ֵ��ӹɷ����޹�˾ 在无线通信网络中用于点到点通信管理的方法及系统
EP1767024A2 (en) * 2004-06-10 2007-03-28 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
CN100486193C (zh) * 2004-09-29 2009-05-06 腾讯科技(深圳)有限公司 多策略的p2p连接建立方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106603749A (zh) * 2017-01-06 2017-04-26 浙江中都信息技术有限公司 一种动态ip到主机映射的高效方法
CN108494853A (zh) * 2018-03-22 2018-09-04 广州视源电子科技股份有限公司 一种海量设备状态自维护方法及其装置和系统

Also Published As

Publication number Publication date
CN100433657C (zh) 2008-11-12

Similar Documents

Publication Publication Date Title
CN1677979A (zh) 通过网络在计算机之间共享对象的系统和方法
CN1214580C (zh) 因特网上的数据高速缓冲存储器
CN1881978A (zh) 应用管理系统、应用管理方法、服务器以及通信系统
CN1638353A (zh) 网络拓扑构成方法及节点
CN101039247A (zh) 一种点到点网络系统及重叠网间节点的互通方法
CN1925462A (zh) 高速缓存系统
CN101068186A (zh) 一种客户端节点网络拓扑构造方法及流媒体分发系统
CN1681250A (zh) 存在信息提供系统及其方法和服务器
CN1823332A (zh) 用户通知的系统和方法
CN1723452A (zh) 传输和下载流数据的方法
CN1967488A (zh) 任务分配方法和任务分配装置
CN1855900A (zh) 网关系统
CN1520123A (zh) 对地址询问的回答方法、程序、装置和地址通知方法、程序、装置
CN1703697A (zh) 用于路由并索引全球可寻址对象和有关的商业模式的系统、方法以及程序
CN1605074A (zh) 从单播到组播的视频会议对话转换
CN1574840A (zh) 对等名称解析电信协议及在此使用的消息格式数据结构
CN101031886A (zh) 网络系统、管理计算机、集群管理方法以及计算机程序
CN1719831A (zh) 基于集群路由器结构的高可用分布式边界网关协议系统
CN1744573A (zh) 业务流的识别方法
CN1795654A (zh) 网络环境中的内容同步系统及其方法
CN1925444A (zh) 在p2p网络中建立点对点连接的方法及在p2p网络中的节点
CN1914862A (zh) 集群系统、集群成员、故障恢复方法及程序
CN1489066A (zh) 通信系统,通信服务器与通信方法
CN101061688A (zh) 基于简单网络管理协议的网络管理设备和方法
CN1878073A (zh) 群组通信系统中实现虚拟讨论组的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20070105

Address after: Beijing City, Haidian District Tayuan autumn Lang Park No. eight building 2 layer

Applicant after: Lanxun Network Science-Technology Co., Ltd., Beijing

Address before: D, block 9, 3rd Street, Beijing, Haidian District, 807

Applicant before: Beijing Livesky Technologies Co., Ltd.

C14 Grant of patent or utility model
GR01 Patent grant