CN114237936A - 数据消费方法、装置、服务器及可读存储介质 - Google Patents
数据消费方法、装置、服务器及可读存储介质 Download PDFInfo
- Publication number
- CN114237936A CN114237936A CN202111540569.3A CN202111540569A CN114237936A CN 114237936 A CN114237936 A CN 114237936A CN 202111540569 A CN202111540569 A CN 202111540569A CN 114237936 A CN114237936 A CN 114237936A
- Authority
- CN
- China
- Prior art keywords
- user
- data
- target
- message queue
- consumption
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种数据消费方法、装置、服务器及可读存储介质,涉及计算机技术领域。该方法包括:根据目标客户端的用户标识及存储的用户配置信息,确定需要监听的目标消息队列的标识及第一目标预设消费速度,并对目标消息队列进行监听,用户配置信息中包括第一预设消费速度及用户标识,消息队列的标识根据对应的用户标识确定;在监听到目标消息队列中存在待消费数据的情况下,以不大于第一目标预设消费速度的速度消费目标消费队列中的数据,并将消费的数据通过websocket链接发送给目标客户端,目标消息队列中超出第一目标预设消费速度的数据被丢弃。如此,可达到大量数据的稳定实时消费,并将其分发到目标用户。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种数据消费方法、装置、服务器及可读存储介质。
背景技术
目前,客户端消费服务器数据,一般是通过后端接口查询,在要求实时性的场景下,会通过接口轮询进行实时消费来达到一些高实时性的要求。但在某些场景下,大数据在客户端的实时性消费的确是一个挑战,如何保证大量数据的有序稳定消费以及将其分发到目标用户是本领域技术人员亟需解决的技术问题。
发明内容
本申请实施例提供了一种数据消费方法、装置、服务器及可读存储介质,其能够保证大量数据的有序稳定实时消费,并将其分发到目标用户。
本申请的实施例可以这样实现:
第一方面,本申请实施例提供一种数据消费方法,应用于与客户端通信连接的服务器,所述服务器中存储有至少一个用户配置信息,所述用户配置信息中包括第一预设消费速度及用户标识,所述方法包括:
根据目标客户端的用户标识及存储的所述用户配置信息,确定需要监听的目标消息队列的标识及第一目标预设消费速度,并对所述目标消息队列进行监听,其中,消息队列的标识根据对应的用户标识确定;
在监听到所述目标消息队列中存在待消费数据的情况下,以不大于所述第一目标预设消费速度的速度消费所述目标消费队列中的数据,并将消费的数据通过websocket链接发送给所述目标客户端,其中,所述目标消息队列中超出所述第一目标预设消费速度的数据被丢弃。
第二方面,本申请实施例提供一种数据消费装置,应用于与客户端通信连接的服务器,所述服务器中存储有至少一个用户配置信息,所述用户配置信息中包括第一预设消费速度及用户标识,所述装置包括:
第一监听模块,用于根据目标客户端的用户标识及存储的所述用户配置信息,确定需要监听的目标消息队列的标识及第一目标预设消费速度,并对所述目标消息队列进行监听,其中,消息队列的标识根据对应的用户标识确定;
发送模块,用于在监听到所述目标消息队列中存在待消费数据的情况下,以不大于所述第一目标预设消费速度的速度消费所述目标消费队列中的数据,并将消费的数据通过websocket链接发送给所述目标客户端,其中,所述目标消息队列中超出所述第一目标预设消费速度的数据被丢弃。
第三方面,本申请实施例提供一种服务器,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令以实现前述实施方式所述的数据消费方法。
第四方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述实施方式所述的数据消费方法。
本申请实施例提供的数据消费方法、装置、服务器及可读存储介质,根据目标客户端的用户标识及存储的各用户配置信息中包括的第一预设消费速度及用户标识,确定出需要监听的目标消息队列的标识及第一目标预设消费速度,并对该目标消息队列进行监听,其中,消息队列的标识根据对应的用户标识确定;在监听到目标消息队列中存在待消费数据的情况下,以不大于第一目标预设消费速度的速度消费目标消费队列中的数据,并将消费的数据通过websocket链接发送给目标客户端,以及丢弃目标消息队列中超出第一目标预设消费速度的数据。如此,便于保证大量数据的有序稳定实时消费,并将其分发到目标用户。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的服务器的方框示意图;
图2为本申请实施例提供的数据消费方法的流程示意图之一;
图3为本申请实施例提供的数据消费方法的流程示意图之二;
图4为本申请实施例提供的数据消费方法的流程示意图之三;
图5为本申请实施例提供的数据消费方法的流程示意图之四;
图6为本申请实施例提供的数据消费方法的流程示意图之五;
图7为本申请实施例提供的数据消费方法的流程示意图之六;
图8为本申请实施例提供的对数据消费方法的举例说明示意图;
图9为本申请实施例提供的数据消费装置的方框示意图之一;
图10为本申请实施例提供的数据消费装置的方框示意图之二;
图11为本申请实施例提供的数据消费装置的方框示意图之三。
图标:100-服务器;110-存储器;120-处理器;130-通信单元;200-数据消费装置;201-配置模块;210-第二监听模块;220-处理模块;230-第一监听模块;240-发送模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
目前,客户端会通过接口轮询,定时地更新页面上数据。其中,轮询:polling,指浏览器每隔一段时间向服务器发送http请求,以获取数据。然而,这种方式需要不断地建立http连接,严重浪费了服务器和客户端的资源,同时实时性不够强,并且没有大数据量场景的策略,也即无法保证大量数据的有序稳定消费以及将其分发到目标用户。
为了缓解上述问题,本申请实施例提供了一种数据消费方法、装置、服务器及可读存储介质,便于保证大量数据的有序稳定实时消费,并将其分发到目标用户。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参照图1,图1为本申请实施例提供的服务器100的方框示意图。所述服务器100可以是单个的服务器或集群服务器等。所述服务器100中可以包括存储器110、处理器120及通信单元130。所述存储器110、处理器120以及通信单元130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,存储器110用于存储程序或者数据。所述存储器110可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。
处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。比如,存储器110中存储有数据消费装置200,所述数据消费装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中的软件功能模块。所述处理器120通过运行存储在存储器110内的软件程序以及模块,如本申请实施例中的数据消费装置200,从而执行各种功能应用以及数据处理,即实现本申请实施例中的数据消费方法。
通信单元130用于通过网络建立所述服务器100与其它通信终端之间的通信连接,并用于通过所述网络收发数据。
应当理解的是,图1所示的结构仅为服务器100的结构示意图,所述服务器100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
请参照图2,图2为本申请实施例提供的数据消费方法的流程示意图之一。所述方法可以应用于所述服务器100,所述服务器100中存储有至少一个用户配置信息,每个用户配置信息中可以包括第一预设消费速度及用户标识。所述用户客户可以为客户端所对应的用户的唯一标识,具体可以结合实际需求设置。下面对数据消费方法的具体流程进行详细阐述。所述方法可以包括步骤S150及步骤S160。
步骤S150,根据目标客户端的用户标识及存储的所述用户配置信息,确定需要监听的目标消息队列的标识及第一目标预设消费速度,并对所述目标消息队列进行监。
在本实施例中,所述目标客户端为需要被发送数据的客户端,具体可以结合实际需求设置,比如为在线的客户端。可根据所述目标客户端的用户标识、存储的各用户配置信息中包括的用户标识,确定出所述目标客户端对应的目标用户配置信息。进而将该目标用户配置信息中包括的第一预设消费速度,作为所述目标客户端对应的第一目标预设消费速度。还根据该目标客户端的用户标识确定出需要监听的目标消息队列的标识。在确定出所述目标客户端对应的目标消息队列的标识的情况下,对该目标消息队列的标识对应的目标消息队列进行监听。
步骤S160,在监听到所述目标消息队列中存在待消费数据的情况下,以不大于所述第一目标预设消费速度的速度消费所述目标消费队列中的数据,并将消费的数据通过websocket链接发送给所述目标客户端。
在从所述目标消息队列中监听到数据的情况下,以第一消费速度消费该目标消息队列中的数据,并将消费的数据通过websocket链接发送给所述目标客户端。websocket会通过网络将该数据推送到目标客户端处,是目标客户端实时获取数据。
其中,所述第一消费速度小于或等于该目标客户端对应的第一目标预设消费速度,所述第一消费速度的具体值根据目标消息队列中的数据的实际情况确定。所述目标消息队列中超出所述第一目标预设消费速度的数据被丢弃。
在消费所述目标消息队列中的数据时,可通过统计得到所述第一消费速度的具体值,在该值即将达到所述第一目标预设消费速度的情况下,丢弃数据。也即,若所述目标消息队列中的数据的数据量超出了所述第一目标预设消费速度,则丢弃一部分数据,使得真实消费速度不大于所述第一目标预设消费速度。
如此,通过websocket将数据发送给目标客户端,不需要不断地建立http连接,从而节省服务器和客户端的资源,同时可以保证数据的实时性;并且,基于第一目标预设消费速度消费数据,在实际消费速度即将大于第一目标预设消费速度时丢弃数据,可保证大量数据的稳定实时消费,并将其分发到目标用户。
可选地,在本实施例中,所述服务器中维护有在线用户列表。当客户端在线时,客户端可主动将本机的用户标识发送给所述服务器,以便所服务器维护所述在线用户列表。所述在线用户列表中可以包括在线用户的用户标识,所述用户配置信息中包括用户名称及消费数据配置标识。一个用户配置信息中可以包括一个消费数据配置标识或多个消费数据配置标识。其中,用户名称可以是为便于工作人员阅读理解的字符等,比如,xx企业;用户标识为与用户名称对应的便于机器识别的标识,比如,xxx企业的用户标识为500xxx。一个消费数据配置标识,用于表示一个消费数据配置信息的标识,该标识可以为工作人员手工输入的作为某条消费数据配置信息的名称。所述消费数据配置信息可以为对消费数据的配置。
作为一种可能的实现方式,可通过以下方式确定所述目标消息队列的标识。其中,消息队列的标识可以用户名称和消费数据配置标识为基础生成,如此便于确定出目标消息队列,也便于人工查看。
首先从所述在线用户列表中确定出至少一个目标客户端的用户标识。可选地,可以根据实际需求确定出某个或某些在线的客户端作为所述目标客户端,也可以将根据所述在线用户列表中确定出的所有在线客户端均作为目标客户端。
在确定出目标客户端的情况下,可针对每个目标客户端,根据该目标客户端的用户标识及存储的各用户配置信息中的用户,确定该目标客户端对应的目标用户配置信息;然后根据该目标用户配置信息中包括的用户名称及消费数据配置标识,确定出该目标客户端对应的目标消息队列的标识,由此可确定出该目标客户端对应的目标消息队列。
所述用户配置信息中还可以包括用户名。在确定出所述目标客户端对应的目标消息队列的标识的情况下,可以对该目标消息队列进行监听,在监听到数据的情况下,将数据以所述目标客户端对应的用户配置信息中的用户名,发送给该目标客户端。目标客户端监听相应的事件名,即可实时获取数据。
可选地,在一种可能实现方式中,所述用户配置信息中还可以包括是否存在关联用户,在用户存在关联用户的情况下,所述用户配置信息中还可以包括关联用户标识。其中,所述关联用户标识可以是根据工作人员输入的关联用户名称以及其他用户配置信息确定出来的。
可以根据所述在线用户列表得到各在线用户的标识,然后根据各在线用户的用户标识及存储的用户配置信息中的用户标识及关联用户标识,确定出各在线用户对应的用户组,其中,一个在线用户对应的用户组包括该在线用户及基于关联用户标识确定出的该在线用户的关联用户,该在线用户的关联用户为在线用户。可选地,一个在线用户对应的用户组中可以均为在线用户,也可以部分为在线用户、部分为不在线用户,可以结合实际需求设置。
在监听到所述目标消息队列中的数据时,可将数据以配置的事件名发送给该目标客户端对应的目标用户组中的各在线客户端。也即,根据所述目标客户端对应的目标用户组中各在线用户所对应的事件名,将数据通过websocket链接发送给所述目标用户组中的各在线客户端。其中,目标用户组中包括所述目标客户端。如此,目标用户组中的客户端监听相应的事件名即可实时获取数据。
可选地,在一个用户的用户配置信息中包括关联用户标识的情况下,该用户才存在关联用户,且该关联用户为关联用户标识对应的用户。若一个用户的用户配置信息中不包括关联用户标识,则表示该用户不存在关联用户。比如,用户A的用户配置信息中包括关联用户标识B,用户B的用户配置信息中不包括关联用户标识A,则表示用户A的关联用户为B、用户B不存在关联用户。
也即,相当于是说所述关联用户标识为父级标识,父级可以消费子级关联的数据,子级不可以消费父级关联的数据。如此,便于需要获得相应数据的客户端能够获得相应的数据。
作为一种可能的实现方式,所述消息队列中的数据可以包括用户标识,可以将该数据发送给具有该用户标识的客户端及该客户端的关联客户端(即关联用户的客户端)。如此,可以将数据发送给具有权限的用户。
可选地,所述服务器与所述客户端之间需要实现心跳检测和重连机制,以便将数据发送给相应的客户端。
请参照图3,图3为本申请实施例提供的数据消费方法的流程示意图之二。本实施例中,所述方法还可以包括步骤S120及步骤S130。
步骤S120,确定要监听的目标消息队列主题,并对所述目标消息队列主题进行监听。
消息队列主题中存储有生产者生产的数据。所述目标消息队列主题可以是工作人员指定的,也可以是服务器根据相应规则自动确定的。
可选地,所述服务器中维护有在线用户列表,所述在线用户列表中包括在线用户的用户标识,所述服务器中还存储有至少一个消费数据配置信息,每个消费数据配置信息包括消费数据配置标识及消息队列主题标识,所述用户配置信息中还包括消费数据配置标识。
作为一种可选的实现方式,可根据所述在线用户列表获得各在线用户的用户标识。针对各在线用户,根据该在线用户的用户标识及存储的所述用户配置信息,得到该在线用户对应的用户配置信息。可将该在线用户对应的用户配置信息中的消费数据配置标识,作为该在线用户对应的消费数据配置标识。获得该在线用户对应的消费数据配置标识所对应的消费数据配置信息,并将该消费数据配置信息中的消息队列主题标识,作为该在线用户对应的目标消费数据配置标识。然后,可从与该在线用户对应的目标消费数据配置标识所对应的目标消费数据配置信息中,获得该在线用户对应的目标消息队列主题(即消息队列topic)标识。其中,topic表示消息队列系统里每个主题的名称。
在获得各在线用户对应的目标消息队列主题标识的情况下,可以将各目标消息队列主题标识对应的消息队列主题,均作为需要监听的目标消息队列主题。即,所述目标消息队列主题标识为所述目标消息队列主题的标识。如此,可对各在线用户关联的数据所在的消息队列主题进行监听,以便后续将数据发送给各在线用户。
步骤S130,在监听到所述目标消息队列主题中存在待消费数据的情况下,从所述目标消息队列主题中获取数据,并将获取的数据推送到对应的消息队列中。
在对所述目标消息队列主题监听的过程中,若监听到数据,则从所述目标消息队列主题中获取数据,并将获取的数据推送到对应的消息队列中。其中,所述对应的消息队列的标识,可以根据所述目标消息队列主题对应的用户标识及用户配置信息确定。
可选地,所述消费数据配置信息中还可以包括消息队列类型、是否持久化、持久化对应的表名、处理和清洗的逻辑。所述消息队列类型为所述消费数据配置信息中包括的消息队列主题标识对应的消息队列主题的队列类型,比如kafka。持久化对应的表名,需要提前申请并初始化好。
可跟姐姐所述目标消息队列主题对应的消费数据配置信息中的消息队列类型,监听所述目标消息队列主题监听。在对所述目标消息队列主题监听的情况下,监听到数据时,可以根据所述目标消息队列主题对应的消费数据配置信息中的处理和清洗的逻辑,对该数据进行处理和清洗。若所述目标消息队列主题对应的消费数据配置信息中包括是持久化,则将处理和清洗后得到的数据,异步存入数据库内,最后再将得到的数据推送至对应的消息队列中。
请参照图4,图4为本申请实施例提供的数据消费方法的流程示意图之三。在本实施例中,所述方法还可以包括步骤S141~步骤S143。
步骤S141,统计对所述目标消息队列主题的数据的第二消费速度。
步骤S142,根据第二预设消费速度及所述第二消费速度,确定暂停对所述目标消息队列主题的数据的消费或恢复对所述目标消息队列主题的数据的消费,并执行相应处理方式。
可统计对各目标消息队列主题的数据的第二消费速度。然后,针对各目标消息队列主题,将该目标消息队列主题的第二消费速度与该目标消息队列主题对应的第二预设消费速度进行比较。其中,所述目标消息队列主题对应的第二预设消费速度,可以是根据预估出来的机器的数据处理能力设置的。不同消息队列主题对应的第二预设消费速度,可以相同,也可以不同,具体可以结合实际需求设置。
若该目标消息队列主题的第二消费速度达到该目标消息队列主题对应的第二预设消费速度,则暂停对该目标消息队列主题的数据的消费,以避免大数据量拖垮机器。若在消费该目标消息队列主题的数据且该目标消息队列主题的第二消费速度未达到所述第二预设消费速度,则继续消费该目标消息队列主题的数据。若当前为暂停消费该目标消息队列主题的数据且该目标消息队列主题的第二消费速度未达到所述第二预设消费速度,则可以恢复对目标消息队列主题的数据的消费。如此,可对topic的消费要进行流量限制,从而避免大数据量拖垮机器。
请参照图5,图5为本申请实施例提供的数据消费方法的流程示意图之四。在本实施例中,所述方法还可以包括步骤S145及步骤S146。
步骤S145,统计所述目标消息队列主题的数据的第二消费速度和产生速度。
步骤S146,在所述第二消费速度持续小于所述产生速度的时长大于预设时长的情况下,生成用于提示需要提高消费能力的提示信息。
在本实施例中,可针对各目标消息队列主题,通过统计得到该目标消息队列主题的数据的第二消费速度和产生速度,并统计得到所述第二消费速度持续小于所述产生速度的时长。若所述时长大于所述预设时长,表示机器的消费能力不足,可生成提示信息,并将该提示信息发送到相应的显示终端进行显示,以提示需要考虑通过加机器来提高消费能力。
请参照图6,图6为本申请实施例提供的数据消费方法的流程示意图之五。在本实施例,所述方法还可以包括步骤170。
步骤S170,在在线用户发生变化的情况下,对应更新所述在线用户列表,并根据更新后的所述在线用户列表,取消或建立对相应消息队列主题的监听,以及确定各在线用户对应的用户组。
在本实施例中,可监听websocket的连接和断开,并根据监听到的在线用户的变化,对所述在线用户列表进行更新。在在线用户变化的情况下,还可以根据更新后的所述在线用户列表,取消或建立对相应消息队列主题的监听,以及确定各在线用户对应的用户组。如此,便于将在线用户关注的数据发送给相应的在线用户。
比如,在时刻1,用户1在线,用户2不线,那么此时需要监听的消息队列主题为用户1对应的消息队列主题,不需要监听用户2对应的消息队列主题;若在时刻2,用户2也在线,那么此时需要监听的消息队列主题为用户1对应的消息队列主题以及用户2对应的消息队列主题。如此,在线的用户1、2均可以接收到自身关注的数据。
请再次参照图6,在本实施例中,所述方法还可以包括步骤S180。
步骤S180,监听所述用户配置信息及消费数据配置信息的变化,并根据所述变化取消或建立对相应消息队列主题的监听,以及根据所述变化取消或建立对相应消息队列的监听。
在本实施例中,还可以动态监听所述用户配置信息及消费数据配置信息的变化,并根据该变化取消或建立对相应消息队列主题及相应消息队列的监听,以使得监听对象与变化后的所述用户配置信息及消费数据配置信息对应。如此,可以保证是将用户关注的数据发送给了相应用户。
请参照图7,图7为本申请实施例提供的数据消费方法的流程示意图之六。在本实施例中,所述方法还可以包括步骤S110。
步骤S110,接收用户通过配置界面输入的配置操作,并根据所述配置操作得到所述用户配置信息及消费数据配置信息。
在本实施例中,工作人员可提前通过配置界面,向所述服务器输入配置操作。所述服务器可根据接收到的配置操作,得到所述用户配置信息及消费数据配置信息。还可以将所述用户配置信息及消费数据配置信息持久化到数据库中。比如,持久化到redis数据库中,redis是一个高性能的内存存储数据库。在需要使用所述用户配置信息及消费数据配置信息,可从所述数据库中拉取所述用户配置信息及消费数据配置信息。
可以理解的是,在首次生成用户配置信息及消费数据配置信息之后,工作人员还可以通过配置界面对所述用户配置信息及消费数据配置信息进行增、删、改等操作。
请参照图8,图8为本申请实施例提供的对数据消费方法的举例说明示意图。所述服务器中可以包括数据处理层、消息中心及配置界面。所述数据处理层用于对接各种数据来源,对数据进行清洗和持久化,并推送到消息中心。消息中心用于对用户分组,消费数据处理层推送的数据,并将数据往对应分组推送。配置界面用于使工作人员对整个过程的可配置项进行配置。下面以举例的方式,对数据消费方法进行说明。
可通过配置界面对消息中心和数据处理层进行配置。
首先可针对数据处理层,新建消费数据配置信息:名称(即消费数据配置标识)、消息队列类型、topic(即消息队列主题标识)、是否持久化、持久化对应的表名(需要提前申请并初始化好)、处理和清洗的逻辑。其次,配置可接入的用户(即能以websocket与服务器连接的客户端用户),也即配置用户配置信息:用户名称、是否关联父级(相当于是否存在关联用户)以及关联的父级的用户名称(根据父级的用户名称可获得父级的用户标识)、关联的一个或多个消费数据配置信息的名称、数据消费速度上限(即第一预设消费速度,可有默认值,并且不能超过系统配置的上限)、用户标识、时间名。其中,在应用场景针对企业时,所述用户标识可以是企业内部通用的唯一用户标识。上述配置均持久化到redis数据库中。
大数据场景一般要用到消息队列,数据处理层内置对常见的几种消息队列的支持,对数据进行消费、处理、清洗、持久化。
数据处理层可首先从redis数据库中拉取在线用户列表,并从redis数据库拉取消费数据配置信息及用户配置信息,从而匹配出在线用户的用户配置信息,进而确定出在线用户对应的消息队列topic。然后,可对在线用户对应的消息队列topic进行数据监听,在监听到数据后,根据在线用户对应的消费数据配置信息中的处理和清洗的逻辑,对该数据进行处理和清洗。若需要持久化,则异步将处理后的数据存入数据库内,最后再将处理后的数据推送至消息中心消费的消息队列中。
其中,消息中心需要维护在线用户的变化,并可通过redis的pub/sub机制通知到数据处理层。数据处理层根据在线用户的变化,动态取消或建立对消息队列topic的订阅。
数据处理层对消息队列topic的消费进行了流量限制,以防大数据量拖垮机器。可预估机器的数据处理能力,并对消息队列topic的消费流量情况进行统计,基于上述数据处理能力及统计出的流量,并适时暂停消费和恢复消费。
若某消息队列topic的数据的消费速度持续小于数据的产生速度的时长大于预设时长,可生成相应的提示信息,以提示通过添加机器来提高对消息队列topic的消费能力。
消息队列topic的数据中可以包括用户标识,后续可将该包括用户标识的数据发送给该用户标识对应的客户端。
消息中心消费的消息队列的名称可以根据该消息队列对应的用户名称和消费数据配置名称为基础生成。数据处理层可根据该原则确定出数据需要被放入的消息队列。该方式便于消息中心对消息队列中的数据进行消费。消息中心消费的消息队列,可以为redis中的队列。
比如,数据处理层消费的同一消息队列topic中可能存在对应不同用户的数据,数据处理层在往redis中的队列推送数据时,可将不同用户的数据分来,形成行的消息队列,以便于消息中心去消费。
数据处理层还可以动态监听所述消费数据配置信息及用户配置信息的变化,并根据该变化取消或建立对消息队列topic的订阅。
客户端可与消息中心建立websocket链接,并传入客户端用户对应的用户标识。消息中心可根据该在线客户端用户的用户标识,拉取用户配置信息及消息数据配置信息,生成关联子级的映射,将父级和子级分配到该子级对应的分组中;并根据该在线用户对应的消费数据配置信息中的名称及用户名称,确定出要监听的消息队列。在监听到数据的情况下,对数据进行消费,并以该分组中各在线用户对应的用户配置信息中的事件名,将数据发送给对应的分组。websocket就会通过网络推送到对应的客户端,客户端监听相应的事件名即可实时获取数据。这其中有以下几个关键点:
其中,消息中心需要监听websocket的连接和断开,维护在线用户,并通过redis的pub/sub机制通知变化,以便所述数据处理层对应更新要监听的消息队列topic。
消息中心还可以通过对各在线用户对应的消息队列的消费速率进行统计,该消费速度不能达到该消息队列对应的用户配置信息中的第一预设消费速度,否则需要丢弃消息队列中的数据。
客户端与消息中心需要实现心跳检测和重连机制,以保证将数据发送给相应的在线客户端。
消息中心还可以动态监听用户配置信息及消息数据配置信息的变化,并根据该变化重新获取在线用户对应的各种信息,以便执行相应的逻辑,从而将相应的数据发送给相应的在线用户。
在本实施例中,通过数据处理层统一了与各种数据来源对应的消息队列的对接,通过在线用户的监听动态取消和建立对数据的订阅,并通过数据处理层的限流策略和消息中心的消费速率配置及数据丢弃策略,达到大数据的稳定实时地消费。并且,相比轮询,通过使服务器与客户端建立websocket连接,对用户分组,将数据通过websocket连接发送给相应的分组,可大大降低了服务器的资源消耗,并且实时性也有保障。
为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种数据消费装置200的实现方式,可选地,该数据消费装置200可以采用上述图1所示的服务器100的器件结构。进一步地,请参照图9,图9为本申请实施例提供的数据消费装置200的方框示意图之一。需要说明的是,本实施例所提供的数据消费装置200,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。所述数据消费装置200可以应用于与客户端通信连接的服务器100,所述服务器100中存储有至少一个用户配置信息,所述用户配置信息中包括第一预设消费速度及用户标识。所述数据消费装置200可以包括:第一监听模块230及发送模块240。
所述第一监听模块230,用于根据目标客户端的用户标识及存储的所述用户配置信息,确定需要监听的目标消息队列的标识及第一目标预设消费速度,并对所述目标消息队列进行监听。其中,消息队列的标识根据对应的用户标识确定。
所述发送模块240,用于在监听到所述目标消息队列中存在待消费数据的情况下,以不大于所述第一目标预设消费速度的速度消费所述目标消费队列中的数据,并将消费的数据通过websocket链接发送给所述目标客户端。其中,所述目标消息队列中超出所述第一目标预设消费速度的数据被丢弃。
可选地,在本实施例中,所述服务器100中维护有在线用户列表,所述在线用户列表中包括在线用户的用户标识,所述用户配置信息中包括用户名称及消费数据配置标识,所述第一监听模块230具体用于:从所述在线用户列表中确定出至少一个目标客户端的用户标识;根据所述目标客户端的用户标识及存储的所述用户配置信息,确定所述目标客户端对应的用户名称及消费数据配置标识;根据所述目标客户端对应的用户名称及消费数据配置标识,确定所述目标消息队列的标识。
可选地,在本实施例中,所述服务器100中维护有在线用户列表,所述在线用户列表中包括在线用户的用户标识,所述用户配置信息中包括事件名,在用户存在关联用户的情况下,所述用户配置信息中还包括关联用户标识,所述第一监听模块230还用于:根据各在线用户的用户标识及所述用户配置信息中的用户标识及关联用户标识,确定出各在线用户对应的用户组,其中,一个在线用户对应的用户组包括该在线用户及基于关联用户标识确定出的该在线用户的关联用户。所述发送模块240具体用于:根据所述目标客户端对应的目标用户组中各在线用户所对应的事件名,将数据通过websocket链接发送给所述目标用户组中的各在线客户端。
请参照图10,图10为本申请实施例提供的数据消费装置200的方框示意图之二。所述数据消费装置200还可以包括:第二监听模块210及处理模块220。
所述第二监听模块210,用于确定要监听的目标消息队列主题,并对所述目标消息队列主题进行监听。
所述处理模块220,用于在监听到所述目标消息队列主题中存在待消费数据的情况下,从所述目标消息队列主题中获取数据,并将获取的数据推送到对应的消息队列中。
可选地,在本实施例中,所述服务器100中维护有在线用户列表,所述在线用户列表中包括在线用户的用户标识,所述服务器中还存储有至少一个消费数据配置信息,所述消费数据配置信息包括消费数据配置标识及消息队列主题标识,所述用户配置信息中还包括消费数据配置标识。所述第二监听模块210具体用于:根据各在线用户的用户标识及存储的所述用户配置信息,获得各在线用户对应的目标消费数据配置标识;根据与目标消费数据配置标识对应的目标消费数据配置信息,获得各在线用户对应的目标消息队列主题标识,其中,所述目标消息队列主题标识为所述目标消息队列主题的标识。
可选地,在本实施例中,所述处理模块220还用于:统计对所述目标消息队列主题的数据的第二消费速度;根据第二预设消费速度及所述第二消费速度,确定暂停对所述目标消息队列主题的数据的消费或恢复对所述目标消息队列主题的数据的消费,并执行相应处理方式。
可选地,在本实施例中,所述处理模块220还用于:统计所述目标消息队列主题的数据的第二消费速度和产生速度;在所述第二消费速度持续小于所述产生速度的时长大于预设时长的情况下,生成用于提示需要提高消费能力的提示信息。
可选地,在本实施例中,所述第一监听模块230还可以用于:在在线用户发生变化的情况下,对应更新所述在线用户列表。所述第二监听模块210还用于根据更新后的所述在线用户列表,取消或建立对相应消息队列主题的监听。所述第一监听模块230还用于确定各在线用户对应的用户组。
可选地,在本实施例中,所述第一监听模块230还可以用于:监听所述用户配置信息及消费数据配置信息的变化,并根据所述变化取消或建立对相应消息队列的监听。所述第二监听模块210还可以用于:监听所述用户配置信息及消费数据配置信息的变化,并根据所述变化取消或建立对消息队列主题的监听。
请参照图11,图11为本申请实施例提供的数据消费装置200的方框示意图之三。所述数据消费装置200还可以包括配置模块201。
所述配置模块201,用于接收用户通过配置界面输入的配置操作,并根据所述配置操作得到所述用户配置信息及消费数据配置信息。
可选地,上述模块可以软件或固件(Firmware)的形式存储于图1所示的存储器110中或固化于服务器100的操作系统(Operating System,OS)中,并可由图1中的处理器120执行。同时,执行上述模块所需的数据、程序的代码等可以存储在存储器110中。
本申请实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的数据消费方法。
综上所述,本申请实施例提供一种数据消费方法、装置、服务器及可读存储介质,根据目标客户端的用户标识及存储的各用户配置信息中包括的第一预设消费速度及用户标识,确定出需要监听的目标消息队列的标识及第一目标预设消费速度,并对该目标消息队列进行监听,其中,消息队列的标识根据对应的用户标识确定;在监听到目标消息队列中存在待消费数据的情况下,以不大于第一目标预设消费速度的速度消费目标消费队列中的数据,并将消费的数据通过websocket链接发送给目标客户端,以及丢弃目标消息队列中超出第一目标预设消费速度的数据。如此,便于保证大量数据的有序稳定实时消费,并将其分发到目标用户。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的可选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种数据消费方法,其特征在于,应用于与客户端通信连接的服务器,所述服务器中存储有至少一个用户配置信息,所述用户配置信息中包括第一预设消费速度及用户标识,所述方法包括:
根据目标客户端的用户标识及存储的所述用户配置信息,确定需要监听的目标消息队列的标识及第一目标预设消费速度,并对所述目标消息队列进行监听,其中,消息队列的标识根据对应的用户标识确定;
在监听到所述目标消息队列中存在待消费数据的情况下,以不大于所述第一目标预设消费速度的速度消费所述目标消费队列中的数据,并将消费的数据通过websocket链接发送给所述目标客户端,其中,所述目标消息队列中超出所述第一目标预设消费速度的数据被丢弃。
2.根据权利要求1所述的方法,其特征在于,所述服务器中维护有在线用户列表,所述在线用户列表中包括在线用户的用户标识,所述用户配置信息中包括用户名称及消费数据配置标识,所述根据目标客户端的用户标识及存储的所述用户配置信息,确定需要监听的目标消息队列的标识,包括:
从所述在线用户列表中确定出至少一个目标客户端的用户标识;
根据所述目标客户端的用户标识及存储的所述用户配置信息,确定所述目标客户端对应的用户名称及消费数据配置标识;
根据所述目标客户端对应的用户名称及消费数据配置标识,确定所述目标消息队列的标识。
3.根据权利要求1所述的方法,其特征在于,所述服务器中维护有在线用户列表,所述在线用户列表中包括在线用户的用户标识,所述用户配置信息中包括事件名,在用户存在关联用户的情况下,所述用户配置信息中还包括关联用户标识,
所述方法还包括:
根据各在线用户的用户标识及所述用户配置信息中的用户标识及关联用户标识,确定出各在线用户对应的用户组,其中,一个在线用户对应的用户组包括该在线用户及基于关联用户标识确定出的该在线用户的关联用户;
所述将消费的数据通过websocket链接发送给所述目标客户端,包括:
根据所述目标客户端对应的目标用户组中各在线用户所对应的事件名,将数据通过websocket链接发送给所述目标用户组中的各在线客户端。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定要监听的目标消息队列主题,并对所述目标消息队列主题进行监听;
在监听到所述目标消息队列主题中存在待消费数据的情况下,从所述目标消息队列主题中获取数据,并将获取的数据推送到对应的消息队列中。
5.根据权利要求4所述的方法,其特征在于,所述服务器中维护有在线用户列表,所述在线用户列表中包括在线用户的用户标识,所述服务器中还存储有至少一个消费数据配置信息,所述消费数据配置信息包括消费数据配置标识及消息队列主题标识,所述用户配置信息中还包括消费数据配置标识,所述确定要监听的目标消息队列主题,包括:
根据各在线用户的用户标识及存储的所述用户配置信息,获得各在线用户对应的目标消费数据配置标识;
根据与目标消费数据配置标识对应的目标消费数据配置信息,获得各在线用户对应的目标消息队列主题标识,其中,所述目标消息队列主题标识为所述目标消息队列主题的标识。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
统计对所述目标消息队列主题的数据的第二消费速度;
根据第二预设消费速度及所述第二消费速度,暂停对所述目标消息队列主题的数据的消费或恢复对所述目标消息队列主题的数据的消费。
7.根据权利要求4所述的方法,其特征在于,所述方法还包括:
统计所述目标消息队列主题的数据的第二消费速度和产生速度;
在所述第二消费速度持续小于所述产生速度的时长大于预设时长的情况下,生成用于提示需要提高消费能力的提示信息。
8.根据权利要求2、3或5所述的方法,其特征在于,所述方法还包括:
在在线用户发生变化的情况下,对应更新所述在线用户列表,并根据更新后的所述在线用户列表,取消或建立对相应消息队列主题的监听,以及确定各在线用户对应的用户组;和/或,
监听所述用户配置信息及消费数据配置信息的变化,并根据所述变化取消或建立对相应消息队列主题的监听,以及根据所述变化取消或建立对相应消息队列的监听。
9.根据权利要求5-7中任意一项所述的方法,其特征在于,所述方法还包括:
接收用户通过配置界面输入的配置操作,并根据所述配置操作得到所述用户配置信息及消费数据配置信息。
10.一种数据消费装置,其特征在于,应用于与客户端通信连接的服务器,所述服务器中存储有至少一个用户配置信息,所述用户配置信息中包括第一预设消费速度及用户标识,所述装置包括:
第一监听模块,用于根据目标客户端的用户标识及存储的所述用户配置信息,确定需要监听的目标消息队列的标识及第一目标预设消费速度,并对所述目标消息队列进行监听,其中,消息队列的标识根据对应的用户标识确定;
发送模块,用于在监听到所述目标消息队列中存在待消费数据的情况下,以不大于所述第一目标预设消费速度的速度消费所述目标消费队列中的数据,并将消费的数据通过websocket链接发送给所述目标客户端,其中,所述目标消息队列中超出所述第一目标预设消费速度的数据被丢弃。
11.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令以实现权利要求1-9中任意一项所述的数据消费方法。
12.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-9中任意一项所述的数据消费方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111540569.3A CN114237936A (zh) | 2021-12-16 | 2021-12-16 | 数据消费方法、装置、服务器及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111540569.3A CN114237936A (zh) | 2021-12-16 | 2021-12-16 | 数据消费方法、装置、服务器及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237936A true CN114237936A (zh) | 2022-03-25 |
Family
ID=80756742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111540569.3A Pending CN114237936A (zh) | 2021-12-16 | 2021-12-16 | 数据消费方法、装置、服务器及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237936A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114979238A (zh) * | 2022-05-24 | 2022-08-30 | 浪潮软件集团有限公司 | 多客户端数据实时推送方法及系统 |
CN114979178A (zh) * | 2022-05-12 | 2022-08-30 | 中国人民解放军陆军装甲兵学院 | 一种基于消息队列的消息流向控制平台及方法 |
CN115344403A (zh) * | 2022-07-27 | 2022-11-15 | 广州方舟信息科技有限公司 | 一种基于分布式消息队列的用户权益数据处理方法 |
-
2021
- 2021-12-16 CN CN202111540569.3A patent/CN114237936A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114979178A (zh) * | 2022-05-12 | 2022-08-30 | 中国人民解放军陆军装甲兵学院 | 一种基于消息队列的消息流向控制平台及方法 |
CN114979178B (zh) * | 2022-05-12 | 2023-11-10 | 中国人民解放军陆军装甲兵学院 | 一种基于消息队列的消息流向控制平台及方法 |
CN114979238A (zh) * | 2022-05-24 | 2022-08-30 | 浪潮软件集团有限公司 | 多客户端数据实时推送方法及系统 |
CN115344403A (zh) * | 2022-07-27 | 2022-11-15 | 广州方舟信息科技有限公司 | 一种基于分布式消息队列的用户权益数据处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114237936A (zh) | 数据消费方法、装置、服务器及可读存储介质 | |
US9866510B2 (en) | Coordinated notifications across multiple channels | |
JP6782301B2 (ja) | メッセージング・ボット・リッチ・コミュニケーションのための技法 | |
US7693958B2 (en) | Instant messaging with data sharing | |
US8234559B2 (en) | Managing rich presence collections | |
US8108345B2 (en) | Managing rich presence collections in a single request | |
CA2644124C (en) | Managing rich presence collections | |
CN109905286B (zh) | 一种监控设备运行状态的方法和系统 | |
CN115004673B (zh) | 消息推送方法、装置、电子设备及计算机可读介质 | |
KR101871383B1 (ko) | 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템 | |
US20080027996A1 (en) | Method and system for synchronizing data using a presence service | |
CN112311825B (zh) | 消息推送方法、装置、推送服务器及可读存储介质 | |
CN112527530B (zh) | 消息处理方法、装置、设备、存储介质及计算机程序产品 | |
CN109905431A (zh) | 消息处理方法及系统、存储介质、电子设备 | |
JP6067714B2 (ja) | イベントデータを取得するスケールアウトシステム | |
CN109428926B (zh) | 一种调度任务节点的方法和装置 | |
US7895314B1 (en) | System and method for administering a device via instant messaging | |
US9043415B2 (en) | Managing a subscription hierarchy in presence systems | |
CN113986582A (zh) | 一种实时数据推送方法、装置、设备及存储介质 | |
CN107463562A (zh) | 一种信息处理方法、系统及服务器 | |
CN111338882A (zh) | 数据监控方法、装置、介质及电子设备 | |
CN112217648B (zh) | 一种消息群发的方法以及相关装置 | |
CN108494880B (zh) | 基于大规模数据中心管理的通信方法及系统 | |
CN118656098A (zh) | 配置数据更新方法、装置、计算机设备、可读存储介质和程序产品 | |
CN112134783A (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 |