一种基于非阻塞队列的展示数据实时推送系统和方法与流程

文档序号:11879107阅读:207来源:国知局

技术领域

本发明涉及数据通信中的数据推送技术,具体的说是一种基于非阻塞队列的展示数据实时推送系统和方法。



背景技术:

目前,应用服务器端和客户端数据推送技术中,推送技术对于long-polling和websocket两种数据推送实现方式存在较大不同, long-polling基于内存共享,轮询请求查询内存中的数据;websocket基于实时监听,建立监听后,当数据变化后,实时调用接口推送。目前的推送技术对两种方式的数据支持并不统一,常常要实现两套后台,而且,websocket的推送方式,数据推送过于频繁,会把服务器端网络塞死,会影响到客户端浏览器的正常运行。



技术实现要素:

本发明针对目前技术发展的需求和不足之处,提供一种基于非阻塞队列的展示数据实时推送系统和方法。

本发明所述一种基于非阻塞队列的展示数据实时推送系统和方法,解决上述技术问题采用的技术方案如下:所述一种基于非阻塞队列的展示数据实时推送系统,其系统架构主要包括:WEB组件、数据路由、公共监听器、会话监听器、数据池以及缓存管理器六个技术组件;其中, WEB组件负责与客户端浏览器通讯,WEB组件接受浏览器的http请求,数据路由接收WEB组件的请求,并判断请求类型,将请求转发到对应的监听器;公共监听器负责监听回调全局数据,接受数据路由转发过来的请求,并在数据发生变化时,响应请求;所述会话监听器负责监听回调明细数据,接受数据路由转发过来的请求;所述数据池负责生成数据索引,调用缓存管理器进行数据存储;所述缓存管理器负责接收数据,执行序列化,并根据缓存级别进行存储,根据数据索引提供反序列化之后的数据。

优选的, WEB组件接受浏览器的http请求,从http请求中获取参数,并调用其他技术组件;其他技术组件返回请求内容后,按照格式组装返回请求内容发回给浏览器。

优选的,所述数据路由负责接收WEB组件的请求,存储监听器的请求路由表,并根据请求的参数判断请求类型,根据请求路由表转发到对应的监听器。

优选的,当全局数据有任何变化时,触发公共监听器启动,内建非阻塞监听队列;当数据池中数据有变化时,数据池会主动把数据索引放入非阻塞监听队列。

优选的,当请求需要监听的明细数据发生变化时,会触发会话监听器中的对应监听线程;接受数据路由转发过来的请求,单独建立线程,创建非阻塞监听队列,进行监听;在数据池中的数据发生变化时,数据池主动把数据索引放入非阻塞监听队列,会话监听器响应请求。

优选的,所述数据池负责接收系统中其他组件的计算结果,建立计算结果的数据索引,并分发到对应的监听器中;计算结果序列化后,通过缓存管理器进行数据存储;当监听器被触发时,持有数据索引从数据池中获取数据,数据池根据数据索引,从缓存管理器中获取数据响应请求。

一种基于非阻塞队列的展示数据实时推送方法,利用非阻塞队列监听公共数据的产生,并根据请求的会话信息,将计算结果数据有区别的实时主动推送到浏览器进行展示;具体过程包括如下步骤:

1)客户端浏览器发起请求,请求获取实时计算结果数据;

2)WEB组件接受请求,并从请求中获取必要的参数,组装后,调用数据路由;进行全局监听或个性化监听。

优选的,所述全局监听包括如下步骤:

支线过程a1:数据路由根据请求监听的内容,根据请求路由表判断此请求,需要路由到公共监听器;

支线过程a2:公共监听器接受请求后,把请求加入到回调列表中;当数据池发送数据索引到监听器后,监听器调用数据池,获取数据;

支线过程a3:数据池根据传入的索引信息,调用缓存管理器获取数据;

支线过程a4:缓存管理器根据传入的索引信息,反序列化数据后,返回给公共监听器;

支线过程a5:公共监听器把从缓存管理器获取的数据返回给WEB组件;

