数据包发送方法、装置、服务器及计算机可读存储介质与流程

文档序号:18179790发布日期:2019-07-17 05:08阅读:226来源:国知局
数据包发送方法、装置、服务器及计算机可读存储介质与流程

本发明涉及网络技术领域,特别涉及一种数据包发送方法、装置、服务器及计算机可读存储介质。



背景技术:

随着网络技术的发展以及终端功能的多样化,人们越来越喜欢通过网络与其他人进行数据共享,例如,人们可以通过终端建立直播房间,并在该直播房间中进行网络直播,其他人可以进入该直播房间,观看直播内容,与该直播房间的发起者进行互动,或者人们可以通过终端建立用户群组,并在该用户群组中发布消息或者进行语音、视频聊天。

目前,上述过程通常是通过用户所在终端与服务器进行数据交互实现。当该直播房间或者用户群组中任一用户在其终端上进行操作,例如,在直播房间中进行的送礼物、点赞、关注、分享等操作,或者在用户群组中进行的消息发布、语音聊天、视频聊天等操作,该用户所在终端会向服务器发送数据包,该数据包中携带该用户的操作内容。服务器接收到该数据包,会将该数据包发送至该直播房间或者用户群组中每一个用户所在终端,从而该直播房间或者用户群组中的每一个用户均能看到该直播房间或者用户群组中其它用户的操作。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

服务器接收到任一终端发送的数据包,即将该数据包发送至待接收该数据包的目标用户所在终端,当该目标用户的数量较大,且每个用户发送的数据包数量较多时,服务器需要发送大量的数据包,可能导致该服务器的cpu过载,从而可能影响直播质量或者用户群组数据同步的可靠性,影响服务质量。



技术实现要素:

本发明实施例提供了一种数据包发送方法、装置、服务器及计算机可读存储介质,解决了现有技术中cpu过载影响服务质量的问题。所述技术方案如下:

一方面,提供了一种数据包发送方法,应用于服务器,所述方法包括:

获取待接收数据包的目标用户的数量;

当所述目标用户的数量大于第一预设阈值,且所述服务器中存储有至少两个待发送的数据包时,根据所述至少两个待发送的数据包生成一个合包数据包;

当所述合包数据包符合预设条件时,将所述合包数据包发送至所述目标用户所在终端。

一方面,提供了一种数据包发送装置,应用于服务器,所述装置包括:

检测模块,用于获取待接收数据包的目标用户的数量;

合并模块,用于当所述目标用户的数量大于第一预设阈值,且所述服务器中存储有至少两个待发送的数据包时,根据所述至少两个待发送的数据包生成一个合包数据包;

发送模块,用于当所述合包数据包符合预设条件时,将所述合包数据包发送至所述目标用户所在终端。

一方面,提供了一种服务器,所述服务器包括:处理器;用于存放计算机程序的存储器;其中,所述处理器用于执行存储器上所存放的计算机程序,实现所述数据包发送方法。

一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现所述数据包发送方法。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例中在需要向用户发送数据包之前,获取待接收数据包的目标用户的数量,当用户的数量很大时,对数据包进行合并后再发送,可以有效地减少服务器发送数据包的次数,从而降低了服务器的负载,提高了直播质量或者用户群组数据同步的可靠性,提高了服务质量。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种网络直播系统示意图;

图2是本发明实施例提供的一种数据包发送方法流程图;

图3是本发明实施例提供的一种单个数据包的数据结构示意图;

图4是本发明实施例提供的一种合包数据包的数据结构示意图;

图5是本发明实施例提供的一种合包数据包的数据结构示意图;

图6是本发明实施例提供的一种数据包发送方法的流程图;

图7是本发明实施例提供的一种应用场景的网络架构示意图;

图8是本发明实施例提供的一种数据包发送方法流程图;

图9是本发明实施例提供的一种数据包发送装置的结构示意图;

图10是本发明实施例提供的一种服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明实施例提供的一种网络直播系统示意图,网络直播是一种新兴的网络社交方式,它是多个用户可以在同一时间通过网络系统观看同样的直播内容的一种社交方式。终端可以通过该终端上的直播应用获取直播数据,也可以通过门户网站获取直播数据。

用户在该终端上进行操作,该终端可以向服务器发送网络直播请求,由该服务器为该用户创建直播房间,该直播房间是一种提供弹幕式视频直播的在线虚拟房间,该直播房间的发起者即为主播,该主播可以在该直播房间中展示游戏、电影、电视剧、歌唱等音视频内容,其他用户也可以通过终端进入该直播房间,在该直播房间中观看主播的展示内容,也可以与该主播进行互动,例如,点赞、为该主播送礼物、关注或者分享该主播、与该主播进行聊天等。

