CN112995347A - 实现端对端实时数据展示的方法、装置、设备及存储介质 - Google Patents
实现端对端实时数据展示的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112995347A CN112995347A CN202110508954.3A CN202110508954A CN112995347A CN 112995347 A CN112995347 A CN 112995347A CN 202110508954 A CN202110508954 A CN 202110508954A CN 112995347 A CN112995347 A CN 112995347A
- Authority
- CN
- China
- Prior art keywords
- thread pool
- data
- server
- pool group
- 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
Images
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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种实现端对端实时数据展示的方法、装置、设备及存储介质,所述方法包括基于服务器发送事件SSE技术建立与客户端的连接管道;在数据变动发生的情况下,由服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组;所述业务线程池组响应所述数据变动通知消息,利用交互线程池组将变动后的数据通过所述连接管道推送给客户端。本发明采用异步无阻塞的方式降低了数据推送的时延,实现了实时推送,服务器端使用少量的线程,减少了内存的占用。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种实现端对端实时数据展示的方法、装置、设备及存储介质。
背景技术
随着计算机网络的发展,端对端数据展示的应用场景越来越多,例如即时聊天和息通知等场景。
现有的端对端数据展示的方法包括:客户端使用Ajax技术定时轮询服务器端获取实时数据;使用网络套接字WebSocket双开工网络技术建立客户端与服务器端之间的通信渠道,通过该通讯渠道获取实时数据;客户端和服务器端之间采用请求响应的阻塞交互模式,同时服务器端采用传统阻塞式方式从数据库获取数据。
使用Ajax技术客户端定时轮询向服务器端请求数据,无论是否有数据,服务器端都需要查询数据库,客户端向服务器端发起请求的间隔时间不好确定,时间短则占用网络资源过高,并且服务器端无谓处理请求,造成性能浪费,时间长则实时性延迟过高,用户体验不佳。使用WebSocket双开工网络技术建立客户端与服务器端之间的通信渠道,然后服务器端向客户端推送信息,由于WebSocket是全双工通道,可以双向通信,即客户端也可以向服务器发送信息,这样就相当于变成了另一次HTTP请求,增加了网络带宽的浪费和网络资源消耗,而且WebSocket是一个独立协议,相对复杂,需要大量的定制开发以便支持自定义发送的消息类型及断线重连等异常情况,同时,一些具有数据包检查功能的企业防火墙会拒绝WebSocket连接的建立。对于传统的基于Web的应用开发,客户端和服务器端之间采用的是请求响应的阻塞交互模式,客户端发出请求,服务器端根据收到的请求来生成相应的响应,客户端再对收到的响应进行处理,展现给用户,同时,在服务器端与数据库交互过程中,受限于传统驱动程序的套接字输入输出SocketIO阻塞机制,会创建更多的线程,更多的线程调度,竞争和导致系统缓慢。高吞吐的应用程序需要仔细校准,以避免线程过多和高延迟。现有的技术存在延迟高和资源占用多的问题。
发明内容
本发明提供一种实现端对端实时数据展示的方法,用以解决现有技术中延迟高和资源占用多的缺陷,使端对端实时数据展示过程中使用少量线程和较小内存占用,并降低端对端实时数据展示过程的时延。
本发明提供一种实现端对端实时数据展示的方法,应用于服务器端,包括:
基于服务器发送事件SSE技术建立与客户端的连接管道;
在数据变动发生的情况下,由服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组;
所述业务线程池组响应所述数据变动通知消息,利用交互线程池组将变动后的数据通过所述连接管道推送给客户端。
根据本发明提供的一种实现端对端实时数据展示的方法,所述基于服务器发送事件SSE技术建立与客户端的连接管道,包括:
运行服务器端应用程序,创建交互线程池组、监听线程池组和通知线程池组;
启动分布式消息传递引擎;
其中,所述服务器端应用程序是通过在服务器端安装支持响应式Reactor的软件开发工具包、基于所述软件开发工具包创建的支持异步事件驱动的应用程序,所述服务器端应用程序中添加了响应式支持的相关依赖包;
所述交互线程池组用于维护服务器端与客户端的连接;
所述监听线程池组用于监听数据变动;
所述通知线程池组用于广播通知数据变动。
根据本发明提供的一种实现端对端实时数据展示的方法,所述创建交互线程池组、监听线程池组和通知线程池组,包括:
所述服务器端应用程序通过执行器Executor 线程相应方法创建所述交互线程池组;
所述服务器端应用程序基于所述交互线程池组,创建服务器端与客户端的连接相应的控制器Controller方法;
所述服务器端应用程序添加分布式消息传递引擎相关依赖包;
所述服务器端应用程序通过Executor 线程相应方法创建所述监听线程池组,并绑定分布式消息传递引擎流应用程序接口API;
所述服务器端应用程序通过Executor 线程相应方法创建所述通知线程池组,并绑定分布式消息传递引擎流API;
其中,所述Controller方法的返回值为支持SSE技术的Flux类型,所述控制器方法中添加了第一注解和第二注解,所述第一注解用于指示所有主机的跨域标头,所述第二注解用于指示服务器端支持发送具有文本或事件流的数据类型。
根据本发明提供的一种实现端对端实时数据展示的方法,所述由服务器端的发起数据变动的业务进程利用所述通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组,包括:
服务器端的发起数据变动的业务进程通过所述通知线程池组向分布式消息传递引擎发送数据变动通知消息;
所述监听线程池组基于所述分布式消息传递引擎接收所述数据变动通知消息,并将所述数据变动通知消息发送给所述业务线程池组。
根据本发明提供的一种实现端对端实时数据展示的方法,所述业务线程池组响应所述数据变动通知消息,利用所述交互线程池组将变动后的数据通过所述连接管道推送给客户端,包括:
所述业务线程池组接收到所述数据变动通知消息,查询服务器端数据库获取变动后的数据;
对所述变动后的数据进行组装,获得经过组装的数据,将所述经过组装的数据发送给所述交互线程池组;
所述交互线程池组将所述经过组装的数据通过所述连接管道推送给客户端。
本发明提供一种实现端对端实时数据展示的方法,其特征在于,应用于客户端,包括:
基于服务器发送事件SSE技术建立与服务器端的连接管道;
通过所述连接管道接收服务器端发送的数据。
根据本发明提供的一种实现端对端实时数据展示的方法,所述基于服务器发送事件SSE技术建立服务器端与客户端的连接管道,包括:
运行客户端应用程序;
其中,所述客户端应用程序是在客户端创建的响应式应用程序,所述客户端应用程序通过EventSource启动所述客户端到服务器端端点的连接并进行数据监听。
本发明提供一种实现端对端实时数据展示的装置,包括:
第一连接单元,用于基于服务器发送事件SSE技术建立与客户端的连接管道;
数据变动通知单元,用于在数据变动发生的情况下,由服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组;
数据变动响应单元,用于数据变动所述业务线程池组响应所述数据变动通知消息,利用交互线程池组将变动后的数据通过所述连接管道推送给客户端。
本发明提供一种实现端对端实时数据展示的装置,包括:
第二连接单元,用于基于服务器发送事件SSE技术建立与服务器端的连接管道;
数据接收单元,用于通过所述连接管道接收服务器端发送的数据。
本发明提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现所述实现端对端实时数据展示的方法的步骤。
本发明提供一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现所述实现端对端实时数据展示的方法的步骤。
本发明提供的实现端对端实时数据展示的方法,基于SSE技术建立与客户端的连接管道,服务器端采用异步无阻塞的方式,降低了数据推送的时延,实现了实时推送,服务器端使用少量的线程,减少了内存的占用。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的实现端对端实时数据展示的方法的流程示意图之一;
图2为本发明提供的基于服务器发送事件SSE技术建立与客户端的连接管道的流程示意图;
图3为本发明提供的创建交互线程池组、监听线程池组和通知线程池组的流程示意图;
图4为本发明提供的由服务器端的发起数据变动的业务进程利用所述通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组的流程示意图;
图5为本发明提供的业务线程池组响应所述数据变动通知消息,利用所述交互线程池组将变动后的数据通过所述连接管道推送给客户端的流程示意图;
图6是本发明提供的实现端对端实时数据展示的方法的流程示意图之二;
图7是本发明提供的实现端对端实时数据展示的装置的结构示意图之一;
图8是本发明提供的实现端对端实时数据展示的装置的结构示意图之二;
图9是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的实现端对端实时数据展示的方法的流程示意图之一,如图1所示,包括以下步骤:
步骤100、基于服务器发送事件SSE技术建立与客户端的连接管道。
具体地,在服务器端采用服务器发送事件(Server-sent Events,SSE)技术建立服务器端与客户端的连接管道。需要说明的是,客户端是指用户电子设备,或者用户电子设备上的浏览器。
其中,SSE技术是HTML5规范的一个组成部分,SSE技术为符合超文本传输协议HTTP标准的单工技术,采用SSE技术建立与客户端的连接管道后,服务器端可以以流的形式持续向客户端发送数据,实现异步的数据推送机制。
步骤101、在数据变动发生的情况下,由服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组。
可选地,数据变动发生是指业务触发了数据变化,服务器端需要向客户端推送新的数据。
在本申请实施例中,服务器端采用响应式编程技术,使用用户态线程处理实际消息。
在数据变动发生的情况下,服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,向业务线程池组发送数据变动通知消息。其中,通知线程池组用于以广播形式通知数据变动,监听线程池组用于监听是否有数据变动发生。
可选地,服务器端的发起数据变动的业务进程通过通知线程池组向分布式消息传递引擎发送数据变动通知消息,监听线程池组基于所述分布式消息传递引擎接收该数据变动通知消息,并将该数据变动通知消息发送给业务线程池组。其中,所述分布式消息传递引擎用于实现分布式消息传递。
步骤102、所述业务线程池组响应所述数据变动通知消息,利用交互线程池组将变动后的数据通过所述连接管道推送给客户端。
具体地,业务线程池组接收到数据变动通知消息,查询服务器端数据库获取变动后的数据,对变动后的数据进行组装,获得经过组装的数据,将经过组装的数据发送给交互线程池组,再由交互线程池组将经过组装的数据通过连接管道推送给客户端。其中,交互线程池组用于维护服务器端与客户端的连接。
本发明实施例提供的实现端对端实时数据展示的方法,基于SSE技术建立服务器端与客户端的连接管道,服务器端采用异步无阻塞的方式,降低了数据推送的时延,实现了实时推送,服务器端使用少量的线程,减少了内存的占用。
图2为本发明实施例提供的基于服务器发送事件SSE技术建立与客户端的连接管道的流程示意图,如图2所示,在一个实施例中,基于服务器发送事件SSE技术建立与客户端的连接管道包括以下子步骤:
步骤200、创建交互线程池组、监听线程池组和通知线程池组。
其中,所述服务器端应用程序是通过在服务器端安装支持响应式Reactor的软件开发工具包、基于所述软件开发工具包创建的支持异步事件驱动的应用程序,所述服务器端应用程序中添加了响应式支持的相关依赖包。
具体地,在服务器端安装Java Development Kit 11版本支持响应式Reactor的软件开发工具包。
基于该软件开发工具包在服务端使用Spring Initializr创建一个基于SpringBoot的应用程序。其中,Spring Initializr是一个Web应用程序,它能构建Spring Boot项目结构。
在创建的基于Spring Boot的服务器端应用程序中引入Netty网络应用程序框架。其中,Netty是支持异步的和基于事件驱动的框架,用于快速开发高性能和高可靠性的网络服务器和客户端程序。
在服务器端应用程序添加Spring Reactive响应式支持的相关依赖包。其中,Spring Reactive响应式支持的相关依赖包是一个高度优化的反应式库,用于根据响应式流规范Reactive Streams Specification在JAVA虚拟机JVM上构建高效的非阻塞应用程序。基于Reactor的应用程序可以维持很高的吞吐量消息速率,并以非常小的内存占用空间运行,Reactor适合使用微服务体系结构构建高效的事件驱动的应用程序。
服务器端通过运行服务器端应用程序,使得服务器端应用程序创建交互线程池组、监听线程池组和通知线程池组。
其中,所述交互线程池组用于维护服务器端与客户端的连接,所述监听线程池组用于监听数据变动,所述通知线程池组用于广播通知数据变动。
步骤201、启动分布式消息传递引擎。
服务器端启动分布式消息传递引擎,以使得当数据变动发生时,服务器端的发起数据变动的业务进程通过通知线程池组向分布式消息传递引擎发送数据变动通知消息,监听线程池组基于所述分布式消息传递引擎接收该数据变动通知消息,并将该数据变动通知消息发送给业务线程池组,实现了分布式消息传递。
通过上述步骤200~步骤201,建立服务器端与客户端的连接管道。
本发明实施例提供的实现端对端实时数据展示的方法,由交互线程池组负责与客户端的连接,增加了服务器端整体的吞吐量,当消息变动时,由消息变动方发送通知给所有与客户端建立长连接的进程,各个进程接到通知后组装数据推送给客户端,增加了消息的实时性。
图3为本发明实施例提供的创建交互线程池组、监听线程池组和通知线程池组的流程示意图,如图3所示,在一个实施例中,创建交互线程池组、监听线程池组和通知线程池组包括以下子步骤:
步骤300、所述服务器端应用程序通过执行器Executor 线程相应方法创建所述交互线程池组。
具体地,服务器端应用程序通过执行线程相应方法,创建交互线程池组ForkJoinPool,用于维护与客户端之间建立的连接。
其中,ForkJoinPool是JDK7引入的线程池,可以将大的任务拆分成多个小任务,然后在将多个小任务处理汇总到一个结果上。
默认情况下,服务器端应用程序创建的线程数与系统硬件支持的线程数相同,系统硬件支持的线程数通常和CPU核心数相同。
步骤301、所述服务器端应用程序基于所述交互线程池组,创建服务器端与客户端的连接相应的控制器Controller方法。
其中,所述Controller方法的返回值为支持SSE技术的Flux类型,所述控制器方法中添加了第一注解和第二注解,所述第一注解用于指示所有主机的跨域标头,所述第二注解用于指示服务器端支持发送具有文本或事件流的数据类型。
具体地,服务器端应用程序通过交互线程池组,编写使用RESTful资源状态转移的风格建立与客户端的连接相应的Controller方法。Controller方法的返回值为支持SSE技术的Flux类型。
在Controller方法上增加第一注解,增加的第一注解允许所有主机的跨域标头,从React等客户端应用程序调用此端点时,如果没有增加此注解,浏览器将阻止该请求。增加的第一注解可以为@CrossOrigin(allowedHeaders="*")。
在Controller方法上增加第二注解,使Controller方法能够发送具有文本或事件流类型的内容。第二注解可以为produces= MediaType.TEXT_EVENT_STREAM_VALUE。
步骤302、所述服务器端应用程序添加分布式消息传递引擎相关依赖包。
具体地,服务器端应用程序添加Reactor Kafka相关依赖包,Kafka是可伸缩的高性能分布式消息传递引擎,能够保证流处理的低延迟性和高吞吐量。
步骤303、所述服务器端应用程序通过Executor 线程相应方法创建所述监听线程池组,并绑定分布式消息传递引擎流应用程序接口API。
具体地,服务器端应用程序通过Executor线程相应方法,创建ForkJoinPool监听线程池组负责监听数据变化,并将监听线程池组绑定Kafka Streams API,以处理流的信息。
步骤304、调用所述服务器端应用程序,通过Executor 线程相应方法创建所述通知线程池组,并绑定分布式消息传递引擎流API。
具体地,服务器端应用程序通过Executor线程相应方法,创建ForkJoinPool通知线程池组负责在数据变化后进行广播通知,并将通知线程池组绑定Kafka Streams API,以处理流的信息。
本发明实施例提供的实现端对端实时数据展示的方法,通过Executor线程相应方法,创建ForkJoinPool交互线程池组、监听线程池组和通知线程池组,用于维护服务器端与客户端之间的连接、监听数据变动和通知数据变动,增加了服务器端整体的吞吐量,当消息变动时,由消息变动方发送通知给所有与客户端建立长连接的进程,各个进程接到通知后组装数据推送给客户端,增加了消息的实时性。
图4为本发明实施例提供的由服务器端的发起数据变动的业务进程利用所述通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组的流程示意图,如图4所示,在一个实施例中,由服务器端的发起数据变动的业务进程利用所述通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组包括以下子步骤:
步骤400、服务器端的发起数据变动的业务进程通过所述通知线程池组向分布式消息传递引擎发送数据变动通知消息。
具体地,发起数据变动的业务进程为数据变动的源头进程。服务器端的发起数据变动的业务进程导致数据变动后,通过用于广播通知数据变动的通知线程池组,向分布式消息传递引擎发送数据变动通知消息。
步骤401、所述监听线程池组基于所述分布式消息传递引擎接收所述数据变动通知消息,并将所述数据变动通知消息发送给所述业务线程池组。
具体地,用于监听数据变动的监听线程池组基于所述分布式消息传递引擎接收所述数据变动通知消息,并将所述数据变动通知消息发送给所述业务线程池组。至此,数据变动消息传递至业务线程池组,业务线程池组与数据库之间进行交互,用于查询和组装数据,并将组装后的消息进行进一步的传递。
本发明实施例提供的实现端对端实时数据展示的方法,当消息变动时,由通知线程池组向分布式消息传递引擎发送数据变动通知消息,再由监听线程池组基于分布式消息传递引擎接收数据变动通知消息,并将数据变动通知消息发送给业务线程池组,增加了消息的实时性,提高了服务端的吞吐量。
图5为本发明实施例提供的业务线程池组响应所述数据变动通知消息,利用所述交互线程池组将变动后的数据通过所述连接管道推送给客户端的流程示意图,如图5所示,在一个实施例中,业务线程池组响应所述数据变动通知消息,利用所述交互线程池组将变动后的数据通过所述连接管道推送给客户端包括以下子步骤:
步骤500、所述业务线程池组接收到所述数据变动通知消息,查询服务器端数据库获取变动后的数据。
具体地,业务线程池组与数据库之间进行交互,用于查询和组装数据,业务线程池组接收到所述数据变动通知消息后,查询服务器端数据库,得到变动后的数据,变动后的数据为数据库中存储的原始数据。
步骤501、对所述变动后的数据进行组装,获得经过组装的数据,将所述经过组装的数据发送给所述交互线程池组。
具体地,步骤500中获取的变动后的数据为数据库中存储的原始数据,业务线程池组对原始数据进行组装,得到组装后的数据,并将组装后的数据发送给用于维护服务器端与客户端的连接的交互线程池组。
步骤502、所述交互线程池组将所述经过组装的数据通过所述连接管道推送给客户端。
具体地,交互线程池组接收到业务线程池组发送的组装后的数据后,将组装后的数据通过服务器端与客户端的连接管道推送给客户端。
本发明实施例提供的实现端对端实时数据展示的方法,业务线程池组查询并组装数据,并将组装后的数据发送给交互线程池组,由交互线程池组通过连接管道将组装后的数据推送至客户端,增加了服务器端的吞吐量,提高了消息推送的实时性。
图6是本发明实施例提供的实现端对端实时数据展示的方法的流程示意图之二,如图6所示,包括以下步骤:
步骤600、基于服务器发送事件SSE技术建立与服务器端的连接管道。
具体地,客户端通过客户端应用程序建立与服务器端的连接管道,接收服务器端推送的消息。
所述客户端应用程序是在客户端创建的响应式应用程序,所述客户端应用程序通过EventSource启动所述客户端到服务器端端点的连接并进行数据监听。
步骤601、通过所述连接管道接收服务器端发送的数据。
具体地,在服务器端出现数据变动时,客户端通过连接管道接收服务器端发送的数据。
本发明实施例提供的实现端对端实时数据展示的方法,基于SSE技术建立与服务端的连接管道,采用异步无阻塞的方式,降低了数据推送的时延,实现了实时的数据展示。
在一个实施例中,基于服务器发送事件SSE技术建立服务器端与客户端的连接管道,包括:运行客户端应用程序;
其中,所述客户端应用程序是在客户端创建的响应式应用程序,所述客户端应用程序通过EventSource启动所述客户端到服务器端端点的连接并进行数据监听。
具体地,客户端应用程序的创建过程包括:在客户端使用npm的create react app命令创建一个响应式React应用程序,使用JavaScript EventSource API订阅服务器端的事件流。在客户端应用程序创建一个components的功能组件,同时利用反应钩useState和useEffect管理连接的状态和生命周期。
客户端应用程序的useEffect方法中,通过事件源EventSource传递端点的统一资源定位符(URL,Uniform Resource Locator)建立一个新对象,这样将启动到服务器端端点的连接并开始监听。
客户端应用程序的EventSource.onmessage方法,会在接收到服务端事件时被自动调用。并处理消息并展示至用户侧。
本发明实施例提供的实现端对端实时数据展示的方法,基于SSE技术建立与服务端的连接管道,采用异步无阻塞的方式,降低了数据推送的时延,实现了实时的数据展示。
本发明另一实施例,提供一种实现端对端实时数据展示的装置,如图7所示,包括第一连接单元710、数据变动通知单元720和数据变动响应单元730,其中,
第一连接单元710,用于基于服务器发送事件SSE技术建立与客户端的连接管道;
数据变动通知单元720,用于在数据变动发生的情况下,由服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组;
数据变动响应单元730,用于数据变动所述业务线程池组响应所述数据变动通知消息,利用交互线程池组将变动后的数据通过所述连接管道推送给客户端。
可选地,所述第一连接单元用于:
创建交互线程池组、监听线程池组和通知线程池组;
启动分布式消息传递引擎;
其中,所述服务器端应用程序是通过在服务器端安装支持响应式Reactor的软件开发工具包、基于所述软件开发工具包创建的支持异步事件驱动的应用程序,所述服务器端应用程序中添加了响应式支持的相关依赖包;
所述交互线程池组用于维护服务器端与客户端的连接;
所述监听线程池组用于监听数据变动;
所述通知线程池组用于广播通知数据变动。
可选地,所述创建交互线程池组、监听线程池组和通知线程池组,包括:
所述服务器端应用程序通过执行器Executor 线程相应方法创建所述交互线程池组;
所述服务器端应用程序基于所述交互线程池组,创建服务器端与客户端的连接相应的控制器Controller方法;
所述服务器端应用程序添加分布式消息传递引擎相关依赖包;
所述服务器端应用程序通过Executor 线程相应方法创建所述监听线程池组,并绑定分布式消息传递引擎流应用程序接口API;
所述服务器端应用程序通过Executor 线程相应方法创建所述通知线程池组,并绑定分布式消息传递引擎流API;
其中,所述Controller方法的返回值为支持SSE技术的Flux类型,所述控制器方法中添加了第一注解和第二注解,所述第一注解用于指示所有主机的跨域标头,所述第二注解用于指示服务器端支持发送具有文本或事件流的数据类型。
可选地,所述由服务器端的发起数据变动的业务进程利用所述通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组,包括:
服务器端的发起数据变动的业务进程通过所述通知线程池组向分布式消息传递引擎发送数据变动通知消息;
所述监听线程池组基于所述分布式消息传递引擎接收所述数据变动通知消息,并将所述数据变动通知消息发送给所述业务线程池组。
可选地,所述业务线程池组响应所述数据变动通知消息,利用所述交互线程池组将变动后的数据通过所述连接管道推送给客户端,包括:
所述业务线程池组接收到所述数据变动通知消息,查询服务器端数据库获取变动后的数据;
对所述变动后的数据进行组装,获得经过组装的数据,将所述经过组装的数据发送给所述交互线程池组;
所述交互线程池组将所述经过组装的数据通过所述连接管道推送给客户端。
本发明提供的实现端对端实时数据展示的装置能够实现图1至图5的方法实施例实现的各个过程,并达到相同的技术效果,为避免重复,这里不再赘述。
本发明另一实施例,提供一种实现端对端实时数据展示的装置,如图8所示,包括第二连接单元810和数据接收单元820,其中,
第二连接单元810,用于基于服务器发送事件SSE技术建立与服务器端的连接管道;
数据接收单元820,用于通过所述连接管道接收服务器端发送的数据。
可选地,所述第二连接单元810,用于:
运行客户端应用程序;
其中,所述客户端应用程序是在客户端创建的响应式应用程序,所述客户端应用程序通过EventSource启动所述客户端到服务器端端点的连接并进行数据监听。
本发明提供的实现端对端实时数据展示装置能够实现图6的方法实施例实现的各个过程,并达到相同的技术效果,为避免重复,这里不再赘述。
图9示例了一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行实现端对端实时数据展示方法,该方法包括:基于服务器发送事件SSE技术建立与客户端的连接管道;
在数据变动发生的情况下,由服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组;
所述业务线程池组响应所述数据变动通知消息,利用交互线程池组将变动后的数据通过所述连接管道推送给客户端。
或,该方法包括:
基于服务器发送事件SSE技术建立与服务器端的连接管道;
通过所述连接管道接收服务器端发送的数据。
此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的实现端对端实时数据展示方法,该方法包括:基于服务器发送事件SSE技术建立与客户端的连接管道;
在数据变动发生的情况下,由服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组;
所述业务线程池组响应所述数据变动通知消息,利用交互线程池组将变动后的数据通过所述连接管道推送给客户端。
或,该方法包括:
基于服务器发送事件SSE技术建立与服务器端的连接管道;
通过所述连接管道接收服务器端发送的数据。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的实现端对端实时数据展示方法,该方法包括:基于服务器发送事件SSE技术建立与客户端的连接管道;
在数据变动发生的情况下,由服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组;
所述业务线程池组响应所述数据变动通知消息,利用交互线程池组将变动后的数据通过所述连接管道推送给客户端。
或,该方法包括:
基于服务器发送事件SSE技术建立与服务器端的连接管道;
通过所述连接管道接收服务器端发送的数据。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种实现端对端实时数据展示的方法,其特征在于,应用于服务器端,包括:
基于服务器发送事件SSE技术建立与客户端的连接管道;
在数据变动发生的情况下,由服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组;
所述业务线程池组响应所述数据变动通知消息,利用交互线程池组将变动后的数据通过所述连接管道推送给客户端。
2.根据权利要求1所述的实现端对端实时数据展示的方法,其特征在于,所述基于服务器发送事件SSE技术建立与客户端的连接管道,包括:
运行服务器端应用程序,创建交互线程池组、监听线程池组和通知线程池组;
启动分布式消息传递引擎;
其中,所述服务器端应用程序是通过在服务器端安装支持响应式Reactor的软件开发工具包、基于所述软件开发工具包创建的支持异步事件驱动的应用程序,所述服务器端应用程序中添加了响应式支持的相关依赖包;
所述交互线程池组用于维护服务器端与客户端的连接;
所述监听线程池组用于监听数据变动;
所述通知线程池组用于广播通知数据变动。
3.根据权利要求2所述的实现端对端实时数据展示的方法,其特征在于,所述创建交互线程池组、监听线程池组和通知线程池组,包括:
所述服务器端应用程序通过执行器Executor 线程相应方法创建所述交互线程池组;
所述服务器端应用程序基于所述交互线程池组,创建服务器端与客户端的连接相应的控制器Controller方法;
所述服务器端应用程序添加分布式消息传递引擎相关依赖包;
所述服务器端应用程序通过Executor 线程相应方法创建所述监听线程池组,并绑定分布式消息传递引擎流应用程序接口API;
所述服务器端应用程序通过Executor 线程相应方法创建所述通知线程池组,并绑定分布式消息传递引擎流API;
其中,所述Controller方法的返回值为支持SSE技术的Flux类型,所述控制器方法中添加了第一注解和第二注解,所述第一注解用于指示所有主机的跨域标头,所述第二注解用于指示服务器端支持发送具有文本或事件流的数据类型。
4.根据权利要求1所述的实现端对端实时数据展示的方法,其特征在于,所述由服务器端的发起数据变动的业务进程利用所述通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组,包括:
服务器端的发起数据变动的业务进程通过所述通知线程池组向分布式消息传递引擎发送数据变动通知消息;
所述监听线程池组基于所述分布式消息传递引擎接收所述数据变动通知消息,并将所述数据变动通知消息发送给所述业务线程池组。
5.根据权利要求1所述的实现端对端实时数据展示的方法,其特征在于,所述业务线程池组响应所述数据变动通知消息,利用所述交互线程池组将变动后的数据通过所述连接管道推送给客户端,包括:
所述业务线程池组接收到所述数据变动通知消息,查询服务器端数据库获取变动后的数据;
对所述变动后的数据进行组装,获得经过组装的数据,将所述经过组装的数据发送给所述交互线程池组;
所述交互线程池组将所述经过组装的数据通过所述连接管道推送给客户端。
6.一种实现端对端实时数据展示的方法,其特征在于,应用于客户端,包括:
基于服务器发送事件SSE技术建立与服务器端的连接管道;
通过所述连接管道接收服务器端发送的数据。
7.根据权利要求6所述的实现端对端实时数据展示的方法,其特征在于,所述基于服务器发送事件SSE技术建立服务器端与客户端的连接管道,包括:
运行客户端应用程序;
其中,所述客户端应用程序是在客户端创建的响应式应用程序,所述客户端应用程序通过事件源EventSource启动所述客户端到服务器端端点的连接并进行数据监听。
8.一种实现端对端实时数据展示的装置,其特征在于,包括:
第一连接单元,用于基于服务器发送事件SSE技术建立与客户端的连接管道;
数据变动通知单元,用于在数据变动发生的情况下,由服务器端的发起数据变动的业务进程利用通知线程池组和监听线程池组,将数据变动通知消息发送给业务线程池组;
数据变动响应单元,用于数据变动所述业务线程池组响应所述数据变动通知消息,利用交互线程池组将变动后的数据通过所述连接管道推送给客户端。
9.一种实现端对端实时数据展示的装置,其特征在于,包括:
第二连接单元,用于基于服务器发送事件SSE技术建立与服务器端的连接管道;
数据接收单元,用于通过所述连接管道接收服务器端发送的数据。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述实现端对端实时数据展示的方法的步骤,或者,实现如权利要求6至7任一项所述实现端对端实时数据展示的方法的步骤。
11.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述实现端对端实时数据展示的方法的步骤,或者,实现如权利要求6至7任一项所述实现端对端实时数据展示的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110508954.3A CN112995347B (zh) | 2021-05-11 | 2021-05-11 | 实现端对端实时数据展示的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110508954.3A CN112995347B (zh) | 2021-05-11 | 2021-05-11 | 实现端对端实时数据展示的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112995347A true CN112995347A (zh) | 2021-06-18 |
CN112995347B CN112995347B (zh) | 2021-08-10 |
Family
ID=76337420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110508954.3A Active CN112995347B (zh) | 2021-05-11 | 2021-05-11 | 实现端对端实时数据展示的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112995347B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115022329A (zh) * | 2022-07-08 | 2022-09-06 | 国泰君安证券股份有限公司 | 基于sse实现投顾实时图文直播的系统、方法、装置、处理器及其计算机可读存储介质 |
CN115203214A (zh) * | 2022-09-16 | 2022-10-18 | 杭州谐云科技有限公司 | 一种报表数据的更新方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109727595A (zh) * | 2018-12-29 | 2019-05-07 | 神思电子技术股份有限公司 | 一种语音识别服务器的软件设计方法 |
CN111683069A (zh) * | 2020-05-28 | 2020-09-18 | 杭州绿度信息技术有限公司 | 一种基于netty框架的自定义通信协议及服务方法 |
US20200304478A1 (en) * | 2017-01-16 | 2020-09-24 | Citrix Systems, Inc. | Secure Device Notifications From Remote Applications |
CN112367241A (zh) * | 2020-10-16 | 2021-02-12 | 北京五八信息技术有限公司 | 消息生成和消息发送方法、装置、设备和计算机可读介质 |
-
2021
- 2021-05-11 CN CN202110508954.3A patent/CN112995347B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200304478A1 (en) * | 2017-01-16 | 2020-09-24 | Citrix Systems, Inc. | Secure Device Notifications From Remote Applications |
CN109727595A (zh) * | 2018-12-29 | 2019-05-07 | 神思电子技术股份有限公司 | 一种语音识别服务器的软件设计方法 |
CN111683069A (zh) * | 2020-05-28 | 2020-09-18 | 杭州绿度信息技术有限公司 | 一种基于netty框架的自定义通信协议及服务方法 |
CN112367241A (zh) * | 2020-10-16 | 2021-02-12 | 北京五八信息技术有限公司 | 消息生成和消息发送方法、装置、设备和计算机可读介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115022329A (zh) * | 2022-07-08 | 2022-09-06 | 国泰君安证券股份有限公司 | 基于sse实现投顾实时图文直播的系统、方法、装置、处理器及其计算机可读存储介质 |
CN115022329B (zh) * | 2022-07-08 | 2023-08-04 | 国泰君安证券股份有限公司 | 基于sse实现投顾实时图文直播的系统、方法、装置、处理器及其计算机可读存储介质 |
CN115203214A (zh) * | 2022-09-16 | 2022-10-18 | 杭州谐云科技有限公司 | 一种报表数据的更新方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112995347B (zh) | 2021-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112995347B (zh) | 实现端对端实时数据展示的方法、装置、设备及存储介质 | |
US9800691B2 (en) | Stream processing using a client-server architecture | |
CN105991689B (zh) | Http报文处理方法及系统、http客户端及服务器 | |
CN107766509B (zh) | 一种网页静态备份的方法和装置 | |
US9769214B2 (en) | Providing reliable session initiation protocol (SIP) signaling for web real-time communications (WEBRTC) interactive flows, and related methods, systems, and computer-readable media | |
WO2016063250A1 (en) | Extending browser support of real time media to any available codec | |
CN110020367B (zh) | 一种页面渲染方法及装置 | |
CN113067882A (zh) | 一种消息处理方法、装置、电子设备及介质 | |
CN113132376A (zh) | 媒体数据处理方法及装置、系统、电子设备和存储介质 | |
CN109151056B (zh) | 基于Canal的消息推送方法和系统 | |
US20150296014A1 (en) | Picture download method and apparatus | |
CN112579148A (zh) | 基于业务代理的业务消息处理方法、装置及电子设备 | |
CN104349177A (zh) | 一种在桌面云下转向播放多媒体文件的方法、虚拟机及系统 | |
CN101741896A (zh) | Web系统中的数据处理方法、装置及系统 | |
WO2017000572A1 (zh) | 基于因特网内容适配协议的通信方法、客户端和服务器 | |
EP3399725B1 (en) | Multimedia stream multicasting method and device | |
US10044788B2 (en) | Native client multimedia redirection | |
CN111858099B (zh) | 消息订阅方法及装置 | |
CN112084042A (zh) | 一种消息处理的方法和装置 | |
CN113783822B (zh) | 服务超时管理方法和装置,电子设备,可读介质 | |
CN112492055A (zh) | 一种传输协议重定向的方法、装置、设备及可读存储介质 | |
CN111818361A (zh) | 控制流媒体业务交互的方法、web客户端设备及系统 | |
CN114745564B (zh) | 服务调度方法及装置 | |
CN103181140A (zh) | 识别服务请求类型的方法、媒体服务器和终端设备 | |
CN115022725A (zh) | 一种视频播放方法和装置 |
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 |