支线过程a6:WEB组件接受数据后,根据约定的格式组装数据并返回给浏览器。

优选的,所述个性化监听包括如下步骤:

支线过程b1:数据路由根据请求监听的内容,根据请求路由表判断此请求需要路由到会话监听器;

支线过程b2:会话监听器接受请求后,根据请求中携带的会话ID,获取对应的非阻塞监听队列;当数据池发送数据索引到监听器后,监听器调用数据池,获取数据。

支线过程b3:数据池根据传入的数据索引,调用缓存管理器获取数据;

支线过程b4:缓存管理器根据传入的索引信息,反序列化数据后,返回给会话监听器;

支线过程b5:会话监听器把从缓存管理器获取的数据返回给WEB组件;

支线过程b6:WEB组件接受数据后,根据约定的格式组装数据并返回给浏览器。

优选的,支线过程b2中,若获取不到,则为新的会话,创建非阻塞监听队列,把请求加入到新创建监听队列的回调列表中;若能获取到,则直接把请求加入到对应监听队列的回调列表中。

本发明所述一种基于非阻塞队列的展示数据实时推送系统和方法与现有技术相比具有的有益效果是:本发明用于实时计算开发过程中,展示应用由服务器端向客户端(浏览器)推送会话级别的实时计算结果数据;能够有效解决现有技术中存在的技术问题,能够避免重复开发、提高开发效率;可以在会话级别做到个性化的推送,有效的提高内存的使用率,提高数据推送的实时性,进而提高资源使用效率。

说明书附图

附图1为所述基于非阻塞队列的展示数据实时推送系统的运行示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,对本发明所述一种基于非阻塞队列的展示数据实时推送系统和方法进一步详细说明。

为了解决在实时计算技术框架下,如何高效、准确、在会话级别实现数据实时推送到客户端的问题,本发明公开了一种基于非阻塞队列的展示数据实时推送系统和方法,改进了原有数据推送到浏览器的方式,由轮询读取共享内存的方式,改为使用非阻塞监听队列作为核心技术进行实现。本发明利用非阻塞队列监听公共数据的产生,在会话安全的情况下,并根据请求的会话信息,将计算结果数据有区别的实时主动推送到浏览器进行展示。

实施例:

本实施例所述一种基于非阻塞队列的展示数据实时推送系统,其系统架构主要包括:WEB组件、数据路由、公共监听器、会话监听器、数据池以及缓存管理器技术六大组件;其中,所述WEB组件负责与客户端浏览器通讯,WEB组件接受浏览器的http请求,数据路由接收WEB组件的请求,并判断请求类型,将请求转发到对应的监听器;所述公共监听器负责监听回调全局数据,接受数据路由转发过来的请求,并在数据发生变化时,响应请求;所述会话监听器负责监听回调明细数据,接受数据路由转发过来的请求;所述数据池负责生成数据索引,调用缓存管理器进行数据存储;所述缓存管理器负责接收数据,执行序列化,并根据缓存级别进行存储,根据数据索引提供反序列化之后的数据。

所述WEB组件负责与客户端浏览器通讯。WEB组件接受浏览器的http请求,从http请求中获取参数,并调用其他技术组件;其他技术组件返回请求内容后,按照格式组装返回请求内容发回给浏览器。这里,格式是各个项目实施时的约定格式,各个项目不同;通常都采用json数据格式。

所述数据路由负责接收WEB组件的请求,存储监听器的请求路由表,并根据请求的参数判断请求类型,根据请求路由表转发到对应的监听器。由公共监听器和会话监听器启动时,主动注册能够监听的信息到请求路由表中。

所述公共监听器负责全局数据的监听回调;当全局数据有任何变化时都会触发公共监听器;启动时,内建非阻塞监听队列,当数据池中数据有变化时,数据池会主动把数据索引放入非阻塞监听队列。接受数据路由转发过来的请求,并在数据发生变化时,响应请求。公共监听器每次请求最长保持时间为10秒,超过此时间的请求,会被主动断开,以保持监听器的性能。所述全局数据包括:监听组件发生状态变化的数据、抽象层次最高的汇总数据、需要广播的明细数据,全局数据由数据池管理。

所述会话监听器是根据会话创建的监听器,负责明细数据的监听回调;当请求需要监听的明细数据发生变化时,都会触发会话监听器中的对应监听线程;接受数据路由转发过来的请求,单独建立线程,创建非阻塞监听队列,进行监听,并在数据池中的数据发生变化时,数据池会主动把数据索引放入非阻塞监听队列,会话监听器此时会响应请求。会话监听器每次请求最长保持时间为10秒,超过此时间的请求,会被主动断开,以保持监听器的性能。所述明细数据是指除全局数据外,其他数据池中的数据,明细数据由数据池管理。

所述数据池负责接收系统中其他组件的计算结果,建立计算结果的数据索引,并分发到对应的监听器中,计算结果序列化后,通过缓存管理器进行数据存储。当监听器被触发时,持有数据索引从数据池中获取数据,数据池根据数据索引,从缓存管理器中获取数据响应请求。

所述缓存管理器负责接收数据,执行序列化,并根据缓存级别进行存储,根据数据索引提供反序列化之后的数据;缓存级别分三级:本地文件存储,本地内存存储,高速缓存存储。缓存管理器存储后的数据引用与传入的索引信息建立键值对,保存在内存中。数据池持有索引信息调用缓存管理器获取反序列化之后的数据。

采用本实施例所述展示数据实时推送系统,实现一种展示数据实时推送方法,该方法具体实现过程包括如下步骤:

1)客户端浏览器发起请求,请求获取实时计算结果数据;这里请求是long-polling或websocket技术实现的,long-polling实现是指通过rest风格的http调用,通过轮询的方式不间断的获取实时计算结果数据; websocket实现是指通过建立浏览器和服务器端的socket连接,通过socket连接,服务器主动推送数据到浏览器端;

2)WEB组件接受请求,并从请求中获取必要的参数,组装后,调用数据路由;如附图1所示:分为全局监听和个性化监听两种监听种类。

所述全局监听主要包括如下过程:支线过程a1、支线过程a2、支线过程a3、支线过程a4、支线过程a5以及支线过程a6;如附图1所示:

支线过程a1:数据路由根据请求监听的内容,根据请求路由表判断此请求,需要路由到公共监听器。所述请求路由表的数据来源于公共监听器和会话监听器启动时的主动注册;

支线过程a2:公共监听器接受请求后,把请求加入到回调列表中;当数据池发送数据索引到监听器后,监听器调用数据池,获取数据;

支线过程a3:数据池根据传入的索引信息,调用缓存管理器获取数据;

支线过程a4:缓存管理器根据传入的索引信息,反序列化数据后,返回给公共监听器;

支线过程a5:公共监听器把从缓存管理器获取的数据返回给WEB组件;

支线过程a6:WEB组件接受数据后,根据约定的格式组装数据并返回给浏览器。

所述个性化监听主要包括如下过程:支线过程b1、支线过程b2、支线过程b3、支线过程b4、支线过程b5以及支线过程b6;如附图1所示:

支线过程b1:数据路由根据请求监听的内容,根据请求路由表判断此请求,需要路由到会话监听器;

支线过程b2:会话监听器接受请求后,根据请求中携带的会话ID,获取对应的非阻塞监听队列。若获取不到,则为新的会话,创建非阻塞监听队列,把请求加入到新创建监听队列的回调列表中;若能获取到,则直接把请求加入到对应监听队列的回调列表中。当数据池发送数据索引到监听器后,监听器调用数据池,获取数据。

支线过程b3:数据池根据传入的索引信息,调用缓存管理器获取数据;

支线过程b4:缓存管理器根据传入的索引信息,反序列化数据后,返回给会话监听器;

支线过程b5:会话监听器把从缓存管理器获取的数据返回给WEB组件;

支线过程b6:WEB组件接受数据后,根据约定的格式组装数据并返回给浏览器。

上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

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