如图1所示,根据数据包的不同类型,该网络直播系统可以包括两种网络架构。其中,第一种网络架构包括至少一个终端和内容分发网络(contentdeliverynetwork,cdn)。该至少一个终端可以获取该cdn提供的音视频服务。对于一个直播房间来说,其中一个终端为主播所在终端,其他终端为观众所在终端。主播所在终端可以向该cdn发送音视频上行数据包,该cdn可以将该音视频上行数据包发送至该观众所在终端,则观众所在终端可以观看主播所在终端发送的音视频内容。第二种网络架构包括至少一个终端和消息中转分发服务器。在该网络架构中,消息中转分发服务器不区分终端是观众所在终端,还是主播所在终端,该消息中转分发服务器可以将任一终端发送的消息,广播给其他终端,从而该直播房间内的所有终端均可以看到该消息,该消息通常是上述互动内容。

图2是本发明实施例提供的一种数据包发送方法流程图。该数据包发送方法应用于服务器,在本发明实施例中,仅以该数据包发送方法应用于网络直播场景中为例进行说明,参见图2,该数据包发送方法包括以下步骤:

201、当接收到数据包时,服务器获取待接收数据包的目标用户的数量。

当直播房间中任一用户进行了某项操作,例如,点赞、送礼物、关注、分享、进退房、聊天等互动操作,该用户所在终端可以向服务器发送数据包,该数据包携带该用户的操作内容,也即是业务数据。服务器接收到该数据包,可以检测直播房间的用户数量,该直播房间的用户数量即为上述待接收数据包的目标用户的数量,该目标用户可以是该直播房间中的在线用户数量,然后可以根据该目标用户的数量确定当前直播房间是否规模较大,来确定对该数据包的处理方式。

202、当该目标用户的数量大于第一预设阈值,且该服务器中存储有至少两个待发送的数据包时,服务器根据该至少两个待发送的数据包生成一个合包数据包。

技术人员可以在该服务器中预先设置该第一预设阈值,则服务器以此作为是否需要对直播房间的数据包在广播前进行处理的依据。该第一预设阈值的设置可以由技术人员基于服务器的处理能力确定,当然,在实际应用中,该第一预设阈值的设置也可以结合终端的处理能力确定,例如,该第一预设阈值可以是20,当然,该第一预设阈值也可以在后续上述服务器或者终端的处理能力增强或者实际使用情况进行调整,本发明对此不作具体限定。

该目标用户的数量大于第一预设阈值,说明该直播房间的规模较大,如果每个目标用户发送的数据包数量较多,服务器接收到的数据包的数量将会很大,由于服务器还需要将每个数据包发送给上述每个目标用户所在终端,该服务器需要发送的数据包的数量更大。针对这种场景,服务器可以将多个数据包合并后再发送,这样可以有效地减少服务器发送数据包的次数,从而降低了服务器的负载,相应地,也可以减少该直播房间的用户所在终端接收数据包的次数,从而减低了终端的负载。

该服务器根据该至少两个待发送的数据包生成一个合包数据包的过程可以为:服务器按照该至少两个待发送的数据包的接收时间,将该至少两个待发送的数据包合并为一个合包数据包,基于该合包数据包生成合包数据包的长度字段、合包命令字字段以及数据包个数字段。由于待发送的数据包可以是至少两个待发送的数据包,还可能是至少一个数据包,该至少一个数据包可能是单个数据包,也可能是一个合包数据包,针对该待发送的数据包的两种可能情况,服务器也可以分别采用以下两种处理方式对该数据包进行处理:

第一种处理方式、当该至少两个待发送的数据包包括接收到的待发送的数据包和单个数据包时,服务器将该单个数据包添加到该待发送的数据包后,并在该待发送的数据包前添加合包数据包的长度字段、合包命令字字段以及数据包个数字段。

在该第一种处理方式中,单个数据包的数据结构如图3所示,数据包可以包括三个字段,第一个字段为数据长度,第二个字段为子命令字,该子命令字用于指示该数据包的数据类型,第三个字段为业务数据。通常服务器将该数据包发送给终端,终端接收到该数据包,可以先读取该第一个字段,读取到该数据包的长度,然后该终端再解析该子命令字,确定该数据包的数据类型,从而可以采用相应的业务协议解析业务数据。

