本发明专利技术公开一种基于非阻塞队列的展示数据实时推送系统和方法,涉及数据通信中的数据推送技术,改进了原有数据推送到浏览器的方式,由轮询读取共享内存的方式,改为利用非阻塞队列监听公共数据的产生,在会话安全的情况下,并根据请求的会话信息,将计算结果数据有区别的实时主动推送到浏览器进行展示。该系统由WEB组件、数据路由、公共监听器、会话监听器、数据池以及缓存管理器六个技术组件构成。本发明专利技术可以在会话级别做到个性化的推送,有效的提高内存的使用率,提高数据推送的实时性,进而提高资源使用效率。
【技术实现步骤摘要】
本专利技术涉及数据通信中的数据推送技术,具体的说是一种基于非阻塞队列的展示数据实时推送系统和方法。
技术介绍
目前,应用服务器端和客户端数据推送技术中,推送技术对于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组件的请求,存储监听器的请求路由表,并根据请求的参数判断请求类型,根据请求路由表转发到对应的监听器。由公共监听器和会话监听器启动时,主动注册能够监听的信息到请求路由表中。所述公共监听器负责全局数据的监听回调;当全局数据有任何变化时都会触发公共监听器;启动时,内建非阻塞监听本文档来自技高网...

【技术保护点】
一种基于非阻塞队列的展示数据实时推送系统,其特征在于, 其系统架构主要包括:WEB组件、数据路由、公共监听器、会话监听器、数据池以及缓存管理器六个技术组件;其中, WEB组件负责与客户端浏览器通讯,WEB组件接受浏览器的http请求,数据路由接收WEB组件的请求,并判断请求类型,将请求转发到对应的监听器;公共监听器负责监听回调全局数据,接受数据路由转发过来的请求,并在数据发生变化时,响应请求;所述会话监听器负责监听回调明细数据,接受数据路由转发过来的请求;所述数据池负责生成数据索引,调用缓存管理器进行数据存储;所述缓存管理器负责接收数据,执行序列化,并根据缓存级别进行存储,根据数据索引提供反序列化之后的数据。
【技术特征摘要】
1.一种基于非阻塞队列的展示数据实时推送系统,其特征在于, 其系统架构主要包括:WEB组件、数据路由、公共监听器、会话监听器、数据池以及缓存管理器六个技术组件;其中, WEB组件负责与客户端浏览器通讯,WEB组件接受浏览器的http请求,数据路由接收WEB组件的请求,并判断请求类型,将请求转发到对应的监听器;公共监听器负责监听回调全局数据,接受数据路由转发过来的请求,并在数据发生变化时,响应请求;所述会话监听器负责监听回调明细数据,接受数据路由转发过来的请求;所述数据池负责生成数据索引,调用缓存管理器进行数据存储;所述缓存管理器负责接收数据,执行序列化,并根据缓存级别进行存储,根据数据索引提供反序列化之后的数据。2. 根据权利要求1所述一种基于非阻塞队列的展示数据实时推送系统,其特征在于, WEB组件接受浏览器的http请求,从http请求中获取参数,并调用其他技术组件;其他技术组件返回请求内容后,按照格式组装返回请求内容发回给浏览器。3.根据权利要求2所述一种基于非阻塞队列的展示数据实时推送系统和方法,其特征在于, 所述数据路由负责接收WEB组件的请求,存储监听器的请求路由表,并根据请求的参数判断请求类型,根据请求路由表转发到对应的监听器。4.根据权利要求3所述一种基于非阻塞队列的展示数据实时推送系统,其特征在于, 当全局数据有任何变化时,触发公共监听器启动,内建非阻塞监听队列;当数据池中数据有变化时,数据池会主动把数据索引放入非阻塞监听队列。5.根据权利要求4所述一种基于非阻塞队列的展示数据实时推送系统,其特征在于, 当请求需要监听的明细数据发生变化时,会触发会话监听器中的对应监听线程;接受数据路由转发过来的请求,单独建立线程,创建非阻塞监听队列,进行监听;在数据池中的数据发生变化时,数据池主动把数据索引放入非阻塞监听队列,会话监听器响应请求。6.根据权利要求5所述一种基于非阻塞队列的展示数据实时推送系统,其特征在于, 所述数据池负责接收系统中其他组件的计算结果,建立计算结果的数据索引,并分发到对应的监听器中;计算结果序列化后,通过缓存管理器进行数据存储;当监听器被触发时,持有数据索引从数据池中获取数据,数据池根...
【专利技术属性】
技术研发人员:张田,
申请(专利权)人:浪潮软件股份有限公司,
类型:发明
国别省市:山东;37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。