专利名称:一种基于推拉结合的纯分布式数据交换方法
技术领域:
本发明属于网络中的数据交换技术领域,特别涉及一种应用于超大规模直播环境下的纯分布式数据交换方法。
背景技术:
目前流行的网络中数据交换方式可分为三种集中式,分布式,以及介于集中式与分布式之间的半分布式。集中式的数据交换虽然易于管理,但在可扩展性、容错性和数据互动性方面存在先天缺陷。分布式的数据交换在一定程度上弥补了集中式的不足,但对管理提出了更高的要求。半分布式的数据交换是集中式与分布式的一种折中,试图寻求一种集分布式与集中式优势于一体的数据交换方式,但其各项性能不是全部最优。
集中式的数据交换方法完全依赖于中央服务器网络出口带宽,由此决定了网络的负载能力。在集中式的数据交换方式下,对于出口带宽1000兆的中央服务器,需要给每个客户端结点提供1兆带宽流量的情况下,单台中央服务器可同时支持的服务上限是1000人。半分布式的数据交换虽然在一定程度上优于集中式的数据交换方式,但仍部分依赖于中央服务器的网络带宽。在半分布式的数据交换方法下,对于出口带宽1000兆的中央服务器,需要给每个客户端结点提供1兆带宽流量的相同情况下,单台中央服务器可同时支持的服务上限在理论上可达数千人甚至上万人。分布式的数据交换方式,由于受到技术方面的限制,目前在超大规模直播环境下没有能够得到应用。
发明内容
本发明的目的是为克服已有技术的不足之处,提出一种基于推拉结合的纯分布式数据交换方法,是基于只有一台或多台中央服务器参与网络中客户端结点进入与退出网络的登记与注销,中央服务器不承担此外的任何功能,包括但不限于数据交换与服务提供。本发明方法较集中式与半分布式有了本质的改变,拥有良好的可扩展性、容错性和数据互动性等特性,理论上单台中央服务器可同时支持的服务数量没有上限。
本发明提出的一种基于推拉结合的纯分布式数据交换方法,其特征在于,对于单台中央服务器与网络中各个客户端结点通过周期性地循环进行数据交换,在循环过程中的每个时间周期内,完成一组数据包的发送、接收、请求服务;所述每个客户端结点在该结点进入网络时,由中央服务器统一分配结点编号,并告知该结点网络中多个邻居结点的编号、位置等信息;所述每一个客户端结点的数据交换包括以下步骤(1)该结点建立并更新用于数据交换的本地数据包列表,在该本地数据包列表中包括在该结点的本地缓存中已经收到的并可以为邻居结点提供服务的数据包的序列号(该序列号的分配是按数据包内容顺序连续递增的,且唯一的);(2)该结点将其本地数据包列表发送给已知晓的邻居结点;同时,该结点接收来自已知晓的邻居结点的本地数据包列表;(3)该结点将所有收到的本地数据包列表进行分析,并建立、更新每一个数据包可以提供服务的候选邻居结点列表,该候选邻居结点列表包括所有己收到的本地数据包列表中含有的数据包序列号,每一个数据包序列号对应的可提供服务的若干个的候选邻居结点编号;(4)若本地数据包列表中存在缺失的数据包(该结点还没有收到的、造成本地数据包列表中数据包序列号不连续的数据包),该结点在相对应的数据包候选邻居结点列表中选取一个或多个邻居结点,并向该邻居结点发出对于该数据包的数据请求;同时接收上一个数据请求所返回的数据包;若该结点收到来自邻居结点的数据请求,对数据请求作出服务响应,将相对应的数据包发送给数据请求方;本发明称之为基于双向传输的数据请求的过程处于“拉”模式;(5)若该结点自动发送该邻居结点的本地数据包列表中缺失的数据包给该邻居结点,本发明称之为该结点到其某个邻居结点处于“推”模式;若该结点接收来自该邻居结点自动发送来的其本地数据包列表中缺失的数据包,本发明称之为该结点的某个邻居结点到该结点处于“推”模式,即上述两种“推”模式均基于单向传输的数据广播;(6)当处于“拉”模式中的某个邻居结点响应服务请求的各项指标满足给定的要求时,则其邻居结点到该结点的通信视为流畅,则该邻居结点到该结点的数据交换模式由原来的“拉”模式转换为该结点的某个邻居结点到该结点的“推”模式(即由该结点的邻居结点通知该结点开始自动发送该邻居结点本地数据包列表中的所有数据包给该结点);(7)若该结点自动发送其本地数据包列表中所有数据给某个邻居结点期间(即该结点到其邻居结点处于“推”模式),数据各指标(延时、丢包等)满足给定要求时,则该结点到其邻居结点之间的通信视为阻塞,则该结点到其邻居结点的数据交换模式由所述的“推”转为“拉”(即由该结点通知该邻居结点停止自动发送其本地数据包列表中的所有数据包给该结点)。
以上步骤(1)-(7)构成一个时间周期,循环执行。
所述的本地数据包列表的建立采用一个位向量实现,该位向量由一个上界值和长度确定,其长度(通常为一个固定值)不大于该结点的本地缓存可以容纳的数据包数量;该位向量可采用循环队列的逻辑存储结构来实现,在实际应用中,可以采用链表、数组等方式。
所述本地数据包列表的更新方法为当有新的数据包到达该结点时,对本地数据包列表进行更新,该更新的原则是始终保持位向量的上界值等于该结点当前已经收到的数据包中序列号的最大值。
所述的本地数据包列表中的数据包序列号所指向的数据包是本地缓存中已经收到的数据包的全部或部分。
所述候选邻居结点列表的建立采用一个位向量实现,该位向量由一个上界值和长度确定,其长度(通常为一个固定值)不大于该结点的本地缓存可以容纳的数据包数量;该位向量,可采用循环队列的逻辑存储结构来实现,在实际应用中,可以采用链表、数组等方式。
所述候选邻居结点列表的更新方法为当邻居结点有新的本地数据包列表到达该结点时,对候选邻居结点列表进行更新,其中更新的原则是始终保持位向量的上界值等于该邻居结点当前已经收到的本地数据包列表中数据包序列号的最大值,同时更新每一个数据包可以提供服务的候选邻居结点编号;所述候选邻居结点列表是用于在“拉”模式中用户请求数据的可选邻居结点列表。
所述候选邻居结点列表中邻居结点的选取方法,包括但不限于随机选取、轮盘赌和启发式方法。
所述邻居结点到该结点的通信视为流畅的判定方法为汇总与统计该结点与其邻居结点之间的统计数据(包括但不限于响应率、丢包率和延时时间),当统计数据满足给定条件时,该结点与其邻居结点之间的通信视为流畅。
所述该结点到其邻居结点之间的通信视为阻塞的判定方法为汇总与统计该结点与其邻居结点之间的统计数据(包括但不限于响应率、丢包率和延时时间),当统计数据满足给定条件时,该结点与其邻居结点之间的通信视为阻塞。
本发明的特点及技术效果本发明方法提出的纯分布式的数据交换,是基于只有一台或多台中央服务器参与网络中客户端结点进入与退出网络的登记与注销,中央服务器不承担此外的任何功能,包括但不限于数据交换与服务提供。本发明方法较集中式与半分布式有了本质的改变,拥有良好的可扩展性、容错性和数据互动性等特性,理论上单台中央服务器可同时支持的服务数量没有上限。本发明方法结合数据交换二种模式基于单向传输的数据广播的“推”模式和基于双向传输的数据请求的“拉”模式。经过理论论证和实验证明,推拉结合的纯分布式数据交换不但充分发挥了分布式数据交换的优势,而且使网络始终保持在一个相对最优的动态平衡点上,大大增加了网络稳定性。
图1是本发明方法的流程图。
图2是本发明实施例中的某结点的本地数据包列表。
图3是本发明实施例中的某结点的邻居结点列表。
图4是本发明实施例中的某结点的候选邻居结点列表。
具体实施例方式
本发明提出的一种基于推拉结合的纯分布式数据交换方法结合附图1、2、3、4及实施例详细说明如下本发明提出的一种基于推拉结合的纯分布式数据交换方法,对于单台中央服务器与网络中各个客户端结点通过周期性地循环进行数据交换(多台中央服务器与网络中各个客户端结点通过周期性地循环进行数据交换的情况相同),在循环过程中的每个时间周期内,完成一组数据包的发送、接收、请求服务;所述每个客户端结点在该结点进入网络时,由中央服务器统一分配结点编号,并告知该结点网络中多个邻居结点的编号、位置等信息;所述每一个客户端结点的数据交换实施例,如图1所示,包括以下步骤(1)结点Point013568建立并更新该结点的用于数据交换的本地数据包列表(结点Point013568的本地数据包列表如图2所示,有5个数据包序列号,),在该本地数据包列表中包括在该结点的本地缓存中已经收到的并可以为邻居结点提供服务的数据包的序列号(该序列号的分配是按数据包内容顺序连续递增的,且唯一的,可以看出其中存在缺失的数据包);上述的本地数据包列表的建立采用一个位向量实现,该位向量由一个上界值和长度确定,其长度(通常为一个固定值)不大于该结点的本地缓存可以容纳的数据包数量,在本实施例中本地数据包列表的长度为1000(如图2所示,为方便示意,示例中本地数据包列表长度用10代替);该位向量可采用循环队列的逻辑存储结构来实现,本实施例的程序设计中,采用静态数组的方式实现。
本地数据包列表的更新与维护方法为当有新的数据包到达该结点时,对本地数据包列表进行更新,该更新的原则是始终保持位向量的上界值等于该结点当前已经收到的数据包中序列号的最大值。
本地数据包列表中的数据包序列号所指向的数据包是本地缓存中已经收到的序列号相对大的那一半数据包。
(2)该结点将其本地数据包列表发送给已知晓的邻居结点(结点Point013568的邻居结点列表如图3所示,其有5个邻居结点);同时,该结点接收来自己知晓的邻居结点的本地数据包列表;(3)该结点将所有收到的本地数据包列表进行分析,并建立、更新和维护每一个数据包可以提供服务的候选邻居结点列表,该列表包括所有己收到的本地数据包列表中含有的数据包序列号,每一个数据包序列号对应的可提供服务的若干个的候选邻居结点编号(结点Point013568的候选邻居结点列表如图4所示,有20个数据包序列号,以及一个或多个可提供这些数据包服务的候选邻居结点编号);上述候选邻居结点列表的建立可采用一个位向量实现,该位向量由一个上界值和长度确定,其长度(通常为一个固定值)不大于该结点的本地缓存可以容纳的数据包数量,在本实施例中候选邻居结点列表的长度为2000(如图4所示,为方便示意,示例中候选邻居结点列表长度用20代替);该位向量,可采用循环队列的逻辑存储结构来实现,本实施例的程序设计中,采用链表的方式实现。
上述候选邻居结点列表的更新与维护方法为当邻居结点有新的本地数据包列表到达该结点时,对候选邻居结点列表进行更新,其中更新的原则是始终保持位向量的上界值等于该邻居结点当前已经收到的本地数据包列表中数据包序列号的最大值,同时更新每一个数据包可以提供服务的候选邻居结点编号;(4)在本地数据包列表中缺失的数据包(该结点还没有收到的、造成本地数据包列表中数据包序列号不连续的数据包),该结点在相对应的数据包候选邻居结点列表中选取一个或多个邻居结点,并向该邻居结点发出对于该数据包的数据请求;同时接收上一个数据请求所返回的数据包;该结点收到来自邻居结点的数据请求,对数据请求作出服务响应,将相对应的数据包发送给数据请求方;即处于基于双向传输的数据请求的“拉”模式;上述候选邻居结点列表中邻居结点的选取方法,在本实施例中,综合考虑网络性能和系统负载,选择轮盘赌的方法来实现。
(5)该结点自动发送该邻居结点本地数据包列表中缺失的数据包给该邻居结点,即为该结点到其某个邻居结点处于基于单向传输的数据广播的“推”模式;该结点接收来自该邻居结点发送过来的其缓冲池中缺失的数据包,即为该结点的某个邻居结点到该结点处于基于单向传输的数据广播的“推”模式;上述候选邻居结点列表是用于在“拉”模式中用户请求数据的可选邻居结点列表。
(6)当处于“拉”模式中的某个邻居结点响应服务请求的各项指标满足给定的要求时,则其邻居结点到该结点的通信视为流畅,则该邻居结点到该结点的数据交换模式由原来的“拉”模式转换为该结点的某个邻居结点到该结点的“推”模式(即由该结点的邻居结点通知该结点开始自动发送该邻居结点本地数据包列表中的所有数据包给该结点);上述邻居结点到该结点的通信视为流畅的判定方法为汇总与统计该结点与其邻居结点之间的统计数据(在本实施例中,包括响应率、丢包率和延时时间),当统计数据满足给定条件(同时满足响应率80%以上,丢包率1%以下,延时时间小于1秒)时,该结点与其邻居结点之间的通信视为流畅。
(7)若该结点自动发送其本地数据包列表中所有数据给某个邻居结点期间(即该结点到其邻居结点处于“推”模式),数据延时、丢包等指标满足给定要求时,则该结点到其邻居结点之间的通信视为阻塞,则该结点到其邻居结点的数据交换模式由所述的“推”转为“拉”(即由该结点通知该邻居结点停止自动发送其本地数据包列表中的所有数据包给该结点)。
上述该结点到其邻居结点之间的通信视为阻塞的判定方法为汇总与统计该结点与其邻居结点之间的统计数据(在本实施例中,包括响应率、丢包率和延时时间),当统计数据满足给定条件(响应率50%以下,丢包率10%以上,延时时间大于3秒,满足其中任何一项)时,该结点与其邻居结点之间的通信视为阻塞。
以上步骤(1)-(7)构成一个时间周期,循环执行。
权利要求
1.一种基于推拉结合的纯分布式数据交换方法,其特征在于,对于单台中央服务器与网络中各个客户端结点通过周期性地循环进行数据交换,在循环过程中的每个时间周期内,完成一组数据包的发送、接收、请求服务;所述每个客户端结点在该结点进入网络时,由中央服务器统一分配结点编号,并告知该结点网络中多个邻居结点的编号、位置等信息;所述每一个客户端结点的数据交换包括以下步骤(1)该结点建立并更新用于数据交换的本地数据包列表,在该本地数据包列表中包括在该结点的本地缓存中已经收到的并可以为邻居结点提供服务的数据包的序列号;(2)该结点将其本地数据包列表发送给已知晓的邻居结点;同时,该结点接收来自已知晓的邻居结点的本地数据包列表;(3)该结点将所有收到的本地数据包列表进行分析,并建立、更新每一个数据包可以提供服务的候选邻居结点列表,该候选邻居结点列表包括所有已收到的本地数据包列表中含有的数据包序列号,每一个数据包序列号对应的可提供服务的若干个的候选邻居结点编号;(4)若本地数据包列表中存在缺失的数据包,该结点在相对应的数据包候选邻居结点列表中选取一个或多个邻居结点,并向该邻居结点发出对于该数据包的数据请求;同时接收上一个数据请求所返回的数据包;若该结点收到来自邻居结点的数据请求,对数据请求作出服务响应,将相对应的数据包发送给数据请求方;该过程处于基于双向传输的数据请求的“拉”模式;(5)若该结点自动发送该邻居结点的本地数据包列表中缺失的数据包给该邻居结点,则该结点到其某个邻居结点处于基于单向传输的数据广播“推”模式;若该结点接收来自该邻居结点自动发送来的其本地数据包列表中缺失的数据包,则该结点的某个邻居结点到该结点处于基于单向传输的数据广播“推”模式基于单向传输的数据广播;(6)当处于“拉”模式中的某个邻居结点响应服务请求的各项指标满足给定的要求时,则其邻居结点到该结点的通信视为流畅,则该邻居结点到该结点的数据交换模式由原来的“拉”模式转换为该结点的某个邻居结点到该结点的“推”模式;(7)若该结点到其邻居结点处于“推”模式,数据各指标满足给定要求时,则该结点到其邻居结点之间的通信视为阻塞,则该结点到其邻居结点的数据交换模式由所述的“推”转为“拉”;以上步骤(1)-(7)构成一个时间周期,循环执行。
2.如权利要求1所述的基于推拉结合的纯分布式数据交换方法,其特征在于,所述的本地数据包列表的建立采用一个位向量实现,该位向量由一个上界值和长度确定,其长度不大于该结点的本地缓存可以容纳的数据包数量;该位向量采用循环队列的逻辑存储结构来实现。
3.如权利要求1所述的基于推拉结合的纯分布式数据交换方法,其特征在于,所述本地数据包列表的更新方法为当有新的数据包到达该结点时,对本地数据包列表进行更新,该更新的原则是始终保持位向量的上界值等于该结点当前已经收到的数据包中序列号的最大值。
4.如权利要求1所述的基于推拉结合的纯分布式数据交换方法,所述候选邻居结点列表的建立采用一个位向量实现,该位向量由一个上界值和长度确定,其长度(不大于该结点的本地缓存可以容纳的数据包数量;该位向量采用循环队列的逻辑存储结构来实现。
5.如权利要求1所述的基于推拉结合的纯分布式数据交换方法,其特征在于,所述候选邻居结点列表的更新方法为当邻居结点有新的本地数据包列表到达该结点时,对候选邻居结点列表进行更新,其中更新的原则是始终保持位向量的上界值等于该邻居结点当前已经收到的本地数据包列表中数据包序列号的最大值,同时更新每一个数据包可以提供服务的候选邻居结点编号;
6.如权利要求1所述的基于推拉结合的纯分布式数据交换方法,其特征在于,所述候选邻居结点列表中邻居结点的选取方法采用随机选取、轮盘赌和启发式之一种方法。
7.如权利要求1所述的基于推拉结合的纯分布式数据交换方法,其特征在于,所述邻居结点到该结点的通信视为流畅的判定方法为汇总与统计该结点与其邻居结点之间的统计数据,当统计数据满足给定条件时,该结点与其邻居结点之间的通信视为流畅。
8.如权利要求1所述的基于推拉结合的纯分布式数据交换方法,其特征在于,所述该结点到其邻居结点之间的通信视为阻塞的判定方法为汇总与统计该结点与其邻居结点之间的统计数据,当统计数据满足给定条件时,该结点与其邻居结点之间的通信视为阻塞。
全文摘要
本发明涉及一种基于推拉结合的纯分布式数据交换方法,属于网络中的数据交换技术领域,对于单台中央服务器与网络中各个客户端结点通过周期性地循环进行数据交换,完成一组数据包的发送、接收、请求服务;包括该结点建立并更新用于数据交换的本地数据包列表;将其本地数据包列表发送给已知晓的邻居结点;并建立、更新每一个数据包可以提供服务的候选邻居结点列表;当处于“拉”模式中时的通信流畅,则该邻居结点到该结点由原来的“拉”模式转换为“推”模式;若该结点到其邻居结点处于“推”模式的通信阻塞,则该结点到其邻居结点由所述的“推”转为“拉”。本发明方法拥有良好的可扩展性、容错性和数据互动性等特性。
文档编号H04L12/56GK1665223SQ20051005150
公开日2005年9月7日 申请日期2005年3月4日 优先权日2005年3月4日
发明者赵黎, 张萌, 毛子青, 罗建光, 吴南山, 杨士强 申请人:清华大学