服务器在对两个数据包进行合并时,可以将接收时间在后的数据包添加到接收时间在前的数据包后,并在两个数据包前添加了三个字段,从而得到一个合包数据包,其中,合包命令字字段用于指示该合包数据包的数据类型。如图4所示,该合包数据包的数据结构包括上述三个字段,然后分别是上述合并的两个数据包,在该合包数据包中,每个数据包的数据结构与合并前的数据结构一样。实际实施时,服务器计算该合包数据包的总长度,并将该总长度填入合包数据包的长度字段,将该合包数据包的数据类型填入合包命令字字段,将数据包个数字段置为2。

在实际应用中,新添加的三个字段中合包数据包的长度字段长度可以为2个字节,合包命令字字段长度可以为1个字节,数据包个数字段长度可以为2个字节,因而,相比于原有的多个数据包,该合包数据包仅仅新增了5个字节,本发明实施例可以通过增加很少的额外消耗,一次性向终端发送更多的数据包,从而减少了服务器发送数据包的次数,以及终端接收数据包的次数,降低了服务器以及终端的负载。

第二种处理方式、当该至少两个待发送的数据包包括接收到的待发送的数据包和合包数据包时,服务器将该待发送的数据包添加到该合包数据包后,并将该合包数据包中的合包数据包的长度字段、合包命令字字段以及数据包个数字段进行更新。

在该第二种处理方式中,该服务器中有当前接收到的数据包和合包数据包,该合包数据包可以在之前由多个数据包经过合并后得到,服务器本次接收到数据包后,可以将该数据包添加到合包数据包后,并将上述合包数据包中已有的合包数据包的长度字段、合包命令字字段以及数据包个数字段进行更新即可。服务器通过该第二种处理方式,可以得到如图5所示的合包数据包。

203、当该合包数据包符合预设条件时,服务器将该合包数据包发送至该目标用户所在终端。

合包数据包是否符合预设条件可以从三个维度来衡量:合包数据包中的数据包的个数,合包数据包的长度,当前系统时间与上次数据包发送时间之间的时间间隔,服务器在通过上述步骤202得到合包数据包之后,可以根据这三个维度,确定该合包数据包是否符合预设条件,从而确定是否发送该合包数据包。

当该合包数据包符合该三个维度中至少一个维度所对应的预设条件时,服务器发送该合包数据包,具体地,当该合包数据包中的数据包的个数大于第二预设阈值时,服务器将该合包数据包发送至目标用户所在终端,可以避免数据包发送过度频繁;当该合包数据包的长度大于第三预设阈值时,服务器将该合包数据包发送至目标用户所在终端,可以避免数据包发送过度频繁;或,当当前系统时间与上次数据包发送时间之间的时间间隔超过第一预设时间间隔时,服务器将该合包数据包发送至目标用户所在终端,可以避免长时间未发送数据包,影响数据包发送的实时性,从而影响用户体验。

需要说明的是,上述第二预设阈值可以由技术人员根据实际统计结果确定,第三预设阈值可以由技术人员基于服务器的处理能力确定,例如,该第二预设阈值可以是30,该第三预设阈值可以是4096字节,也即是4k字节。第一预设时间间隔也可以由技术人员的自身经验或者实际调查结果确定,为了避免长时间未发送数据包,影响直播质量,该第一预设时间间隔一般比较小,例如,1秒(s),在实际应用中,本发明对上述第二预设阈值、第三预设阈值以及第一预设时间间隔的取值不作具体限定。

本发明实施例通过上述三个维度的预设条件,保证了在不过多增加数据包的时延的情况下,尽可能多地减少服务器的发包次数以及终端的收包次数,降低了服务器以及终端的负载,从而避免影响直播质量的情况出现。

在一种可能实现方式中,在该服务器上还可以设置一种超时机制:服务器定时检测该服务器中是否存储有待发送的数据包,当计时器指示当前系统时间与上次检测时间之间的时间间隔超过第二预设时间间隔,且该服务器中存储有待发送的数据包时,服务器将该数据包发送至目标用户所在终端。

当该服务器长时间未接收到数据包时,由于没有数据包驱动,可能导致该服务器上存储的数据包长时间未发送,从而影响直播质量。本发明实施例设置计时器,当计时达到第二预设时间间隔时,检测该服务器中是否存储有待发送的数据包,从而避免上述该服务器上存储的数据包长时间未发送的情况发生。在具体实施时,为了避免长时间未发送数据包,影响直播质量,该第二预设时间间隔一般比较小,该第二预设时间间隔可以与第一预设时间间隔相等,例如,1s,也可以是其他比较小数值,本发明对此不作具体限定。

当然,上述仅以当服务器接收到数据包时,触发该服务器进行上述确定是否向目标用户所在终端发送已存储的数据包的过程,并设置上述超时机制,以避免服务器上存储的数据包长时间未发送的情况。在实际应用中,该服务器也可以是定期检测该服务器上是否存储有数据包,并在该服务器上存储有数据包时,向目标用户所在终端发送已存储的数据包,本发明对该数据包发送方法的触发条件不作具体限定。

需要说明的是,服务器将数据包发送至直播房间中的目标用户所在终端时,可以将数据包发送至该直播房间中的每个用户所在终端,也可以是该直播房间中的部分用户所在终端,例如,服务器可以仅将数据包发送至该直播房间中的在线用户所在终端,或者服务器可以仅将数据包发送至优先级高的用户所在终端,或者服务器可以仅将数据包发送至已选定的用户所在终端,本发明对该目标用户所在终端不作具体限定。对于服务器将数据包发送至用户群组中的目标用户所在终端时,与上述直播房间同理,在此不多做赘述。

204、当该合包数据包不符合预设条件时,服务器存储该合包数据包。

具体地,该步骤204可以为:当该合包数据包中的数据包的个数小于或等于第二预设阈值,该合包数据包的长度小于或等于第三预设阈值,且当前系统时间与上次数据包发送时间之间的时间间隔未超过第一预设时间间隔时,服务器存储该合包数据包。

服务器可以先存储该合包数据包,等待接收到下一个数据包时,与下一个数据包进行合并后发送,或者可以通过超时机制发送该合包数据包,也即是在之后的某个时刻还未接收到下一个数据包,但该时刻的系统时间已经与上次数据包发送时间的时间间隔大于第二预设时间间隔,则服务器可以发送该合包数据包。

需要说明的是,该服务器存储该合包数据包的方式可以为缓存,当该服务器在后续将该合包数据包发送至终端时,该服务器还可以将该合包数据包从缓存中清除,以避免不必要的资源占用与消耗。

205、当该目标用户的数量大于第一预设阈值,且该服务器中存储有单个待发送的数据包时,服务器确定该数据包是否符合预设条件,如果是,执行步骤206;如果否,执行步骤207。

上述步骤202至204是该目标用户的数量大于第一预设阈值,且该服务器中存储至少两个待发送的数据包时的情况,在实际应用中,还有另一种可能场景:该目标用户的数量大于第一预设阈值,但该服务器中只有上述步骤201中接收到的数据包。在该场景中,由于服务器中除了当前接收到的数据包之外,没有存储其他的数据包,服务器无需执行步骤202的合并步骤,也无需执行判断合并后的合包数据包是否符合预设条件从而确定是否需要发送的步骤。服务器可以直接确定该数据包是否符合预设条件,来确定对该数据包的处理方式。

206、当该数据包符合预设条件时,服务器将该数据包发送至目标用户所在终端。

该步骤206与步骤203同理,只是该数据包为单个数据包,因而,该数据包只有两个维度,一个是数据包的长度,另一个是当前系统时间与上次数据包发送时间之间的时间间隔。

当该数据包符合该两个维度中至少一个维度所对应的预设条件时,服务器发送该数据包,具体地,当该数据包的长度大于第三预设阈值时,服务器将该数据包发送至该直播房间的每个用户所在终端;或,当当前系统时间与上次数据包发送时间之间的时间间隔超过第一预设时间间隔时,服务器将该数据包发送至该直播房间的每个用户所在终端。

207、当该数据包不符合预设条件时,服务器存储该数据包。

该步骤207与步骤204同理,具体可以为:当该数据包的长度小于或等于第三预设阈值,且当前系统时间与上次数据包发送时间之间的时间间隔未超过第一预设时间间隔时,服务器存储该数据包。

需要说明的是,服务器根据该数据包是否符合预设条件,从而确定是否发送该数据包,当该服务器存储该数据包后,在后续接收到数据包时,即可重新执行上述步骤201至204,以及当该目标用户的数量小于或等于第一预设阈值时,执行下述步骤208。

上述步骤202至步骤207均为目标用户的数量大于第一预设阈值的情况,由于该标用户的数量较多,在实际应用中,该服务器还可以通过以下步骤(1)和(2)对直播过程中的数据包进行流量控制:

(1)在每个统计周期内,服务器实时统计该每个统计周期内接收到的数据包的个数,以及待接收每个数据包的目标用户的数量的和值。

该统计周期可以是一段比较短的时间,例如,3s,该统计周期的设置可以统计短时间内的数据包发送需求,在该数据包发送需求非常大时,对数据包进行筛选处理,从而达到流量控制效果。在实际应用中,该统计周期可以自由设置,本发明对此不作具体限定。

例如,以统计周期为3s为例,假设在某个统计周期内,以该统计周期的开始时刻为起点,当时间过去0.5s时,服务器接收到5个数据包,服务器接收到该5个数据包时,获取到的目标用户的数量分别为1000、999、1010、1020、1006,则服务器在该0.5s时刻统计得到的数据包个数为5,待接收该5个数据包中每个数据包的目标用户的数量的和值为5035。

(2)服务器根据该数据包的个数和/或该和值,对发送列表进行维护,该发送列表中包括允许发送的数据包的数据类型。

服务器可以根据该数据包是否符合预设的流量控制条件,来确定如何对发送列表进行维护,从而控制数据包的发送情况,达到流量控制的目的。需要说明的是,如果不对数据包发送情况进行控制,则服务器接收到的数据包的个数即为目标用户所在终端需要接收到的数据包的个数,该和值即为该服务器需要发送的数据包的个数。因而,该数据包的个数影响的是终端的负载情况,该和值影响的是服务器的负载情况。服务器可以通过对发送列表进行维护,来控制数据包发送情况,从而可以有效地避免服务器以及终端过载,影响直播质量。

具体地,该数据包的个数以及该和值的统计结果不同时,服务器对该发送列表的维护过程则不同,该步骤(2)可以包括以下两种情况:

第一种情况、当该数据包的个数大于第四预设阈值和/或当该和值大于第五预设阈值时,服务器按照数据类型的优先级,将优先级排序中后预设位数的数据类型从该发送列表中删除。

第四预设阈值的设置可以由技术人员基于终端的处理能力确定,第五预设阈值的设置则可以由技术人员基于服务器的处理能力确定,例如,该第四预设阈值可以是100,该第五预设阈值可以是6万,当然,该第四预设阈值以及第五预设阈值也可以在后续上述服务器或终端的处理能力增强时或者基于实际使用情况进行调整,本发明对此不作具体限定。

在该一种情况中,只要该数据包的个数和该和值中至少一项符合预设的流量控制条件,服务器即可执行上述将优先级排序中后预设位数的数据类型从发送列表中删除的步骤,该预设位数可以由技术人员自由设置,本发明对此不作具体限定,具体地,该第一种情况可能包括以下三种场景:

第一种场景、该数据包的个数大于第四预设阈值,但该和值小于或等于第五预设阈值。

第二种场景、该和值大于第五预设阈值,但该数据包的个数小于或等于第四预设阈值。

第三种场景、该数据包的个数大于第四预设阈值,且该和值大于第五预设阈值。

该第一种场景中,数据包的个数过多可能会出现终端过载的情况,该第二种场景中,该和值过多可能会出现服务器过载的情况,而第三种场景中,可能终端与服务器均会出现过载现象,从而影响到直播质量,因而,服务器可以删除一部分数据包,以降低服务器以及终端的负载,保证直播质量。

在服务器对数据包进行筛选删除时,可以按照数据类型的优先级,将优先级排序中后预设位数的数据类型从该发送列表中删除,该数据类型的优先级根据该数据包的业务重要性设置。

具体地,可以将数据包的数据类型分为五类,其中,优先级排序可以为:礼物和排行榜变化是第一优先级;聊天信息是第二优先级;用户进出直播房间消息是第三优先级;关注主播以及分享主播是第四优先级;点赞是第五优先级。

当该数据包的个数和该和值满足上述任一项条件,服务器可以将优先级排序中后预设位数的数据包进行丢弃。例如,以预设位数为一位为例,服务器可以将第五优先级的数据类型为点赞的数据包进行丢弃,从而在保证更重要的业务数据完整的情况下,减少服务器需要发送的数据包个数,以及终端需要接收的数据包个数。需要说明的是,根据数据统计结果,用户数量较多的直播房间中的数据包几乎有一半数据包的数据类型为点赞,因而通过上述步骤可以减少直播房间中一半的数据包。

如果该服务器进行了上述删除操作后,数据包的个数以及该和值仍然符合上述预设的流量控制条件,服务器可以继续将该发送列表中优先级排序中后预设位数的数据类型进行删除。例如,该服务器将第五优先级的点赞数据类型从发送列表中删除,而服务器需要发送的数据包个数仍然大于第四预设阈值,或者,终端需要接收的数据包个数仍然大于第五预设阈值,则服务器可以继续从发送列表中将第四优先级的关注主播以及分享主播数据类型删除。

