CN109510868A - 一种建立p2p网络的方法、装置、终端设备及存储介质 - Google Patents
一种建立p2p网络的方法、装置、终端设备及存储介质 Download PDFInfo
- Publication number
- CN109510868A CN109510868A CN201811354507.1A CN201811354507A CN109510868A CN 109510868 A CN109510868 A CN 109510868A CN 201811354507 A CN201811354507 A CN 201811354507A CN 109510868 A CN109510868 A CN 109510868A
- Authority
- CN
- China
- Prior art keywords
- node
- network
- data packet
- server
- nodes
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
Abstract
本申请公开了一种建立P2P网络的方法、装置、终端设备及存储介质,所述方法包括步骤:检测到加入一P2P网络的指令后,向所述P2P网络中至少一个节点发送连接请求,其中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值;与响应所述请求的节点建立连接,以更新所述P2P网络。旨在优化P2P网络的建立。
Description
技术领域
本申请涉及互联网领域,尤其涉及P2P网络领域。
背景技术
Peer-to-peer(P2P)是一种分布式网络,P2P网络的参与者共享他们所拥有的一部分硬件资源数据(处理能力、存储能力、网络连接能力、打印机等),这些共享资源数据需要由网络提供服务和内容,能被其它对等节点(peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源数据(服务和内容)提供者,又是资源数据获取者。
但是现有的P2P网络,易出现饱和现象,而使得新入网的节点无法从其他节点获得资源数据。例如,参照图1a,节点1、2及3两两互为资源数据提供者及资源数据获取者,如每个节点最多作为两个节点的资源数据提供者,那么在有新的节点进入时,节点1、2及3无法给新进入的节点提供资源数据。
发明内容
基于此,本申请提供建立P2P网络的方法、装置、终端设备及存储介质。
在本申请的第一方面,提供一种建立P2P网络的方法,包括步骤:
检测到加入一P2P网络的指令后,向所述P2P网络中至少一个节点发送连接请求,其中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值;
与响应所述请求的节点建立连接,以更新所述P2P网络。
在一些例子中,所述向所述P2P网络中至少一个节点发送连接请求,包括步骤:
从服务器获取节点列表,所述节点列表包括符合预设条件的节点的地址信息;
根据所述节点列表中的节点的地址信息,向所述节点列表中至少一个节点请求连接。
在一些例子中,所述预设条件根据本节点所在的终端设备的位置信息确定。
在一些例子中,所述与响应所述请求的节点建立连接之后,还包括:
向至少一个与本节点建立连接的节点请求资源数据,所述资源数据被封装成数据包,所述数据包由服务器将获取的共享资源数据切割而成,并由服务器按照自定义的格式封装,所述自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性,所述数据包由所述P2P网络中的节点直接或间接从服务器获取。
在一些例子中,本节点与已连接的节点间基于不可靠协议传输数据包;
检测到加入一P2P网络的指令后,还包括步骤:
与服务器建立连接,在检测到存在数据包丢失后,向所述服务器请求传输所述丢失的数据包,其中,本节点与所述服务器间基于可靠协议传输数据包。
在一些例子中,所述方法还包括步骤:
记录与本节点已连接的节点数量;
当与本节点已连接的节点数量少于预设值时,再次向所述P2P网络中的节点发送连接请求。
在本申请的第二方面,提供一种建立P2P网络的装置,包括:
处理模块,用于检测到加入一P2P网络的指令后,向所述P2P网络中至少一个节点发送连接请求,其中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值;
连接模块,用于与响应所述请求的节点建立连接,以更新所述P2P网络。
在一些例子中,所述处理模块用于与响应所述请求的节点建立连接之后,还用于:
向至少一个与本节点建立连接的节点请求资源数据,所述资源数据被封装成数据包,所述数据包由服务器将获取的共享资源数据切割而成,并由服务器按照自定义的格式封装,所述自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性,所述数据包由所述P2P网络中的节点直接或间接从服务器获取。
在本申请的第三方面,提供一种终端设备,包括:
处理器;以及
存储器,所述存储器被配置成存储计算机程序,所述计算机程序被配置成被所述处理器执行如前述第一方面任意一项方法所述的操作。
在本申请的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行如前述第一方面任意一项方法所述的操作。
不同于传统的P2P网络的组建方法,本申请实施例提出的P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值。也就是说,本申请实施例中使每个节点的允许被主动连接的节点数(第一设定阈值)大于允许主动连接其他节点数(第二设定阈值),使得按照本申请实施例的方法,无论整个P2P网络如何组建,一定存在被其他节点主动连接的机会,以致通过本申请实施例组建的P2P网络不可能发生饱和,最终使得新加入的节点能够更容易接入P2P网络中。
附图说明
图1a为现有的P2P网络示意图;
图1b本申请实施例示例性示出的一种P2P场景示意图;
图2为本申请实施例示例性示出的一建立P2P网络的方法的部分流程;
图3为本申请实施例示例性示出的一P2P网络示意图;
图4为本申请实施例示例性示出的步骤S210的具体流程图;
图5a为本申请实施例示例性示出的步骤S220的具体流程图;
图5b为本申请实施例示例性示出的一P2P网络示意图;
图6为本申请实施例示例性示出的直播场景示意图;
图7为本申请实施例示例性示出的一建立P2P网络的方法的流程图;
图8a-图8c为本申请实施例中三种不同的服务器架构下搭建的网络;
图9为本申请实施例示例性示出的一P2P网络示意图;
图10为本申请实施例示例性示出的建立P2P网络的装置的示意图;
图11为本申请实施例示例性示出的一终端设备的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1b是本申请实施例提出的一种网络架构,该网络架构中包括服务器设备100和客户端设备(110、120、130),客户端设备可以借助服务器设备相互搭建成P2P网络。由于不同的应用环境下,用户对网络设备的功能需求可能不同,因此,每个应用场景中服务器和客户端设备的数量以及功能可以不同。
为了解决现有的P2P网络,易出现饱和现象,使得新入网的节点无法从其他节点获得资源数据的问题,本申请实施例提供一种建立P2P网络的方法、装置、终端设备及存储介质。
参照图2,为本申请实施例提供一种建立P2P网络的方法的流程图,所述方法运用于客户端,所述客户端可以被运行或被安装在终端设备上,该终端设备可以具有连网功能,例如移动终端(例如智能手机、智能平板及笔记本电脑等)及固定终端(台式电脑、服务器、智能电视及车载终端等)等。本申请不限制终端设备的类型。所述方法包括步骤:
S210:检测到加入一P2P网络的指令后,向所述P2P网络中至少一个节点发送连接请求,其中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值;
S220:与响应所述请求的节点建立连接,以更新所述P2P网络。
本步骤S210中,所述加入一P2P网络的指令,可以是:客户端检测到自身与加入P2P网络相关的控件被触发,例如点播场景中,用户点击了观看某部电影的控件,即触发加入获取该电影资源数据的P2P网络的指令;例如直播场景中,用户点击进入某一直播间的控件后,即触发进入该直播间对应的P2P网络的指令。
参照图3,为本申请实施例示出的P2P网络示意图,图3所述的P2P网络中,设定任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值,例如第一设定阈值为3,第二设定阈值为2,节点1主动与2个节点建立连接,被3个节点主动连接,那么节点1被主动连接的其他节点数为3,等于第一设定阈值,节点1主动连接的其他节点数为2,等于第二设定阈值,此时,节点1无法主动连接其他节点,也无法被其他节点成功地主动连接;节点2主动连接1个节点,被2个节点主动连接,那么节点2被主动连接的其他节点数为2,小于第一设定阈值,节点2主动连接的其他节点数为1,小于第二设定阈值,此时,节点2还可以主动连接为2-1=1个节点,节点2还允许被3-2=1个其他节点主动连接。
在一些例子中,步骤S210具体的实现步骤可以包括图4所述的流程,参照图4,步骤S210具体可以包括:
S211:检测到加入一P2P网络的指令后,向服务器注册;
S212:注册成功后,从服务器获取节点列表,所述节点列表包括符合预设条件的节点的地址信息;
在一些例子中,所述预设条件根据本节点所在的终端设备的位置信息确定。
在一些例子中,服务器根据所述请求注册的节点所在终端设备的位置信息,从P2P节点中挑选一定数量距离所述位置较近的节点的节点,例如四十到五十个节点,并将这些节点的地址信息作为节点列表反馈给发出请求的节点。
在一些例子中,所述节点列表还可以用于表征当前P2P网络中各节点的连接情况;服务器可以根据P2P网络的实际情况周期性更新该节点列表。当然,除了上述周期性更新的方式,服务器还可以用其他的方式维护节点列表,本申请不限制服务器维护节点列表的方式。本节点可以根据自身的需求从节点列表中挑选符合条件的节点,发送连接请求。
S213:向所述节点列表中至少一个节点请求连接。
一些例子中,本节点(节点1)收到节点列表后,可以根据节点列表上的地址信息,向节点列表上的全部或部分节点发送连接请求,收到请求的节点判断自身是否还允许被其他节点主动连接,若该节点被主动连接的其他节点数小于第一设定阈值,给节点1返回响应,则连接成功,若等于第一设定阈值,不返回响应,节点1在规定的时间内未接收到反馈,则认为连接失败。
一些例子中,本步骤S220可以是:与响应所述请求的节点建立连接后,从已建立连接的节点中选择至少一个节点获取资源数据。
当然在一些例子中,还可以通过订阅的方式从已建立连接的节点中选择至少一个节点获取资源数据,具体的,新入网的节点(例如命名为节点1),通过上述方法与P2P网络中的其他节点建立连接后,可以向至少一个其他节点发送订阅请求,接收到订阅请求的节点接收到节点1的订阅请求并同意订阅后,主动将所述资源数据发送给节点1。具体的,在一个例子中,参照图5a,步骤S220“与响应所述请求的节点建立连接”之后,还包括步骤:
S221:与已建立连接的节点交换信令信息,所述信令信息包括:两个节点之间的网络状况、丢包率、网速及上行能力等信息,以使连接成功的两个节点互相获得对方的网络状况;在网络状况不佳时,更换连接对象。
为了保证建立的P2P网络获取资源数据的稳定性,在一些例子中,本申请实施例,可以向丢包率小于第一设定值、上行能力超过第二设定值和/或各节点的宽带能力超过第三设定值的已连接节点发送订阅请求。
在一些例子中,新入网的节点与其他节点建立连接后,可以利用两个节点之间的网络状况、丢包率、网速及上行能力等信息给P2P网络中的各节点进行评分,新入网的节点根据该评分高低,选择订阅的节点。
S222:根据所述信令信息,向至少一个已建立连接的节点发送订阅请求;
S223:订阅成功后,对端节点在接收到资源数据后,主动向订阅自身的节点发送资源数据。
至此,不同于传统的P2P网络的组建方法,本申请实施例提出的P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值。也就是说,本申请实施例中使每个节点的允许被主动连接的节点数(第一设定阈值)大于允许主动连接其他节点数(第二设定阈值),使得按照本申请实施例的方法,无论整个P2P网络如何组建,一定存在被其他节点主动连接的机会,以致通过本申请实施例组建的P2P网络不可能发生饱和,最终使得新加入的节点能够更容易接入P2P网络中。例如,参照图5b,以P2P网络中有3个节点为例,分别是节点1、节点2和节点3,该P2P网络中,第一设定阈值是2,第二设定阈值为1,即每个节点允许主动连接的其他节点数为1,允许被主动连接的其他节点数为2。若节点1主动连接节点2,那么节点1达到第二设定阈值,节点1无法主动连接其他节点,但是可以被1个节点主动连接;此时,节点3可以主动连接节点1或者节点2,由于节点3主动连接节点1或者节点2的情况相似,为了不重复描述,图5b中以节点3主动连接节点1为例作为示意,此时,节点1和3均达到第二设定阈值,均无法主动连接其他节点,但均可以被1个节点主动连接,此时的P2P网络中,节点2可以主动连接1个其他节点,由于节点1和2已经建立连接,所以,节点2向节点3主动发送连接请求,到此时节点1-3完成P2P网络的建立,该P2P网络中,没有任何节点可以主动向其他节点发送连接请求,而3个节点均可被其他节点主动连接。当节点4进入该P2P网络时,由于该P2P网络中的节点1-3均无法主动连接其他节点,所以,由新入该P2P网络的节点4向节点1-3中任一节点发送连接请求(例如图5b所示的节点4主动连接节点2),以建立新的P2P网络。从图5b的例子可以看出,通过本申请实施例的方法,并且无论节点1-3间的连接关系如何,整个P2P网络中存在3个允许被其他节点主动连接的机会,网络不会发生饱和;并且节点4加入后的新的P2P网络中,节点1和节点3均可以允许被1个节点主动连接,节点4则被允许被2个节点主动连接,新的P2P网络也存在4个允许被其他节点主动连接的机会,也不会出现饱和。
为了进一步提高P2P网络中数据传输的效率,在一些例子中,不同的数据包根据第一标识被分成多个组,被订阅的不同节点各自推送的指定数据包属于不同分组。
具体的,一些例子中,所述第一标识可以是预定位数的编号,可以用各数据包的编号对分组数进行求余,根据求余的余数确定各数据包的分组。例如:一直播流媒体数据被切割成了编号为1-20的数据包,分组数为5,用各数据包的编号对5进行求余,例如编号为1,1/5的余数是1,余数为1的都属于第一组,所以编号为1的数据包属于第一组,以此类推,可以确定各数据包的分组情况,每组分组的数据包组成一路子流,例如余数为0的数据包属于0号子流,余数为1的数据包属于1号子流,以此类推。在一些例子中,所述分组数可以根据直播视频流的码率或分辨率或承担分发数据包任务的服务器的数量确定,具体求余的策略不做限定。将数据包分组后,服务器可以基于分组将数据包分发给P2P网络中的节点,例如,可以由多个服务器分别将不同组的数据包发送给P2P网络中从服务器获取资源数据的节点,以提高数据传输效率,及增加节点播放流媒体数据的起播速度。当然,在一些例子中,将数据包分组后,每个节点可以从不同的节点获取不同分组的数据,可以进一步提高P2P网络中数据传输效率。
实际应用中,传统的P2P技术无法适应具有实时性要求的直播场景。参照图6,为申请实施例示出的现有的直播场景示意图,第一观众客户端及第二观众客户端及主播客户端分别被安装在终端设备610、620及630上,主播客户端可以调用摄像头录制视频、拍摄照片或/和通过屏幕捕捉等其他方式制作直播视频流,然后通过网络发送给服务器600。服务器600可以用于提供互联网直播的后台服务,例如保存各主播客户端与观众客户端的对应关系。当第一观众客户端及第二观众客户端与主播客户端在同一直播间内,主播客户端可以将想要展示的直播视频流分享给在同一直播间的第一观众客户端及第二观众客户端,以供第一观众客户端及第二观众客户端的用户观看。所述直播视频流包括音频数据及若干帧直播图像。为了解决上述传统的P2P技术无法适应具有实时性要求的直播场景的问题,在一些例子中,参照图7,为本申请实施例提出的一种基于P2P网络的直播方法,所述方法包括步骤:
S710:主播客户端将采集的直播视频流发送给服务器;
S720:服务器将接收到的直播视频流切割成若干数据包,并将每个数据包按照自定义的格式封装,所述自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性;
S730:与所述主播客户端在同一直播间的观众客户端建立P2P网络后,服务器将所述封装的数据包分发给P2P网络中订阅服务器的节点;
S740:观众客户端进入所述直播间,检测到加入所述P2P网络的指令,向所述P2P网络中至少一个节点发送连接请求;其中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值;
S750:所述观众客户端与响应所述请求的节点建立连接,以更新所述P2P网络。
步骤S750所述观众客户端与响应所述请求的节点建立连接之后,所述观众客户端向其中一已连接的节点订阅数据;所述被订阅的节点在收到数据包后,将收到的数据包发送给所述观众客户端。
图7所述的方法不同于传统的P2P模式,首先将直播视频流切割成数据包而不是文件块,文件块的大小可能在上百KB,而相对于文件块来说,数据包的可切割粒度更小,可以作为更小的传输单元在网络中传输,例如在考虑切割后的数据包的大小时,可以结合互联网网络层的传输特性来设计,使得数据包的大小与P2P网络中各连接通道的传输带宽匹配。举例来说,各对等节点之间建立的通道可以是UDP通道,每个数据包的大小可以是1KB左右,略小于MTU(互联网网络层最大传输单元),这样,每个数据包可以由1个IP包传输,不需要出现基于IP包拆包,因此比切割文件的方式效率更高,从而使得具有更广泛的适用场景。
本申请实施例提出的服务器可以由多种实体承担,这取决于设计者对不同网络设备的角色划分。例如,图8a、图8b、图8c是三种不同场景下的网络架构,可以看出,不同业务模式下,由于业务或设备管理的需求不同,可以由不同类型的服务器设备承担上述服务器的功能。图8a中,第一服务器承担收集共享资源数据的角色,第二服务器承担切割数据包的角色,第三服务器作为向对等节点分发数据包的角色。图8b中,第一服务器集成了收集共享资源数据和切割数据包的功能,第二服务器作为分发数据包的服务器。图8c中,服务器将收集共享资源数据、切割数据包、分发数据包的功能集于一体。需要指出,除了图8a、图8b及图8c所列举的示例以外,并不排除有其他形式的网络架构或服务器功能。
需要说明的是,在数据包封装阶段,为了使切割后的数据包能够被对客户端接收后有序组装以及客户端之间形成对等节点后能够交互数据包,服务器可以为每个数据包编号,作为描述每个数据包唯一标识的字段,所述唯一标识为第一标识,某些例子中,可以自定义数据包的格式来实现此目的,自定义的格式中可以规定特定字段作为此唯一标识。在一些例子中,本申请提出的第一标识可以是同一共享资源数据中用于区分其他数据包的唯一标识。当然,并不排除其他方式来实现此目的。
在实际应用中,节点在播放直播视频流时可能会出现短暂的延时或卡顿问题,申请人发现由于直播与传统的P2P技术应用的场景具有很大差别,传统的P2P技术主要应用在共享视频或音频资料的场景(例如视频点播等网站的视频指定数据包下载),相比与上述场景,直播存在每时每刻均可能有大量的用户进出直播间的特点,使得基于直播的P2P网络时刻动态变化,并且变化频率极快,但这会造成播放直播视频流时出现短暂的延时或卡顿问题。
为了解决上述直播中的问题,在一些例子中,所述方法还包括步骤:记录与本节点已连接的节点数量。当与本节点已连接的节点数量少于预设值时,再次向所述P2P网络中的节点发送连接请求,可以是再次向服务器请求节点列表,向节点列表中的节点发送连接请求。例如:本节点与3个节点已连接,分别为节点1、节点2及节点3,但是由于网络抖动或节点1、节点2及节点3其中一节点退出直播间,那么,与本节点保持连接状态的节点数量可能少于预设值,当少于预设值时,再次向所述P2P网络中的节点发送连接请求,以保证与本节点建立连接的节点数量少于预设值,使得本节点获取直播视频流的节点退出直播间,或是网络故障时,本端可以快速从其他成功连接的节点获取直播视频流,以保证本端用户观看时延时和卡顿较少,极好地适应直播场景。
本申请还可以通过给节点分类的方式实现上述实施例的效果。具体的一个例子中,P2P网络中的每个节点可以维护或记录不同类型的节点,节点的类型包括:候选节点、活跃节点、传输节点、淘汰节点或/和僵死节点。其中,
候选节点,指的从服务器获取的节点列表中的节点,或者是本节点发送连接请求的节点,但尚未建立连接。
活跃节点,指的是从候选节点中与本节点已建立连接并保持连接状态的节点。活跃节点与本节点之间可以周期性的交互信令信息,例如丢包率、延时、网速和/或上行带宽等。
传输节点,指的是所述活跃节点中可以用于获取资源数据的节点。
淘汰节点,指的是活跃节点中质量较差,而被本节点主动放弃的节点。
僵死节点,可以分为两种,其中一种是候选节点中请求连接,但未连接成功的节点;另一种是传输节点中,无法传输资源数据的节点,此种情况可能是死机或断网造成的。
当然,若数据包根据编号被分组,在一些例子中,P2P网络中传输节点可以包括订阅节点,例如,节点1从节点2获取1号子流,节点2是节点1对应与1号子流的订阅节点,节点1从节点3获取0号子流,节点3是节点1对应与0号子流的订阅节点。
每个节点均可以维护一个队列,用于记录活跃节点,当存在淘汰节点和僵死节点时,将活跃节点中的淘汰节点和僵死节点剔除,并且当该节点发现活跃节点的数量少于预设值时,向服务器再次请求节点列表,向节点列表中的候选节点发送连接请求,以使每个节点对应的活跃节点的数量不少于预设值。可以理解,上述每类节点均可以用一队列进行维护。
进一步,P2P网络组建后,如沿用传统的P2P技术的数据传输方式将无法适用对延时容忍率极低的直播场景,传统的P2P技术中,P2P网络中各对等节点之间拉取数据会存在延时问题,并且需要对等节点之间进行多次请求和响应交互,因此,沿用传统的P2P技术的数据传输方式无法适用在对延时容忍率极低的直播场景。为了解决上述技术问题,在一些例子中,观众客户端进入直播间后,可以向所述直播间对应的P2P网络中的至少两个符合预设条件的节点发送连接请求;与响应所述连接请求的至少两个节点建立连接后,向已连接的节点分别协商订阅指定数据包;在协商成功后,被订阅的节点在通过其他节点从服务器获取到数据包时,将所述直播客户端订阅的指定数据包推送给所述直播客户端,其中,所述数据包由服务器将所述直播间对应的流媒体数据切割成得到,所述服务器将数据包按照自定义的格式封装,所述自定义的格式中包括第一标识,所述第一标识用于描述每个封装后的数据包的唯一性;所述直播客户端根据获取的数据包的第一标识拼装得到流媒体数据。本申请实施例所述的“指定数据包”可以是某个分组对应的数据包,即可以是每个节点从不同的节点获取不同分组的数据包,以进一步提高P2P网络中数据传输效率。
一个具体的例子中,直播视频流分成若干组,例如2组,这两个组分别是0号子流、1号子流,用每个数据包的编号除以2,根据余数确定分组,即编号为偶数的数据包属于0号子流,编号为奇数的数据包属于1号子流,参照图9,如左图,节点1从服务器订阅0号子流,节点2和节点3从节点1订阅0号子流,节点4和5从节点2订阅0号子流,节点6从节点3订阅0号子流,首先服务器将0号子流推送给节点1,节点1获取0号子流后,主动将0号子流推送给节点2和节点3,然后节点2获取0号子流后,主动将0号子流推送给节点4和节点5;如图9右图,对于1号子流,订阅关系为:节点6从服务器订阅,节点4和节点5从节点6订阅,节点1、2及3从节点5订阅,服务器将1号子流推送给节点6,节点6获取1号子流后,将1号子流主动推送给从节点6订阅1号子流的节点4和节点5,节点5接收到1号子流后,主动将1号子流推送给节点1、2及3。
至此,本申请实施例首先确定新加入P2P网络的直播客户端的订阅关系,并且从至少两个不同的节点订阅不同的指定数据包,被订阅在通过其他节点从服务器获取到数据包时,将所述直播客户端订阅的指定数据包发送给所述直播客户端,以避免采用现有P2P技术中各节点通过拉流的方式,带来的信令信息交互过多产生的延时以及对网络带宽的占用,保证直播客户端播放流媒体数据的实时性,并且由于各直播客户端可以从不同的节点获取不同的指定数据包,并根据获取的数据包的第一标识拼装得到流媒体数据,可以进一步提高各直播客户端获取流媒体数据的效率,尤其适用于直播场景。
在一些例子中,本申请实施例所述的P2P网络中,节点与及节点之间可以通过不可靠协议传输数据包,例如UDP协议,以进一步提高数据传输效率。当然为了在丢包时,能快速以及及时重传数据包,一些例子中,节点与服务器之间可以通过可靠协议传输数据包,例如基于TCP协议的HTTP协议,并且P2P网络中的各节点与服务器保持连接状态,若出现丢包,节点可以向服务器请求重传丢失的数据包。
请参见图10,一种建立P2P网络的装置1000,其特征在于,包括:
处理模块1010,用于检测到加入一P2P网络的指令后,向所述P2P网络中至少一个节点发送连接请求,其中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值;
连接模块1020,用于与响应所述请求的节点建立连接,以更新所述P2P网络。
在一些例子中,所述处理模块1010用于与响应所述请求的节点建立连接之后,还用于:
向至少一个与本节点建立连接的节点请求资源数据,所述资源数据被封装成数据包,所述数据包由服务器将获取的共享资源数据切割而成,并由服务器按照自定义的格式封装,所述自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性,所述数据包由所述P2P网络中的节点直接或间接从服务器获取。
图10中建立P2P网络的装置的实施例可以应用在终端设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在终端设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图11所示,为本申请建立P2P网络的装置所在终端设备的一种硬件结构图,除了图11所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的客户端设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。处理器被用于执行:
检测到加入一P2P网络的指令后,向所述P2P网络中至少一个节点发送连接请求,其中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值;
与响应所述请求的节点建立连接,以更新所述P2P网络。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
在本申请实施例中,计算机可读存储介质可以是多种形式,比如,在不同的例子中,所述机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。特殊的,所述的计算机可读介质还可以是纸张或者其他合适的能够打印程序的介质。使用这些介质,这些程序可以被通过电学的方式获取到(例如,光学扫描)、可以被以合适的方式编译、解释和处理,然后可以被存储到计算机介质中。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种建立P2P网络的方法,其特征在于,包括步骤:
检测到加入一P2P网络的指令后,向所述P2P网络中至少一个节点发送连接请求,其中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值;
与响应所述请求的节点建立连接,以更新所述P2P网络。
2.根据权利要求1所述的方法,其特征在于,所述向所述P2P网络中至少一个节点发送连接请求,包括步骤:
从服务器获取节点列表,所述节点列表包括符合预设条件的节点的地址信息;
根据所述节点列表中的节点的地址信息,向所述节点列表中至少一个节点请求连接。
3.根据权利要求2所述的方法,其特征在于,所述预设条件根据本节点所在的终端设备的位置信息确定。
4.根据权利要求1所述的方法,其特征在于,所述与响应所述请求的节点建立连接之后,还包括:
向至少一个与本节点建立连接的节点请求资源数据,所述资源数据被封装成数据包,所述数据包由服务器将获取的共享资源数据切割而成,并由服务器按照自定义的格式封装,所述自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性,所述数据包由所述P2P网络中的节点直接或间接从服务器获取。
5.根据权利要求4所述的方法,其特征在于,本节点与已连接的节点间基于不可靠协议传输数据包;
检测到加入一P2P网络的指令后,还包括步骤:
与服务器建立连接,在检测到存在数据包丢失后,向所述服务器请求传输所述丢失的数据包,其中,本节点与所述服务器间基于可靠协议传输数据包。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括步骤:
记录与本节点已连接的节点数量;
当与本节点已连接的节点数量少于预设值时,再次向所述P2P网络中的节点发送连接请求。
7.一种建立P2P网络的装置,其特征在于,包括:
处理模块,用于检测到加入一P2P网络的指令后,向所述P2P网络中至少一个节点发送连接请求,其中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值;
连接模块,用于与响应所述请求的节点建立连接,以更新所述P2P网络。
8.根据权利要求7所述的装置,其特征在于,所述处理模块用于与响应所述请求的节点建立连接之后,还用于:
向至少一个与本节点建立连接的节点请求资源数据,所述资源数据被封装成数据包,所述数据包由服务器将获取的共享资源数据切割而成,并由服务器按照自定义的格式封装,所述自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性,所述数据包由所述P2P网络中的节点直接或间接从服务器获取。
9.一种终端设备,其特征在于,包括:
处理器;以及
存储器,所述存储器被配置成存储计算机程序,所述计算机程序被配置成被所述处理器执行如权利要求1至6任意一项方法所述的操作。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行如权利要求1至6任意一项方法所述的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811354507.1A CN109510868B (zh) | 2018-11-14 | 2018-11-14 | 一种建立p2p网络的方法、装置、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811354507.1A CN109510868B (zh) | 2018-11-14 | 2018-11-14 | 一种建立p2p网络的方法、装置、终端设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109510868A true CN109510868A (zh) | 2019-03-22 |
CN109510868B CN109510868B (zh) | 2021-01-22 |
Family
ID=65748492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811354507.1A Active CN109510868B (zh) | 2018-11-14 | 2018-11-14 | 一种建立p2p网络的方法、装置、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109510868B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109889543A (zh) * | 2019-03-26 | 2019-06-14 | 广州华多网络科技有限公司 | 视频传输的方法、根节点、子节点、p2p服务器和系统 |
CN111988365A (zh) * | 2020-07-27 | 2020-11-24 | 江苏量动信息科技有限公司 | 高速公路etc门架数据转发方法及装置 |
CN114827649A (zh) * | 2022-04-22 | 2022-07-29 | 上海哔哩哔哩科技有限公司 | 构建直播对等网路的方法及装置、电子设备和存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060212592A1 (en) * | 2005-03-15 | 2006-09-21 | Microsoft Corporation | APIS to build peer to peer messaging applications |
CN101087239A (zh) * | 2007-07-17 | 2007-12-12 | 北京搜狗科技发展有限公司 | 一种对等网络中充分利用带宽资源的数据传输方法及装置 |
CN101448021A (zh) * | 2008-12-29 | 2009-06-03 | 深圳市迅雷网络技术有限公司 | 一种实现点对点网络连通的方法及装置 |
CN101720136A (zh) * | 2009-11-27 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 客户端邻居节点数目控制方法和装置、缓存系统 |
CN101808079A (zh) * | 2009-02-12 | 2010-08-18 | 华为技术有限公司 | 一种确定直接邻居节点的方法、服务器和客户端 |
CN101945129A (zh) * | 2010-09-10 | 2011-01-12 | 北京易视腾科技有限公司 | P2p流媒体直播的低延时传输方法及系统 |
CN102244670A (zh) * | 2010-05-13 | 2011-11-16 | 北京大学 | 一种用于p2p文件传输的空闲节点协助方法 |
CN103312824A (zh) * | 2013-07-10 | 2013-09-18 | 亿览在线网络技术(北京)有限公司 | 一种p2p网络智能调速方法、装置和系统 |
US20170006088A1 (en) * | 2015-07-03 | 2017-01-05 | Fujitsu Limited | Connection method and communication device |
-
2018
- 2018-11-14 CN CN201811354507.1A patent/CN109510868B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060212592A1 (en) * | 2005-03-15 | 2006-09-21 | Microsoft Corporation | APIS to build peer to peer messaging applications |
CN101087239A (zh) * | 2007-07-17 | 2007-12-12 | 北京搜狗科技发展有限公司 | 一种对等网络中充分利用带宽资源的数据传输方法及装置 |
CN101448021A (zh) * | 2008-12-29 | 2009-06-03 | 深圳市迅雷网络技术有限公司 | 一种实现点对点网络连通的方法及装置 |
CN101808079A (zh) * | 2009-02-12 | 2010-08-18 | 华为技术有限公司 | 一种确定直接邻居节点的方法、服务器和客户端 |
CN101720136A (zh) * | 2009-11-27 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 客户端邻居节点数目控制方法和装置、缓存系统 |
CN102244670A (zh) * | 2010-05-13 | 2011-11-16 | 北京大学 | 一种用于p2p文件传输的空闲节点协助方法 |
CN101945129A (zh) * | 2010-09-10 | 2011-01-12 | 北京易视腾科技有限公司 | P2p流媒体直播的低延时传输方法及系统 |
CN103312824A (zh) * | 2013-07-10 | 2013-09-18 | 亿览在线网络技术(北京)有限公司 | 一种p2p网络智能调速方法、装置和系统 |
US20170006088A1 (en) * | 2015-07-03 | 2017-01-05 | Fujitsu Limited | Connection method and communication device |
Non-Patent Citations (1)
Title |
---|
GUANGQING DENG: "Moderate Prefetching Strategy Based on Video", 《4TH IET INTERNATIONAL CONFERENCE ON WIRELESS, MOBILE & MULTIMEDIA NETWORKS (ICWMMN 2011)》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109889543A (zh) * | 2019-03-26 | 2019-06-14 | 广州华多网络科技有限公司 | 视频传输的方法、根节点、子节点、p2p服务器和系统 |
CN111988365A (zh) * | 2020-07-27 | 2020-11-24 | 江苏量动信息科技有限公司 | 高速公路etc门架数据转发方法及装置 |
CN114827649A (zh) * | 2022-04-22 | 2022-07-29 | 上海哔哩哔哩科技有限公司 | 构建直播对等网路的方法及装置、电子设备和存储介质 |
CN114827649B (zh) * | 2022-04-22 | 2024-02-23 | 上海哔哩哔哩科技有限公司 | 构建直播对等网络的方法及装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109510868B (zh) | 2021-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109560901B (zh) | 一种数据重传方法、装置、终端设备及存储介质 | |
CN109474684B (zh) | 一种获取直播视频流的方法、装置、终端设备及存储介质 | |
US8949436B2 (en) | System and method for controlling peer-to-peer connections | |
CN109151497B (zh) | 一种连麦直播方法、装置、电子设备及存储介质 | |
WO2020192152A1 (zh) | 视频传输的方法、根节点、子节点、p2p服务器和系统 | |
CN109561137B (zh) | 建立p2p网络的方法、装置、终端设备及介质 | |
CN110191315B (zh) | 一种基于视联网的监控查看方法和装置 | |
CN110445723B (zh) | 一种网络数据调度方法及边缘节点 | |
CN109510868A (zh) | 一种建立p2p网络的方法、装置、终端设备及存储介质 | |
CN109672857B (zh) | 监控资源的信息处理方法和装置 | |
US20100198977A1 (en) | Automatic live stream trees | |
KR20160086854A (ko) | 네트워크의 디바이스들에 의해 수행되는 지속적인 트래픽 세션들 사이에서 네트워크의 사용 가능한 대역폭을 분배하기 위한 방법 및 그 장치 | |
US20070160048A1 (en) | Method for providing data and data transmission system | |
CN108924609A (zh) | 流媒体数据传输的方法、电子设备、装置及存储介质 | |
CN104106252A (zh) | P2p流传送支持 | |
CN104580016A (zh) | 节点分配方法、装置及系统 | |
CN109688417A (zh) | 一种数据分发系统、方法、装置、电视盒子及存储介质 | |
CN107438201B (zh) | 消息处理系统、方法及装置 | |
CN109361856A (zh) | 一种全景直播方法、装置、终端设备及存储介质 | |
CN108965428A (zh) | 直播数据的传输方法、装置、电子设备、系统 | |
WO2018121584A1 (zh) | 一种数据流传输方法、装置、相关设备及存储介质 | |
Tran et al. | An efficient hybrid push-pull methodology for peer-to-peer video live streaming system on mobile broadcasting social media | |
CN112866390B (zh) | 一种数据传输方法、装置、终端设备和存储介质 | |
CN101262413B (zh) | 实现媒体缓存的方法、系统和装置 | |
CN105656742A (zh) | 一种基于most的多环网流媒体多播系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |