服务端向客户端推送数据的方法和装置制造方法及图纸

技术编号:22298441 阅读:39 留言:0更新日期:2019-10-15 07:00
本发明专利技术公开了一种服务端向客户端推送数据的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:获取客户端可创建的处理线程的个数;生成与客户端相对应的数据对象,并将生成的数据对象添加到推送集合中;每次从推送集合中取出一个数据对象,并通过取出的数据对象将数据发送给对应的客户端,然后,将该数据对象放入等待集合中;待对应的客户端数据处理完成后,从等待集合中取出该数据对象并将该数据对象放入推送集合中,以便再次进行数据推送。该实施方式能够差异化对待每个客户端,且能够感知每个客户端处理能力的上限,避免客户端负载过高,以及使所有客户端都能公平的接收到服务端推送的数据。

Method and Device of Server Pushing Data to Client

【技术实现步骤摘要】
服务端向客户端推送数据的方法和装置
本专利技术涉及计算机
,尤其涉及一种服务端向客户端推送数据的方法和装置。
技术介绍
客户端/服务器(Client/Server)结构,简称C/S结构,是一种基于网络的系统体系架构结构。在C/S结构的系统中,应用程序分为客户端和服务端两大部分。客户端部分为每个用户所专有,而服务端则由所有用户共享其信息与功能。当需要把服务端上的大量数据源源不断的推送给若干客户端去处理时,若服务端需要推送的数据量非常大,而且客户端处理数据又非常耗时,那么就需要一种高效的服务端向客户端推送数据的负载均衡技术,在每个客户端可接受的负载压力范围之内,让服务端尽可能多的推送数据给客户端。如图1所示,现有的服务端向客户端推送数据的过程如下:1、服务端接收到由若干个客户端发来的数据推送请求,以请求服务端将数据推送给客户端;2、服务端从数据集合中选取一条数据;3、服务端选择一个客户端并推送数据,然后,服务端重复执行步骤2和3,以实现依次向若干客户端推送数据;4、客户端处理接收到的数据。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:当服务端需要推送的数据量非常大,而且客户端处理数据又非常耗时的时候,现有的技术方案存在以下三个缺点:1、每个客户端机器的性能不一样,而服务端没有对这些客户端差别化对待;2、当服务端向客户端推送数据时,无法感知客户端处理数据的能力极限,可能会造成低性能的客户端负载过高而卡死;3、服务端的数据推送没有考虑公平性,无法保证所有客户端都能公平的接收到服务端发送的数据。
技术实现思路
有鉴于此,本专利技术实施例提供一种服务端向客户端推送数据的方法和装置,能够根据客户端机器的性能,差异化对待每个客户端,且能够感知每个客户端处理能力的上限,避免客户端负载过高,以及公平地进行数据推送,使所有客户端都能公平的接收到服务端推送的数据。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种服务端向客户端推送数据的方法。一种服务端向客户端推送数据的方法,包括:获取客户端可创建的处理线程的个数;生成与所述客户端相对应的数据对象,并将生成的数据对象添加到推送集合中,其中,所述生成的数据对象的个数与所述处理线程的个数相关;每次从所述推送集合中取出一个数据对象,并通过取出的数据对象将数据发送给对应的客户端,然后,将所述数据对象放入等待集合中;待所述对应的客户端数据处理完成后,从所述等待集合中取出所述数据对象并将所述数据对象放入所述推送集合中,以便再次进行数据推送。可选地,所述推送集合中的数据对象以队列的形式保存,并且,将生成的数据对象添加到所述队列中;每次从所述队列的头部取出一个数据对象,并通过取出的数据对象将数据发送给对应的客户端,然后,将所述数据对象放入等待集合中;以及,待所述对应的客户端数据处理完成后,从所述等待集合中取出所述数据对象并将所述数据对象放入所述队列的尾部,以便再次进行数据推送。可选地,将生成的数据对象添加到所述队列中之后,还包括:将所述队列中的数据对象进行乱序处理。可选地,所述客户端可创建的处理线程的个数是根据所述客户端的性能数据确定的。根据本专利技术实施例的另一方面,提供了一种服务端向客户端推送数据的装置。一种服务端向客户端推送数据的装置,包括:信息获取模块,用于获取客户端可创建的处理线程的个数;对象添加模块,用于生成与所述客户端相对应的数据对象,并将生成的数据对象添加到推送集合中,其中,所述生成的数据对象的个数与所述处理线程的个数相关;数据推送模块,用于每次从所述推送集合中取出一个数据对象,并通过取出的数据对象将数据发送给对应的客户端,然后,将所述数据对象放入等待集合中;对象循环模块,用于待所述对应的客户端数据处理完成后,从所述等待集合中取出所述数据对象并将所述数据对象放入所述推送集合中,以便再次进行数据推送。可选地,所述推送集合中的数据对象以队列的形式保存,并且,将生成的数据对象添加到所述队列中;每次从所述队列的头部取出一个数据对象,并通过取出的数据对象将数据发送给对应的客户端,然后,将所述数据对象放入等待集合中;以及,待所述对应的客户端数据处理完成后,从所述等待集合中取出所述数据对象并将所述数据对象放入所述队列的尾部,以便再次进行数据推送。可选地,还包括乱序处理模块,用于:在将生成的数据对象添加到所述队列中之后,将所述队列中的数据对象进行乱序处理。可选地,所述客户端可创建的处理线程的个数是根据所述客户端的性能数据确定的。根据本专利技术实施例的又一方面,提供了一种服务端向客户端推送数据的电子设备。一种服务端向客户端推送数据的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本专利技术实施例所提供的服务端向客户端推送数据的方法。根据本专利技术实施例的再一方面,提供了一种计算机可读介质。一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本专利技术实施例所提供的服务端向客户端推送数据的方法。上述专利技术中的一个实施例具有如下优点或有益效果:通过获取客户端可创建的处理线程的个数,并根据处理线程的个数生成相应个数的与客户端对应的数据对象,可以使服务端根据每个客户端的性能数据来为每个客户端分配不同的负载,使得每个客户端都能在自己能力范围之内合理的处理数据;在推送数据时,通过每次从推送集合中取出一个数据对象,并通过取出的数据对象将数据发送给对应的客户端,并将数据对象放入等待集合中,以及待对应的客户端处理完成后,从等待集合中取出数据对象并放入推送集合中,可以确保服务端能够感知每个客户端处理能力的上限,服务端可以在每个客户端处理能力的上限范围之内向客户端推送数据,从而避免了客户端负载过高,实现了服务端向客户端推送数据的负载均衡。并且,通过将推送集合中的数据对象以队列的形式进行保存,推送线程从发送队列的头部取出数据对象,且在客户端处理完成后将数据对象放入发送队列的尾部,由于队列的先进先出的特性,可以确保每个客户端的每个线程能够公平的接收到服务端推送过来的数据。另外,每当有新的客户端需要与服务端连接以请求推送数据时,在服务端与该客户端建立连接,将该客户端对应的数据对象添加到推送队列后,推送队列都会进行一次乱序处理,从而避免在推送数据时,压力暂时集中在一个客户端上,这样即可使得每个客户端的负载基本是均衡的。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是现有的服务端向客户端推送数据的过程的示意图;图2是本专利技术一个实施例的服务端向客户端推送数据的原理示意图;图3是根据本专利技术实施例的服务端向客户端推送数据的方法的主要流程的示意图;图4是本专利技术一个实施例的客户端与服务端建立连接的过程的原理示意图;图5是本专利技术一个实施例的服务端生成的推送队列的结构示意图;图6是本专利技术一个实施例的服务端生成的推送队列进行乱序处理后的推送队列示意图;图7是本专利技术一个实施例的数据推送的过程的示意图;图8是根据本专利技术实施例的服务端向客户端推送数据的装置的主要模块的示意图;图9是本专利技术实施例可以应用于其中的示例性系统架构图;图10是适本文档来自技高网...

【技术保护点】
1.一种服务端向客户端推送数据的方法,其特征在于,包括:获取客户端可创建的处理线程的个数;生成与所述客户端相对应的数据对象,并将生成的数据对象添加到推送集合中,其中,所述生成的数据对象的个数与所述处理线程的个数相关;每次从所述推送集合中取出一个数据对象,并通过取出的数据对象将数据发送给对应的客户端,然后,将所述数据对象放入等待集合中;待所述对应的客户端数据处理完成后,从所述等待集合中取出所述数据对象并将所述数据对象放入所述推送集合中,以便再次进行数据推送。

【技术特征摘要】
1.一种服务端向客户端推送数据的方法,其特征在于,包括:获取客户端可创建的处理线程的个数;生成与所述客户端相对应的数据对象,并将生成的数据对象添加到推送集合中,其中,所述生成的数据对象的个数与所述处理线程的个数相关;每次从所述推送集合中取出一个数据对象,并通过取出的数据对象将数据发送给对应的客户端,然后,将所述数据对象放入等待集合中;待所述对应的客户端数据处理完成后,从所述等待集合中取出所述数据对象并将所述数据对象放入所述推送集合中,以便再次进行数据推送。2.根据权利要求1所述的方法,其特征在于,所述推送集合中的数据对象以队列的形式保存,并且,将生成的数据对象添加到所述队列中;每次从所述队列的头部取出一个数据对象,并通过取出的数据对象将数据发送给对应的客户端,然后,将所述数据对象放入等待集合中;以及,待所述对应的客户端数据处理完成后,从所述等待集合中取出所述数据对象并将所述数据对象放入所述队列的尾部,以便再次进行数据推送。3.根据权利要求2所述的方法,其特征在于,将生成的数据对象添加到所述队列中之后,还包括:将所述队列中的数据对象进行乱序处理。4.根据权利要求1所述的方法,其特征在于,所述客户端可创建的处理线程的个数是根据所述客户端的性能数据确定的。5.一种服务端向客户端推送数据的装置,其特征在于,包括:信息获取模块,用于获取客户端可创建的处理线程的个数;对象添加模块,用于生成与所述客户端相对应的数据对象,并将生成的数据对象添加到推送集合中,其中,所述生成的数据...

【专利技术属性】
技术研发人员:程晓明
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1