在一种可能实现方式中,服务器还可以将数据包的数据类型分为六类,其中,将上述第一优先级中的礼物根据礼物的价值分为两类,一种是普通礼物,一种是豪华礼物,则优先级排序还可以为:豪华礼物是第一优先级,普通礼物和排行榜变化是第二优先级;聊天信息是第三优先级;用户进出直播房间消息是第四优先级;关注主播以及分享主播是第五优先级;点赞是第六优先级。

在一种可能实现方式中,按照数据类型的优先级,将优先级排序中后预设位数的数据类型从该发送列表中删除之后,在该合包数据包中,保留一条数据类型为该优先级排序中后预设位数的数据类型的数据包。具体的,为了不影响直播质量,保证了直播数据类型的多样性,上述服务器将优先级排序中后预设位数的数据类型从该发送列表中删除之后,在该合包数据包中,服务器可以保留一条数据类型为该优先级排序中后预设位数的数据类型的数据包,使得上述删除的数据类型的数据包不会被全部删除,在减少数据包发送需求的同时,也保证了直播质量以及直播数据类型的多样性。

第二种情况、当该数据包的个数小于或等于第四预设阈值,且该和值小于或等于第五预设阈值时,服务器将上一个统计周期删除的优先级排序中后预设位数的数据类型重新添加在该发送列表中。

在该第二种情况中,如果该数据包的个数与该和值均不符合预设的流量控制条件,说明此时该直播房间的互动需求并没有超过服务器以及终端的负载,因而,服务器可以将上一个统计周期删除的优先级排序中后预设位数的数据类型重新添加在该发送列表中,这样可以在没有过载的情况下,尽量保证更多的数据包,从而提高直播质量,提升用户体验。

需要说明的是,上述流量控制过程是实时进行的,因而,服务器是通过实时的统计数据,对数据包的发送情况进行动态调整,从而保证服务器以及终端不过载,提高直播质量。

在一种可能实现方式中,服务器还可以在确定目标用户的数量大于第一预设阈值时,检测数据包的类型,当该数据包的类型为指定类型时,直接将该数据包发送至目标用户所在终端。例如,该指定类型可以是踢出房间数据类型。

208、当该目标用户的数量小于或者等于该第一预设阈值时,服务器将该数据包发送至目标用户所在终端。

该目标用户的数量小于或者第一预设阈值,说明该直播房间的规模较小,即使该直播房间的用户均在该直播房间中频繁操作,服务器接收到的数据包的数量以及该服务器需要发送的数据包的数量均不会太多,服务器完全有能力处理该直播房间中的数据包,不会影响到直播质量,则服务器可以直接将该数据包发送至目标用户所在终端。

该目标用户所在终端接收到服务器发送的数据包或者合包数据包时,可以对该数据包或合包数据包进行解析,得到业务数据内容,并在该目标用户所在终端上进行显示,从而用户可以看到该直播房间中的动态变化。

图6是本发明实施例提供的一种数据包发送方法的流程图,该图6为该数据包发送方法的一个具体示例,如图6所示,服务器在接收到数据包时,可以检测待接收数据包的目标用户的数量是否大于20人,如果否,则服务器可以直接发送该数据包,如果是,则服务器可以继续检测该数据包的数据类型是否是上述设置了优先级的数据类型,如果否,该数据包的数据类型可能是上述指定类型,例如踢出房间、进出房间,则服务器可以直接发送该数据包,如果是,则该服务器可以将该数据包与之前存储的数据包进行合并,得到合包数据包。服务器可以判断该合包数据包的数据包个数是否小于或者等于30,合包数据包的长度是否小于或等于4k字节,当前系统时间是否离上次数据包发送未超过1s,如果这三个条件中任一个的判断结果为否,则服务器可以发送该合包数据包,如果这三个条件的判断结果均为是,则服务器可以存储该合包数据包。另外,当计时器指示当前系统时间离上次检测时间超过1s,则服务器可以发送存储的合包数据包。根据测试结果,将数据包合并后再发送的方式,相较于直接发送数据包的方式,数据包发送性能提升了6倍。例如,直接发送数据包的方式每3s可以发送100个数据包,而将数据包合并后再发送的方式每3s可以发送600个数据包,上述数据仅为示例性说明,本发明对此不作具体限定。

