CN109561137A - 建立p2p网络的方法、装置、终端设备及介质 - Google Patents
建立p2p网络的方法、装置、终端设备及介质 Download PDFInfo
- Publication number
- CN109561137A CN109561137A CN201811354513.7A CN201811354513A CN109561137A CN 109561137 A CN109561137 A CN 109561137A CN 201811354513 A CN201811354513 A CN 201811354513A CN 109561137 A CN109561137 A CN 109561137A
- Authority
- CN
- China
- Prior art keywords
- node
- network
- nodes
- live streaming
- streaming client
- 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
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- 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
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种建立P2P网络的方法、装置、终端设备及存储介质,所述方法包括步骤:进入一直播间后,向所述直播间对应的P2P网络中的其他节点发送连接请求;与响应所述请求的节点建立连接;记录与本直播客户端已连接的节点数量;当与本直播客户端已连接的节点数量少于预设值时,再次向所述直播间对应的P2P网络中的节点发送连接请求。旨在解决如何建立适合直播场景的P2P网络的问题。
Description
技术领域
本申请涉及互联网领域,尤其涉及直播领域。
背景技术
Peer-to-peer(P2P)是一种分布式网络,P2P网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机等),这些共享资源需要由网络提供服务和内容,能被其它对等节点(peer)直接访问而无需经过中间实体。在此网络中的参与者既是资源(服务和内容)提供者(从本节点获取资源的节点数量,被称为本节点的实际出度数),又是资源获取者(给本节点提供资源的节点数量,被称为本节点的实际入度数)。
直播可快速准确的传递现场信息,强烈的临场感让越来越多的人通过网站、电脑或手机来观看直播。实时的直播数据流通常由服务器主动分发给各个观众客户端,以供用户观看。一般情况,会有几十万甚至上百万的用户实时观看同一路直播数据流,若利用P2P的方式进行直播数据流的分发,那么可以极大减轻服务器的压力,提高数据分发的效率。但是,由于直播与传统的P2P技术应用的场景具有很大差别,传统的P2P技术主要应用在共享视频或音频资料的场景(例如视频点播等网站的视频资源下载),相比与上述场景,直播存在每时每刻均可能有大量的用户进出直播间的特点,使得基于直播的P2P网络时刻动态变化,并且变化频率极快,但是直播场景具有实时性,以及对延时卡顿容忍率极低的特点,若沿用传统的P2P技术建立P2P网络,势必很难符合直播的实时性要求,所以如何建立适合直播场景的P2P网络成为亟待解决的问题。
发明内容
为了解决上述技术问题,本申请提供建立P2P网络的方法、装置、终端设备及介质。
在本申请的第一方面,提供一种建立P2P网络的方法,包括步骤:
进入一直播间后,向所述直播间对应的P2P网络中的其他节点发送连接请求;
与响应所述请求的节点建立连接;
记录与本直播客户端已连接的节点数量;
当与本直播客户端已连接的节点数量少于预设值时,再次向所述直播间对应的P2P网络中的节点发送连接请求。
在一些例子中,所述记录与本直播客户端已连接的节点数量,具体包括步骤:
将与本直播客户端已连接的节点标识存放至一缓存区;
与已连接的节点周期***互信令信息,若存在已连接节点的信令信息不满足预设要求,则释放所述缓存区存放的所述节点标识;
周期性记录所述缓存区中存放的节点标识的数量。
在一些例子中,所述向所述直播间对应的P2P网络中的其他节点返连接请求,包括步骤:
向服务器请求节点列表,所述节点列表中携带符合预设条件的节点的地址信息;
接收到所述节点列表后,向所述节点列表中的节点发送连接请求。
在一些例子中,所述预设条件根据本直播客户端所在设备的位置信息、P2P网络中各节的上行能力、连接情况、网络状况和/或所在设备的硬件配置确定。
在一些例子中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值。
在一些例子中,所述直播资源包括数据包,所述数据包由服务器从主播客户端获取的直播数据流拆分而成,并由服务器按照自定义的格式封装,所述自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性,所述数据包由P2P网络中的节点直接或间接从服务器获取。
在一些例子中,所述与响应所述请求的节点建立连接后,还包括步骤:
向所述已连接的节点协商订阅;
在协商成功后,被订阅的节点在通过其他节点从服务器获取到数据包时,将所述直播客户端订阅的数据包推送给所述直播客户端。
在本请的第二方面,提供一种建立P2P网络的装置,包括:
请求模块,用于进入一直播间后,向所述直播间对应的P2P网络中的其他节点发送连接请求;
处理模块,用于与响应所述请求的节点建立连接;记录与本直播客户端已连接的节点数量;当与本直播客户端已连接的节点数量少于预设值时,再次向所述直播间对应的P2P网络中的节点发送连接请求。
在本请的第三方面,提供一种终端设备,包括:
处理器;以及
存储器,所述存储器被配置成存储计算机程序,所述计算机程序被配置成被所述处理器执行如前述第一方面任意一项方法所述的操作。
在本申请的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行如前述第一方面任意一项方法所述的操作。
本申请实施例通过记录与本直播客户端已连接的节点数量;当与本直播客户端已连接的节点数量少于预设值时,再次向所述直播间对应的P2P网络中的节点发送连接请求,以维护与直播客户端保持连接的节点数量不少于预设值,来保证直播客户端在无法获取直播流媒体数据时,可以快速从已连接的节点获取直播流媒体数据,减少了重新建立连接的时间,降低传统的P2P网络组建方式带来的播放直播数据流时出现的延时和卡顿问题,极好地适应对实时性要求较高的直播场景。
附图说明
图1是本申请实施例提出的一种直播***的网络架构;
图2是本申请实施例提出的一种建立P2P网络的方法的流程图;
图3a为本申请实施例中提出的另一种建立P2P网络的方法的流程图;
图3b为本申请实施例中提出的另一种建立P2P网络的方法的流程图;
图4为现有的一P2P网络建立示意图;
图5a为本申请实施例中提出的一P2P网络示意图;
图5b为本申请实施例中提出的另一P2P网络示意图;
图6为本申请实施例中提出的另一种建立P2P网络的方法的流程图;
图7a-图7c为本申请实施例中三种不同的服务器架构下搭建的网络;
图8为本申请实施例中提出的另一种建立P2P网络的方法的流程图;
图9为本申请实施例示例性示出的建立P2P网络的装置的示意图;
图10为本申请实施例示例性示出的一终端设备的示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
参照图1,为本申请实施例示例性示出的一基于P2P网络的直播场景示意图,第一观众客户端、第二观众客户端、第三观众客户端及主播客户端分别被安装在终端设备110、120、130及140上,主播客户端可以通过屏幕捕捉,以及配合调用摄像头录制视频、拍摄照片等其他方式制作直播流媒体数据,直播流媒体数据包括一帧帧图像帧及音频数据,然后通过网络将制作的直播流媒体数据发送给服务端100。服务端100用于提供直播的后台服务,例如保存各主播客户端与观众客户端的对应关系,P2P网络的管理,将直播流媒体数据切割成若干数据包,将数据包按照自定义的格式封装,并进行封装后的数据包的分发等,当第一观众客户端、第二观众客户端及第三客户端与主播客户端在同一直播间内,服务端100可以通知第一观众客户端、第二观众客户端及第三观众客户端建立P2P网络,P2P网络中的第一观众客户端、第二观众客户端及第三观众客户端相互之间可以交互数据包,以减轻服务器的压力,提高各直播客户端获取直播流媒体数据的效率。P2P网络中的直播客户端也被称为节点。
本申请实施例所述的是指众多用户聚合在一起的社交网络平台、即时通讯平台等,用户通过登录客户端的方式进入直播间,用户在直播间内以成员的身份存在,同一个直播间内包含有多种身份的成员,比如观众、主播等。用户可任意加入或退出直播间。对于具有一定权限的用户,其可添加或删除直播间成员,也可新建或解散直播间,这类具有权限的用户的身份为主播。在直播间内,任意多个成员可进行聊天、通话、视频或推送电子赠品等交互。
本申请实施例所述的“主播客户端”“观众客户端”可以指安装在终端设备上的软件,在某些情况下,所述直播客户端与观众客户端集成在一个软件上,当用户的身份为主播时,该客户端可以被称为主播客户端,当用户的身份是观众时,该客户端被称为观众客户端。本申请说明书中的直播客户端是主播客户端或观众客户端。
由于直播与传统的P2P技术应用的场景具有很大差别,传统的P2P技术主要应用在共享视频或音频资料的场景(例如视频点播等网站的视频资源下载),相比与上述场景,直播存在每时每刻均可能有大量的用户进出直播间的特点,使得基于直播的P2P网络时刻动态变化,并且变化频率极快,但这对于具有实时性,以及对延时卡顿容忍率极低的直播场景是无法接受的,所以如何建立适合直播场景的P2P网络成为亟待解决的问题。
为了解决上述技术问题,本申请实施例提供一种建立基于直播的P2P网络的方法、装置、设备及存储介质。参数图2为本申请实施例示例性示出的一种建立P2P网络的方法的流程图,所述方法包括步骤:
一直播客户端执行S210:进入一直播间后,向所述直播间对应的P2P网络中的其他节点发送连接请求;
S220:与响应所述请求的节点建立连接;
S230:记录与本直播客户端已连接的节点数量;
S240:当与本直播客户端已连接的节点数量少于预设值时,再次向所述直播间对应的P2P网络中的节点发送连接请求。
在一些例子中,所述进入一直播间,具体可以是:用户点击进入该直播间的控件后,进入该直播间。
在一些例子中,直播客户端给P2P网络中的其他节点发送连接请求后,收到请求的其他节点会根据自身的情况选择返回响应或是不响应,若直播客户端接收到节点返回的响应,则成功建立连接,若直播客户端在规定的时间内一直未收到响应,则认为连接失败。
一个具体的例子中,图2所述的建立基于直播的P2P网络的方法可以是:一直播间a中有若干个观众客户端,这些观众客户端相互建立P2P网络后,进行直播流媒体数据的推送。一直播客户端1登录时向服务器注册,并在进入直播间a后,向直播间a对应的P2P网络中的节点发送连接请求,当然,直播客户端1可以通过进入直播间a后,向服务器请求直播间a的各节点的地址信息,以使直播客户端1可以给直播间a对应的P2P网络中的节点发送连接请求;当直播客户端1接收到节点的响应后,与该节点建立连接后,更新记录的与直播客户端1已连接的节点数量,当然若有已建立连接的节点连接断开,也更新所述已连接的节点数量,并且当与直播客户端1已连接的节点数量少于预设值时,再次向所述直播间a对应的P2P网络中的节点发送连接请求,以使与直播客户端a保持连接的节点的数量不少于第一预设值,例如:预设值为2,直播客户端1与3个节点已连接,分别为节点1、节点2、及节点3,并从节点1获取直播流媒体数据,但是由于网络抖动或节点2及节点3的其中两个节点退出直播间,已连接节点数量等于1,并小于2,此时,若不做处理,若节点1也退出直播间或是因为网络抖动等原因接收不到直播流媒体数据,直播客户端需要重新向P2P网络中的节点请求连接,如此可能导致一段时间接收不到直播流媒体数据,而使得直播客户端a播放直播流媒体数据时存在顿或花屏,而本申请实施例通过维护与直播客户端a保持连接的节点数量不少于预设值,可以保证直播客户端a在无法获取直播流媒体数据时,快速从已连接的节点获取直播流媒体数据,减少了重新建立连接的时间,减少延时和卡顿,极好地适应对实时性要求较高的直播场景。
在一些例子中,参照图3a,图2所述的步骤S230具体可以包括:
S231:将与本直播客户端已连接的节点标识存放至一缓存区。
S232:与已连接的节点周期***互信令信息,若存在已连接节点的信令信息不满足预设要求,则释放所述缓存区存放的所述节点标识。
S233:周期性记录所述缓存区中存放的节点标识的数量。
所述缓存区可以是队列,用于维护存放的节点标识。所述节点标识用于表征该P2P网络中节点的唯一性,例如节点的IP号或其他。
所述信令信息包括:网速、时延、丢包率和/或已连接的节点的上行带宽等信息,可以是其中一个或多个信令消息综合评分,所述满足预设要求指的是,上述综合评分小于某个预设分数。当然除了评分也可以是本直播客户端与已连接节点交互信令信息时发现,时延极大,或是丢包率极低,或是已连接节点的上行带宽较小时,可以中断连接,并将该节点的标识从缓存区释放。
图3a所述的实施例通过队列的方式记录与本直播客户端已连接的节点数量,可以更好地维护和管理与本直播客户端已连接的节点。
当然一些例子中,也可以用缓存区缓存已连接的节点数量,当断开连接后,减少缓存区已连接的节点数量,在新建立连接后,增加缓存区已连接的节点数量。在另外一些例子中,可以周期性检测已连接的节点数量,并记录与本直播客户端已连接的节点数量。还可以利用其它方式记录与本直播客户端已连接的节点数量,本申请不限制记录与本直播客户端已连接的节点数量的方式。
一个直播间对应的P2P网络中的节点数量是庞大的,若每个进入直播间的直播客户端要给全部的节点发送连接请求,势必造成带宽的过量占用。为了解决该技术问题,一些例子中,参照图3b,图2所述步骤S210具体可以包括:
S211:一直播客户端(例如直播客户端a)进入一直播间后,向服务器请求节点列表。
服务器根据该直播客户端的相关信息,将节点列表发送给直播客户端a。
其中,所述节点列表中携带符合预设条件的节点的地址信息,例如IP地址等。
所述预设条件根据本直播客户端a所在设备的位置信息、P2P网络中各节的上行能力、连接情况、网络状况和/或所在设备的硬件配置确定。一个具体的例子中,服务器根据所述直播客户端所在设备的位置信息,将距离所述直播客户端较近的一定数量的节点记录在节点列表中,数量可以是四十到五十个。
S212:该直播客户端接收到所述节点列表后,向所述节点列表中的节点发送连接请求。
在一些例子中,直播客户端a可以根据节点列表中携带的地址信息,向节点列表中的全部或部分节点发送连接请求。
本申请实施例通过从服务器获得针对本直播客户端a的符合预设条件的节点列表,以控制本直播客户端a发送连接请求的节点的数量,同时兼顾连接的质量。
在实际应用中发现,现有的P2P网络,易出现饱和现象,而使得新入网的节点无法从其他节点获得资源数据。例如,参照图4,节点1、2及3两两互为资源数据提供者及资源数据获取者,如每个节点最多作为两个节点的资源数据提供者,那么在有新的节点进入时,节点1、2及3无法给新进入的节点提供资源数据。针对该问题,本申请实施例提出的P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值。
参照图5a,为本申请实施例示出的P2P网络示意图,图5a所述的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个其他节点主动连接。
至此,至此,不同于传统的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网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值。在一些例子中,直播客户端收到节点列表后,可以根据节点列表上的地址信息,向节点列表上的全部或部分节点发送连接请求,收到请求的节点判断自身是否还允许被其他节点主动连接,若该节点被主动连接的其他节点数小于第一设定阈值,给直播客户端返回响应,则连接成功,若等于第一设定阈值,不返回响应,直播客户端在规定的时间内未接收到反馈,则认为连接失败。
参照图6,为本申请实施例示意性示出的另一建立P2P网络的方法的流程图,具体步骤包括:
S610:主播客户端将采集的直播流媒体数据发送给服务器。
S620:服务器将接收到的直播流媒体数据切割成若干数据包,并将每个数据包按照自定义的格式封装,所述自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性。
S630:与所述主播客户端在同一直播间的观众客户端建立P2P网络后,服务器将所述封装的数据包分发给P2P网络中订阅服务器的节点。
S210:直播客户端进入所述直播间,向所述直播间对应的P2P网络中的其他节点发送连接请求。
一些例子中,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值;
S220:所述直播客户端与响应所述请求的节点建立连接,以更新所述P2P网络。
S230:所述直播客户端记录与本直播客户端已连接的节点数量;
S240:当与本直播客户端已连接的节点数量少于预设值时,再次向所述直播间对应的P2P网络中的节点发送连接请求。
图6所述的方法不同于传统的P2P模式,首先将直播流媒体数据切割成数据包而不是文件块,文件块的大小可能在上百KB,而相对于文件块来说,数据包的可切割粒度更小,可以作为更小的传输单元在网络中传输,例如在考虑切割后的数据包的大小时,可以结合互联网网络的传输特性来设计,使得数据包的大小与P2P网络中各连接通道的传输带宽匹配。举例来说,各对等节点之间建立的通道可以是UDP通道,每个数据包的大小可以是1KB左右,略小于MTU(互联网网络层最大传输单元),这样,每个数据包可以由1个IP包传输,不需要出现基于IP包拆包,因此比切割文件的方式效率更高,从而使得具有更广泛的适用场景。
本申请实施例提出的服务器可以由多种实体承担,这取决于设计者对不同网络设备的角色划分。例如,图7a、图7b、图7c是三种不同场景下的网络架构,可以看出,不同业务模式下,由于业务或设备管理的需求不同,可以由不同类型的服务器设备承担上述服务器的功能。图7a中,第一服务器承担收集直播流媒体数据的角色,第二服务器承担切割数据包的角色,第三服务器作为向对等节点分发数据包的角色。图7b中,第一服务器集成了收集流媒体数据和切割数据包的功能,第二服务器作为分发数据包的服务器。图7c中,服务器将收集流媒体数据、切割数据包、分发数据包的功能集于一体。需要指出,除了图7a、图7b及图7c所列举的示例以外,并不排除有其他形式的网络架构或服务器功能。
需要说明的是,在数据包封装阶段,为了使切割后的数据包能够被对客户端接收后有序组装以及客户端之间形成对等节点后能够交互数据包,服务器可以为每个数据包编号,作为描述每个数据包唯一标识的字段,所述唯一标识为第一标识,某些例子中,可以自定义数据包的格式来实现此目的,自定义的格式中可以规定特定字段作为此唯一标识。在一些例子中,本申请提出的第一标识可以是同一共享资源数据中用于区分其他数据包的唯一标识。当然,并不排除其他方式来实现此目的。
一些例子中,参照图8,图2所述的步骤S220“与响应所述请求的节点建立连接”之后,还可以包括步骤:
S810:与所述已连接的节点协商订阅。
本步骤中,直播客户端可以与已连接的节点中部分协商订阅,需要说明的是,本申请实施例所述的额P2P网络中,建立连接的节点地位等同,若节点a向节点b主动请求连接,节点a与节点b建立连接后,上述两个节点间可以相互商订阅,即,可以是节点a从节点b获取直播流媒体数据,此时节点b相对于节点a是被订阅的节点,也可以是节点b从节点a获取直播流媒体数据。
S820:在协商成功后,被订阅的节点在通过其他节点从服务器获取到数据包时,将所述直播客户端订阅的数据包推送给所述直播客户端。
需要说明的是,其中图2、图3a、图3b、图6及图8可以任意组合成另一建立P2P网络的方法,此处不再一一赘述。
图8所述的实施例,通过首先与所述已连接的节点协商订阅,在协商成功后,被订阅的节点在通过其他节点从服务器获取到数据包时,将所述直播客户端订阅的数据包推送给所述直播客户端,避免现有P2P技术中各节点通过拉流的方式,带来的请求及响应信息交互过多产生的延时以及对网络带宽的占用,保证直播客户端播放直播流媒体数据的实时性。
为了进一步提高P2P网络中数据传输的效率,在一些例子中,不同的数据包根据第一标识被分成多个组,被订阅的不同节点各自推送的指定数据包属于不同分组。
具体的,一些例子中,所述第一标识可以是预定位数的编号,可以用各数据包的编号对分组数进行求余,根据求余的余数确定各数据包的分组。例如:一直播流媒体数据被切割成了编号为1-20的数据包,分组数为5,用各数据包的编号对5进行求余,例如编号为1,1/5的余数是1,余数为1的都属于第一组,所以编号为1的数据包属于第一组,以此类推,可以确定各数据包的分组情况,每组分组的数据包组成一路子流,例如余数为0的数据包属于0号子流,余数为1的数据包属于1号子流,以此类推。在一些例子中,所述分组数可以根据直播流媒体数据的码率或分辨率或承担分发数据包任务的服务器的数量确定,具体求余的策略不做限定。将数据包分组后,服务器可以基于分组将数据包分发给P2P网络中的节点,例如,可以由多个服务器分别将不同组的数据包发送给P2P网络中从服务器获取资源数据的节点,以提高数据传输效率,及增加节点播放流媒体数据的起播速度。当然,在一些例子中,将数据包分组后,每个节点可以从不同的节点获取不同分组的数据,可以进一步提高P2P网络中数据传输效率。
本申请还可以通过给节点分类的方式实现上述实施例的效果。具体的一个例子中,P2P网络中的每个节点可以维护或记录不同类型的节点,节点的类型包括:候选节点、活跃节点、传输节点、淘汰节点或/和僵死节点。其中,
候选节点,指的从服务器获取的节点列表中的节点,或者是本节点发送连接请求的节点,但尚未建立连接。
活跃节点,指的是从候选节点中与本节点已建立连接并保持连接状态的节点。活跃节点与本节点之间可以周期性的交互信令信息,例如丢包率、延时、网速和/或上行带宽等。
传输节点,指的是所述活跃节点中可以用于获取资源数据的节点。
淘汰节点,指的是活跃节点中质量较差,而被本节点主动放弃的节点。
僵死节点,可以分为两种,其中一种是候选节点中请求连接,但未连接成功的节点;另一种是传输节点中,无法传输资源数据的节点,此种情况可能是死机或断网造成的。
当然,若数据包根据编号被分组,在一些例子中,P2P网络中传输节点可以包括订阅节点,例如,节点1从节点2获取1号子流,节点2是节点1对应与1号子流的订阅节点,节点1从节点3获取0号子流,节点3是节点1对应与0号子流的订阅节点。
当然一些例子中,图2的步骤S230也可以是通过可以维护一个队列,用于记录活跃节点,当存在淘汰节点和僵死节点时,将活跃节点中的淘汰节点和僵死节点剔除,并且当该节点发现活跃节点的数量少于预设值时,向服务器再次请求节点列表,向节点列表中的候选节点发送连接请求,以使每个节点对应的活跃节点的数量不少于预设值。可以理解,一些例子中,上述每类节点均可以用一队列进行维护。
请参见图9,提供一种建立P2P网络的装置,包括:
请求模块910,用于进入一直播间后,向所述直播间对应的P2P网络中的其他节点发送连接请求;
处理模块920,用于与响应所述请求的节点建立连接;记录与本直播客户端已连接的节点数量;当与本直播客户端已连接的节点数量少于预设值时,再次向所述直播间对应的P2P网络中的节点发送连接请求。
图9中建立P2P网络的装置的实施例可以应用在终端设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在终端设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图10所示,为本申请建立P2P网络的装置所在终端设备的一种硬件结构图,除了图10所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的客户端设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。处理器被用于执行:
进入一直播间后,向所述直播间对应的P2P网络中的其他节点发送连接请求;
与响应所述请求的节点建立连接;
记录与本直播客户端已连接的节点数量;
当与本直播客户端已连接的节点数量少于预设值时,再次向所述直播间对应的P2P网络中的节点发送连接请求。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
在本申请实施例中,计算机可读存储介质可以是多种形式,比如,在不同的例子中,所述机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。特殊的,所述的计算机可读介质还可以是纸张或者其他合适的能够打印程序的介质。使用这些介质,这些程序可以被通过电学的方式获取到(例如,光学扫描)、可以被以合适的方式编译、解释和处理,然后可以被存储到计算机介质中。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种建立P2P网络的方法,其特征在于,包括步骤:
进入一直播间后,向所述直播间对应的P2P网络中的其他节点发送连接请求;
与响应所述请求的节点建立连接;
记录与本直播客户端已连接的节点数量;
当与本直播客户端已连接的节点数量少于预设值时,再次向所述直播间对应的P2P网络中的节点发送连接请求。
2.根据权利要求1所述的方法,其特征在于,所述记录与本直播客户端已连接的节点数量,具体包括步骤:
将与本直播客户端已连接的节点标识存放至一缓存区;
与已连接的节点周期***互信令信息,若存在已连接节点的信令信息不满足预设要求,则释放所述缓存区存放的所述节点标识;
周期性记录所述缓存区中存放的节点标识的数量。
3.根据权利要求1所述的方法,其特征在于,所述向所述直播间对应的P2P网络中的其他节点返连接请求,包括步骤:
向服务器请求节点列表,所述节点列表中携带符合预设条件的节点的地址信息;
接收到所述节点列表后,向所述节点列表中的节点发送连接请求。
4.根据权利要求3所述的方法,其特征在于,所述预设条件根据本直播客户端所在设备的位置信息、P2P网络中各节的上行能力、连接情况、网络状况和/或所在设备的硬件配置确定。
5.根据权利要求1所述的方法,其特征在于,所述P2P网络中,任一节点被主动连接的其他节点数不大于第一设定阈值,任一节点主动连接的其他节点数不大于第二设定阈值,且所述第一设定阈值大于第二设定阈值。
6.根据权利要求1所述的方法,其特征在于,所述与响应所述请求的节点建立连接后,还包括步骤:
与所述已连接的节点协商订阅;
在协商成功后,被订阅的节点在通过其他节点从服务器获取到直播流媒体数据时,将所述直播客户端订阅的直播流媒体数据推送给所述直播客户端。
7.根据权利要求6所述的方法,其特征在于,所述直播流媒体数据包括由服务器从主播客户端获取的数据拆分而成的数据包,并由服务器按照自定义的格式封装,所述自定义的格式中包括第一标识,第一标识用于描述每个数据包唯一性,所述数据包由P2P网络中的节点直接或间接从服务器获取。
8.一种建立P2P网络的装置,其特征在于,包括:
请求模块,用于进入一直播间后,向所述直播间对应的P2P网络中的其他节点发送连接请求;
处理模块,用于与响应所述请求的节点建立连接;记录与本直播客户端已连接的节点数量;当与本直播客户端已连接的节点数量少于预设值时,再次向所述直播间对应的P2P网络中的节点发送连接请求。
9.一种终端设备,其特征在于,包括:
处理器;以及
存储器,所述存储器被配置成存储计算机程序,所述计算机程序被配置成被所述处理器执行如权利要求1至7任意一项方法所述的操作。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行如权利要求1至7任意一项方法所述的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811354513.7A CN109561137B (zh) | 2018-11-14 | 2018-11-14 | 建立p2p网络的方法、装置、终端设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811354513.7A CN109561137B (zh) | 2018-11-14 | 2018-11-14 | 建立p2p网络的方法、装置、终端设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109561137A true CN109561137A (zh) | 2019-04-02 |
CN109561137B CN109561137B (zh) | 2021-08-24 |
Family
ID=65866156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811354513.7A Active CN109561137B (zh) | 2018-11-14 | 2018-11-14 | 建立p2p网络的方法、装置、终端设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109561137B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489484A (zh) * | 2019-07-11 | 2019-11-22 | 视联动力信息技术股份有限公司 | 数据同步方法、装置、可读存储介质及电子设备 |
CN111225242A (zh) * | 2020-01-17 | 2020-06-02 | 广州酷狗计算机科技有限公司 | 视频播放容灾方法、装置及计算机存储介质 |
CN111479170A (zh) * | 2020-03-13 | 2020-07-31 | 杭州火烧云科技有限公司 | 一种基于视频互动和屏幕共享直播的方法及*** |
CN115865941A (zh) * | 2023-02-15 | 2023-03-28 | 花瓣云科技有限公司 | 丢包重传方法、分组确定方法、装置、设备以及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080140780A1 (en) * | 2006-11-07 | 2008-06-12 | Tiversa, Inc. | System and method for enhanced experience with a peer to peer network |
US20090116430A1 (en) * | 2007-11-07 | 2009-05-07 | Motorola, Inc. | System for enabling mobile coverage extension and peer-to-peer communications in an ad hoc network and method of operation therefor |
CN101720136A (zh) * | 2009-11-27 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 客户端邻居节点数目控制方法和装置、缓存*** |
CN101945129A (zh) * | 2010-09-10 | 2011-01-12 | 北京易视腾科技有限公司 | P2p流媒体直播的低延时传输方法及*** |
CN101969448A (zh) * | 2009-06-17 | 2011-02-09 | ***通信集团公司 | 在p2p流媒体***中查找活动节点的方法、***及设备 |
CN103312824A (zh) * | 2013-07-10 | 2013-09-18 | 亿览在线网络技术(北京)有限公司 | 一种p2p网络智能调速方法、装置和*** |
CN103355008A (zh) * | 2010-09-16 | 2013-10-16 | 电话有限公司 | 用于使用多个接入点公平的网络回程吞吐量聚集的方法和单一无线站 |
US20150381675A1 (en) * | 2012-02-16 | 2015-12-31 | Telefonaktiebolaget L M Ericsson (Publ) | P2p streaming support |
-
2018
- 2018-11-14 CN CN201811354513.7A patent/CN109561137B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080140780A1 (en) * | 2006-11-07 | 2008-06-12 | Tiversa, Inc. | System and method for enhanced experience with a peer to peer network |
US20090116430A1 (en) * | 2007-11-07 | 2009-05-07 | Motorola, Inc. | System for enabling mobile coverage extension and peer-to-peer communications in an ad hoc network and method of operation therefor |
CN101969448A (zh) * | 2009-06-17 | 2011-02-09 | ***通信集团公司 | 在p2p流媒体***中查找活动节点的方法、***及设备 |
CN101720136A (zh) * | 2009-11-27 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 客户端邻居节点数目控制方法和装置、缓存*** |
CN101945129A (zh) * | 2010-09-10 | 2011-01-12 | 北京易视腾科技有限公司 | P2p流媒体直播的低延时传输方法及*** |
CN103355008A (zh) * | 2010-09-16 | 2013-10-16 | 电话有限公司 | 用于使用多个接入点公平的网络回程吞吐量聚集的方法和单一无线站 |
US20150381675A1 (en) * | 2012-02-16 | 2015-12-31 | Telefonaktiebolaget L M Ericsson (Publ) | P2p streaming support |
CN103312824A (zh) * | 2013-07-10 | 2013-09-18 | 亿览在线网络技术(北京)有限公司 | 一种p2p网络智能调速方法、装置和*** |
Non-Patent Citations (2)
Title |
---|
KYOUNGSOO BOK,JONGHYEON YOON,JONGTAE LIM,JAESOO YOO: ""Load Balancing with Load Threshold Adjustment in Structured P2P"", 《2018 IEEE INTERNATIONAL CONFERENCE ON BIG DATA AND SMART COMPUTING》 * |
李雯,梁刚: "基于网络流量的P2P动态检测方法", 《四川大学学报 自然科学版》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489484A (zh) * | 2019-07-11 | 2019-11-22 | 视联动力信息技术股份有限公司 | 数据同步方法、装置、可读存储介质及电子设备 |
CN111225242A (zh) * | 2020-01-17 | 2020-06-02 | 广州酷狗计算机科技有限公司 | 视频播放容灾方法、装置及计算机存储介质 |
CN111479170A (zh) * | 2020-03-13 | 2020-07-31 | 杭州火烧云科技有限公司 | 一种基于视频互动和屏幕共享直播的方法及*** |
CN115865941A (zh) * | 2023-02-15 | 2023-03-28 | 花瓣云科技有限公司 | 丢包重传方法、分组确定方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109561137B (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109474684B (zh) | 一种获取直播视频流的方法、装置、终端设备及存储介质 | |
CN109560901B (zh) | 一种数据重传方法、装置、终端设备及存储介质 | |
CN109561137A (zh) | 建立p2p网络的方法、装置、终端设备及介质 | |
RU2647654C2 (ru) | Система и способ доставки аудиовизуального контента в клиентское устройство | |
WO2017088383A1 (zh) | 一种直播视频的播放方法、装置及*** | |
CN108924609B (zh) | 流媒体数据传输的方法、电子设备、装置及存储介质 | |
WO2017088381A1 (zh) | 一种直播视频的播放方法、装置及*** | |
US8176192B2 (en) | Networked transmission system and method for stream data | |
Sweha et al. | Angelcast: cloud-based peer-assisted live streaming using optimized multi-tree construction | |
US7525965B1 (en) | Trick play for multicast streams | |
CN110300306B (zh) | 基于rtmp协议直播流负载均衡方法 | |
US20100031300A1 (en) | Operating method of contents on demand system | |
CN108833591B (zh) | P2p网络中数据传输的方法、电子设备、装置、网络架构 | |
WO2023061060A1 (zh) | 音视频码流的调度方法、***、介质及电子装置 | |
CN109510868B (zh) | 一种建立p2p网络的方法、装置、终端设备及存储介质 | |
CN109688417A (zh) | 一种数据分发***、方法、装置、电视盒子及存储介质 | |
Kumar et al. | Cloud enabled media streaming using Amazon Web Services | |
Kim et al. | Efficient neighbor selection through connection switching for P2P live streaming | |
WO2020135562A1 (zh) | 一种组播方法、装置、设备和计算机存储介质 | |
KR20190015521A (ko) | 인기 있는 라이브 방송 비디오를 결정하는 방법 및 디바이스 | |
CN114501052A (zh) | 直播数据处理方法、云平台、计算机设备和存储介质 | |
CN105656742A (zh) | 一种基于most的多环网流媒体多播***和方法 | |
CN107645475B (zh) | 异质网络中的文件资源分发***与方法 | |
CN109040199A (zh) | 一种分发资源数据的方法、***及存储介质 | |
Ishakian et al. | AngelCast: Cloud-based peer-assisted live streaming using optimized multi-tree construction |
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 |