图7是本发明实施例提供的一种应用场景的网络架构示意图,参见图7,由于直播应用可以覆盖多个国家,不同国家的网络环境具有异构化的特点,该服务器上可以存储有指定国家的服务器的地址,相应地,该服务器可以通过该指定国家的服务器向该指定国家的目标用户所在终端发送数据包,这样在指定国家部署加速点,可以解决国际带宽传输带来的传输效率低和传输质量低问题,从而提高了直播质量。例如,某直播应用的服务器集群可以部署在香港,该服务器集群则可以为香港互联网数据中心(internationaldatacorporation,idc)集群。该直播应用已经扩展到海外市场,马来西亚的用户和泰国的用户也可以使用该直播应用,则可以在马来西亚和泰国部署加速点集群,在该香港idc集群想要向海外用户发送数据包时,可以先将数据包发送至加速点集群,由加速点集群将数据包转发至其对应国家的用户。根据测试结果,通过部署上述加速点,可以使得海外用户的数据包传输时延降低一半。

本发明实施例中在需要向直播房间中的用户发送数据包之前,获取待接收数据包的目标用户的数量,当用户的数量很大时,对数据包进行合并后再发送,可以有效地减少服务器发送数据包的次数,从而降低了服务器的负载,提高了直播质量。

进一步地,对数据包进行合并后再发送,也可以有效地减少终端接收数据包的次数,从而降低了终端的负载,提高了直播质量。

进一步地,本发明实施例对数据包合并过程中仅增加很少的额外消耗,可以一次性向终端发送更多的数据包,从而减少了服务器发送数据包的次数,以及终端接收数据包的次数,降低了服务器以及终端的负载,从而提高了直播质量,提升了用户体验。

进一步地,本发明实施例通过三个维度的预设条件判断合包数据包的发送与否,保证了在不过多增加数据包的时延的情况下,尽可能多地减少服务器的发包次数以及终端的收包次数,降低了服务器以及终端的负载,从而避免影响直播质量的情况出现。

进一步地,本发明实施例通过实时统计数据包的接收和发送情况,并根据该接收和发送情况,对数据包的发送情况进行控制,从而可以有效地避免服务器以及终端过载,影响直播质量。

进一步地,本发明实施例通过保证更重要的业务数据完整的情况下,减少服务器需要发送的数据包个数,以及终端需要接收的数据包个数,降低了服务器以及终端的负载,从而避免影响直播质量的情况出现。

进一步地,本发明实施例通过在合包数据包中保留一条优先级排序中后预设位数的数据类型的数据包,保证了直播质量以及直播数据类型的多样性。

进一步地,本发明实施例通过在指定国家部署服务器,通过并通过该指定国家的服务器为该指定国家的用户发送数据包,可以解决国际带宽传输带来的传输效率低和传输质量低问题,从而提高了直播质量。

在实际应用中,该数据包发送方法除了可以应用于上述网络直播场景之外,还可以应用于用户群组中的消息发布、视频聊天或者语音聊天等场景,也即是上述目标用户可以是直播房间中的用户,也可以是用户群组中的用户。参见图8,在这些场景中,该数据包发送方法可以包括以下步骤:

801、当接收到数据包时,服务器获取待接收数据包的用户群组中用户的数量。

与步骤201同理,当用户群组中任一个用户退出用户群组、新用户加入用户群组、任一个用户发起群组内语音聊天、视频聊天或者是在该群组内发布消息等,该用户所在终端可以向服务器发送数据包,服务器接收到该数据包,可以检测用户群组的用户数量,该用户群组的用户数量即为上述步骤201中的待接收数据包的目标用户的数量,该目标用户可以是该用户群组中的在线用户数量。

802、当该用户群组中用户的数量大于第一预设阈值,且该服务器中存储有至少两个待发送的数据包时,服务器根据该至少两个待发送的数据包生成一个合包数据包。

803、当该合包数据包符合预设条件时,服务器将该合包数据包发送至该用户群组中的用户所在终端。

804、当该合包数据包不符合预设条件时,服务器存储该合包数据包。

805、当该用户群组用户的数量大于第一预设阈值,且该服务器中存储有单个待发送的数据包时,服务器确定该数据包是否符合预设条件,如果是,执行步骤806;如果否,执行步骤807。

806、当该数据包符合预设条件时,服务器将该数据包发送至目标用户所在终端。

807、当该数据包不符合预设条件时,服务器存储该数据包。

808、当该用户群组中用户的数量小于或者等于该第一预设阈值时,服务器将该数据包发送至用户群组中的用户所在终端。

该步骤802至808与上述步骤202至208同理,该步骤802至808中用户群组中的用户即为上述步骤202至208中的目标用户,而上述步骤202至208中的目标用户为直播房间中的用户。

本发明实施例中在需要向用户群组中的用户发送数据包之前,获取待接收数据包的目标用户的数量,当用户的数量很大时,对数据包进行合并后再发送,可以有效地减少服务器发送数据包的次数,从而降低了服务器的负载,提高了用户群组数据同步的可靠性。

上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。

图9是本发明实施例提供的一种数据包发送装置的结构示意图。该装置应用于服务器,参见图9,该装置包括:

检测模块901,用于获取待接收数据包的目标用户的数量;

合并模块902,用于当该目标用户的数量大于第一预设阈值,且该服务器中存储至少两个待发送的数据包时,根据该至少两个待发送的数据包生成一个合包数据包;

发送模块903,用于当该合包数据包符合预设条件时,将该合包数据包发送至该目标用户所在终端。

在一个实施例中,该合并模块902,用于:按照该至少两个待发送的数据包的接收时间,将该至少两个待发送的数据包合并为一个合包数据包,基于该至少合包数据包生成合包数据包的长度字段、合包命令字字段以及数据包个数字段。

在一个实施例中,该装置还包括:

确定模块,用于当该目标用户的数量大于第一预设阈值,且该服务器中存储单个待发送的数据包时,确定该数据包是否符合预设条件;

该发送模块903,还用于当该数据包符合预设条件时,将该数据包发送至该目标用户所在终端。

在一个实施例中,该装置还包括:

第二存储模块,用于当该合包数据包不符合预设条件时,存储该合包数据包。

在一个实施例中,该发送模块903,用于:

当该合包数据包中的数据包的个数大于第二预设阈值时,将该合包数据包发送至该目标用户所在终端;或,

当该合包数据包的长度大于第三预设阈值时,将该合包数据包发送至该目标用户所在终端;或,

当当前系统时间与上次数据包发送时间之间的时间间隔超过第一预设时间间隔时,将该合包数据包发送至该目标用户所在终端。

在一个实施例中,该发送模块903,还用于当该目标用户的数量小于或者等于该第一预设阈值时,将该数据包发送至该目标用户所在终端。

在一个实施例中,该发送模块903,还用于:

定时检测该服务器中是否存储有待发送的数据包;

当计时器指示当前系统时间与上次检测时间之间的时间间隔超过第二预设时间间隔,且该服务器中存储有该待发送的数据包时,将该数据包发送至该目标用户所在终端。

在一个实施例中,该装置还包括:

统计模块,用于在每个统计周期内,实时统计该每个统计周期内接收到的数据包的个数,以及待接收每个数据包的目标用户的数量的和值;

列表维护模块,用于根据该数据包的个数和/或该和值,对发送列表进行维护,该发送列表中包括允许发送的数据包的数据类型。

在一个实施例中,该列表维护模块,用于:

当该数据包的个数大于第四预设阈值和/或当该和值大于第五预设阈值时,按照数据类型的优先级,将优先级排序中后预设位数的数据类型从该发送列表中删除;

当该数据包的个数小于或等于第四预设阈值,且该和值小于或等于第五预设阈值时,将上一个统计周期删除的优先级排序中后预设位数的数据类型重新添加在该发送列表中。

在一个实施例中,该装置还包括:

保留模块,用于在该合包数据包中,保留一条数据类型为该优先级排序中后预设位数的数据类型的数据包。

在一个实施例中,该数据类型的优先级根据该数据包的业务重要性设置。

在一个实施例中,该服务器上存储有指定国家的服务器的地址,相应地,该发送模块903,还用于通过该指定国家的服务器向该指定国家的目标用户所在终端发送数据包。

在一个实施例中,该目标用户为用户群组中的用户,或该目标用户为直播房间中的用户。

本发明实施例提供的装置在需要向用户发送数据包之前,获取待接收数据包的目标用户的数量,当用户的数量很大时,对数据包进行合并后再发送,可以有效地减少服务器发送数据包的次数,从而降低了服务器的负载,提高了直播质量或者用户群组数据同步的可靠性,提高了服务质量。

需要说明的是:上述实施例提供的数据包发送装置在发送数据包时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据包发送装置和数据包发送方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图10是本发明实施例提供的一种服务器的结构示意图,该服务器1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)1001和一个或一个以上的存储器1002,其中,该存储器1002中存储有至少一条指令或计算机程序,该至少一条指令或计算机程序由该处理器1001加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。

在示例性实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,例如存储有计算机程序的存储器,上述计算机程序被处理执行时实现上述数据包发送方法。例如,上述计算机可读存储介质可以是只读内存(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、只读光盘(compactdiscread-onlymemory,cd-rom)、磁带、软盘和光数据存储设备等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

上述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1