CN112764951A - 消息广播方法、装置、电子设备及存储介质 - Google Patents
消息广播方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112764951A CN112764951A CN202110113077.XA CN202110113077A CN112764951A CN 112764951 A CN112764951 A CN 112764951A CN 202110113077 A CN202110113077 A CN 202110113077A CN 112764951 A CN112764951 A CN 112764951A
- Authority
- CN
- China
- Prior art keywords
- target
- data set
- data
- updated
- timestamp
- 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
- 238000000034 method Methods 0.000 title claims abstract description 80
- 230000008859 change Effects 0.000 claims abstract description 300
- 230000004931 aggregating effect Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 abstract description 23
- 230000003993 interaction Effects 0.000 abstract description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- 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
Abstract
本申请公开了一种消息广播方法、装置、电子设备及存储介质,涉及计算机技术领域。该方法包括:获取广播时间间隔内的目标变更数据以及所述目标变更数据对应的变更时间戳;基于所述目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合;基于所述更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个所述元素对应的内容进行广播。本申请通过更新目标数据集合的方式广播部分消息,在满足正常交互的同时能够减少广播消息的数量,有效减少广播消息在高峰时的流量占用,减少瞬时流量超过系统处理极限的情况,减少系统负载。
Description
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种消息广播方法、装置、电子设备及存储介质。
背景技术
对消息进行广播作为网络环境中一种常用消息发送方式,主要适用于需要将同一个消息统一发送给多个对象的场景。然而,相关技术中在对消息进行广播时,存在瞬时流量超过系统处理极限的情况,从而对业务系统造成影响。
发明内容
鉴于上述问题,本申请实施例提出了一种消息广播方法、装置、电子设备及存储介质,以改善上述问题。
第一方面,本申请实施例提供了一种消息广播方法,方法包括:获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳;基于目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合;基于更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个元素对应的内容进行广播。
第二方面,本申请实施例提供了一种消息广播装置,装置包括:数据获取模块、数据集合更新模块以及内容广播模块。其中,数据获取模块,用于获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳;数据集合更新模块,用于基于目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合;内容广播模块,用于基于更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个元素对应的内容进行广播。
第三方面,本申请实施例提供了一种电子设备,包括处理器以及存储器;一个或多个程序被存储在存储器中并被配置为由处理器执行以实现上述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有程序代码,其中,在程序代码被处理器运行时执行上述的方法。
第五方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的方法。
本申请实施例提供的一种消息广播方法、装置、电子设备及存储介质,在获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳之后,先基于目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合,再基于更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个元素对应的内容进行广播。由于广播的是更新后的数据集合中的元素,而更新后的数据集合是基于预设广播时间段内获取的目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新得到的,因此本申请可以基于数据之间存在关联性的特点,通过更新目标数据集合的方式广播部分消息,即不会对所有的目标更新数据均进行广播,相较于传统消息队列广播消息的方式中的对所有变更数据均进行广播的方式,能够减少广播消息的数量,有效减少广播消息在高峰时的流量占用,减少瞬时流量超过系统处理极限的情况,减少系统负载,同时,再次由于本申请中是通过更新目标数据集合的方式广播部分消息,最终广播的消息均是目标对象实际关心的,因此即使只广播部分消息也能够满足正常交互的需求。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提出的一种应用环境的示意图;
图2示出了本申请一实施例提出的一种消息广播方法的流程图;
图3示出了本申请一实施例提出的另一种消息广播方法的流程图;
图4示出了图3所示实施例提出的一种消息广播方法中S230的一种实施方式的流程图;
图5示出了图3所示实施例提出的一种消息广播方法中S230的一种流程示意图;
图6示出了本申请一实施例提出的一种第一数据集合的示意图;
图7示出了本申请一实施例提出的另一种消息广播方法的流程图;
图8示出了本申请一实施例提出的一种消息队列的内部结构示意图;
图9示出了本申请一实施例提出的一种消息广播系统的结构示意图;
图10示出了本申请一实施例提出的另一种消息广播方法的流程图;
图11示出了本申请一实施例提出的一种消息广播装置的框图;
图12示出了用于执行根据本申请实施例的消息广播方法的一种电子设备的结构框图;
图13示出了本申请实施例的用于保存或者携带实现根据本申请实施例的消息广播方法的程序代码的存储单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
网络环境中会产生各种数据,在存在数据交互的场景中,这些数据可以作为消息从一个节点发送到另外一个节点。其中,一些数据是需要统一发送给多个对象的,这类数据通常不具备特异性,即发送给每个对象的数据都是相同的。对于这类数据,通常可以采用广播的方式发送。
例如,在直播应用中的频道消息发送这种场景中,频道内某些数据是需要作为消息统一发送给频道内所有用户的,例如,贵宾用户进出频道产生的数据,这种情况下,可以通过频道内广播的方式发送消息。
又例如,电商系统中商品拍卖这种场景中,各个用户对于某个商品的拍卖操作产生的数据是需要作为消息统一发送给拍卖相关的所有用户的。例如,用户甲对于商品A的加价操作需要统一发送给拍卖相关的所有用户,以便于各个用户了解商品价格。
采用广播的方式发送消息可以简化后端服务的处理逻辑,但是发明人在对相关消息广播的方法进行研究发现,广播在简化后端服务处理的时候,有明显的流量扩张现象,而且这种扩张是随需要发送消息的对象量增加而增加,如果不对广播消息做限制,容易造成瞬时的高流量,一旦瞬时流量达到系统处理极限,不仅会影响系统处理效率,而且有可能对业务系统中的其它服务造成影响。
相关技术中存在一些流量控制的通用方案,例如通过消息队列,暂存未处理的消息,然后系统根据自己服务的处理能力去处理消息,然而大多数消息是存在时效性的,因此,在有时效性的场景中,还需要加上超时时间,超过处理能力且超时的消息可能要做丢弃处理,这就导致传统的消息队列的方式会丢弃消息,从而影响正常交互的问题。
为了改善上述问题,发明人对消息的内容进行了研究,并研究发现部分数据之间其实是有一定关联性的。以直播应用中的频道消息发送这种场景为例,例如,在贵宾用户进出频道这种场景中,贵宾用户甲、贵宾用户乙可能进出的是同一个频道,该示例中的数据之间的关联性在于同一个频道;又例如,贵宾用户甲可能在短时间内出现多次进出频道的行为,该示例中的数据之间的关联性在于同一个用户。
基于上述数据之间关联性这个发现,发明人进行进一步思考发现,如果将频道看做一个维度,那么同一个频道下各个贵宾用户的操作可以聚合为一个消息进行广播,从而可以减少消息的数量;又如果,将同一个贵宾用户看做一个维度,那么同一个贵宾用户在不同时间点产生了进出频道数据,但是考虑到业务层面只关心最近一次用户行为,因此,将该贵宾用户在下一次消息广播之前的多个操作聚合为一个消息进行广播,即取该贵宾用户在下一次消息广播之前的最新的数据就行,从而可减少消息的数量。
因此,发明人提出了本申请提供的消息广播方法、装置、电子设备及存储介质,在该方法中,在获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳,先基于目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合,再基于更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个元素对应的内容进行广播。
前述方式中,由于广播的是更新后的数据集合中的元素,而更新后的数据集合是基于预设广播时间段内获取的目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新得到的,因此本申请可以基于数据之间存在关联性的特点,通过更新目标数据集合的方式广播部分消息,即不会对所有的目标更新数据均进行广播,相较于传统消息队列广播消息的方式中的对所有变更数据均进行广播的方式,能够减少广播消息的数量,同时,再次由于本申请中是通过更新目标数据集合的方式广播部分消息,最终广播的消息均是目标对象实际关心的,因此即使只广播部分消息也能够满足正常交互的需求。
在对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及一种应用环境进行介绍。
如图1所示,图1所示为本申请实施例所提出的一种应用环境的示意图。其中,包括有网络连接的服务器110和客户端120。其中,客户端120的数量为多个,图1仅以2个为例进行说明。
其中,服务器110可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。客户端120所在的电子设备可以为智能手机外、平板电脑、笔记本电脑、台式计算机、智能手表等,但并不局限于此。
下面将结合附图具体描述本申请的各实施例。
请参阅图2,图2所示为本申请一实施例提出的一种消息广播方法的流程图,该方法可以应用于服务器,该方法包括:
S110,获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳。
可以理解的是,操作客户端的目标对象在发起业务操作之后,会导致业务数据变更,因此,目标变更数据可以指目标对象在发起业务操作之后,导致发生变更的业务数据。其中,目标变更数据对应的变更时间戳是指业务数据变更时的时间戳。
示例地,在前述提到的直播应用中的频道消息发送这种场景中,客户端对应的用户甲可能发起进频道1的业务操作,此时导致了频道1内的业务数据中的用户数据变更,因此,可以生成目标变更数据,此时,目标变更数据包括的内容可以是:用户甲进入频道1。
又例如,在前述提到的电商系统中商品拍卖这种场景中,客户端对应的用户甲可能发起对商品1进行叫价的业务操作,此时导致商品1的业务数据中的拍卖价格数据变更,因此,可以生成目标变更数据,此时,目标变更数据包括的内容可以是:用户甲对商品1进行叫价。
其中,需要说明的是,在客户端发起业务操作的对象除了可以是正常的用户之外,在一些存在虚拟、作弊的情况下,在客户端发起业务操作的对象也可以是AI(ArtificialIntelligence,人工智能),即AI在客户端发起的业务操作也可能生成目标变更数据。
如前述内容可知,传统的消息队列仅能够暂存未处理的消息,然后再根据自己服务的处理能力去处理消息,在广播完消息队列中前一个消息之后,随即广播后一个消息,依次类推,本质上未对待发送的消息进行处理,仅仅对超过处理能力且超时的消息进行丢弃,在进行流量控制的同时也影响了正常交互。因此,为了能够在不影响正常交互的情况下,避免瞬时流量过大而超过系统处理极限,即起到流量控制的效果,可以预先设置每次广播消息的时间间隔,首先获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳,然后对广播时间间隔内的目标变更数据进行处理之后,再进行广播。
其中,获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳的方式可以有多种。可选地,可以是实时获取,也即每检测到一次业务数据变更,便获取一次目标变更数据;可选地,也可以是在广播时间间隔到达的时候再获取广播时间间隔内的所有目标变更数据。
其中,每次广播消息的时间间隔可以根据用户能够容忍的时间延迟以及系统能够处理的短时间消息最大量进行确定。
对于对时间延迟不是那么敏感的场景,即用户能够容忍较大的时间延迟,例如,前述提到的直播应用中的频道消息发送这种场景,用户能够容忍较大的时间延迟,例如即使延迟3秒或者5秒等,也不会对用户体验造成什么影响,那么这种场景下,广播消息的时间间隔可以设置较大值。
对于对时间延迟较为敏感的场景,即用户能够容忍较小的时间延迟,例如,前述提到的电商系统中商品拍卖这种场景,用户能够容忍较小的时间延迟,例如延迟3秒或者5秒等,则会影响用户的再次叫价行为,从而造成损失,那么这种场景下,广播消息的时间间隔可以设置较小值,例如,可以设置为0.5秒。
此外,广播消息的时间间隔还可以根据短时间内系统能够容忍的消息最大量而确定,例如,系统3秒内能够容忍的消息最大量为300MB,那么如果短时间内消息数量较大,超过了300MB的数量,此时,广播消息的时间间隔可以设置较小值,例如选择2秒作为广播消息的时间间隔,以避免选择3秒作为广播消息的时间间隔,从而避免短时间内消息超过系统能够容忍的最大量。
采用本申请实施例的方法,通过改变广播时间间隔,能够适应不同时间延迟或者系统带宽的系统。
S120,基于目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合。
其中,目标数据集合是指消息队列中的与目标变更数据对应的数据集合,目标集合的数量可以为1个,也可以为多个,每个目标数据集合中包括多个元素,目标变更数据与目标集合中的一个元素对应。
因此,在获取到广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳之后,便可以对消息队列中的目标数据集合进行更新,得到更新后的数据集合。
其中,结合前述内容可知,获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳的方式可以是实时获取,也可以是在广播时间间隔到达的时候再获取广播时间间隔内的所有目标变更数据。
因此,对于实时获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳这种情况,相应地,对消息队列中的目标数据集合进行更新则是,每次获取到广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳,则对消息队列中的目标数据集合进行更新一次,最终得到更新后的数据集合。
而对于在广播时间间隔到达的时候再获取广播时间间隔内的所有目标变更数据这种情况,相应地,对消息队列中的目标数据集合进行更新则是,挑选出与目标数据集合中的每个元素各自对应的目标更新数据中时间戳最大的目标更新数据,用时间戳最大的目标更新数据对对应的目标数据集合进行更新,最终得到更新后的数据集合。
其中,可以理解的是,对消息队列中目标数据集合进行更新具体可以是对目标数据集合中的对应元素进行更新。
作为一种方式,更新后的数据集合中的各个元素可以包括目标变更数据以及对应的变更时间戳。
S130,基于更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个元素对应的内容进行广播。
其中,更新后的数据集合中的各个元素对应的时间戳可以理解为更新后的数据集合中的各个元素对应的变更时间戳。
为了使得在广播时间间隔内,消息队列中的更早更新的消息能够更早的广播,本实施例中,可以基于更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个元素对应的内容进行广播。
作为一种方式,更新后的数据集合中的各个元素对应的时间戳的先后顺序可以是从消息队列的某个集合中取出该集合中的所有元素之后,再根据各元素之间的时间戳大小进行排序得到的。
作为另外一种方式,更新后的数据集合中的各个元素对应的时间戳的先后顺序还可以是消息队列自动排列得到的。在这种情况下,消息队列中的集合可以采用有序集合,有序集合可以按照需求对集合中的元素自动进行排序,通过有序集合实现上述根据时间戳进行排序的功能。
本申请提供的一种消息广播方法,在获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳之后,先基于目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合,再基于更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个元素对应的内容进行广播。由于广播的是更新后的数据集合中的元素,而更新后的数据集合是基于预设广播时间段内获取的目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新得到的,因此本申请可以基于数据之间存在关联性的特点,通过更新目标数据集合的方式广播部分消息,即不会对所有的目标更新数据均进行广播,相较于传统消息队列广播消息的方式中的对所有变更数据均进行广播的方式,能够减少广播消息的数量,有效减少广播消息在高峰时的流量占用,减少瞬时流量超过系统处理极限的情况,减少系统负载,同时,再次由于本申请中是通过更新目标数据集合的方式广播部分消息,最终广播的消息均是目标对象实际关心的,因此即使只广播部分消息也能够满足正常交互的需求。
另外,结合前述内容可知,数据之间的关联性可以有多种关联方式。
作为一种方式,数据之间的关联性可以在于数据之间的目标标识,其中,目标标识是指目标对象的标识。例如,贵宾用户进出频道这种场景中,目标标识可以是贵宾用户标识,即数据之间的关联性在于贵宾用户标识,又例如,在电商系统中商品拍卖这种场景中,目标标识可以是参与拍卖叫价的用户标识,即数据之间的关联性在于参与拍卖叫价的用户标识。
作为一种方式,数据之间的关联性可以在于数据之间的属性标识,其中,属性标识是指目标对象发起的业务操作中针对的业务对象的属性的标识。例如,贵宾用户进出频道这种场景中,属性标识可以是频道标识,即数据之间的关联性在于频道标识,又例如,在电商系统中商品拍卖这种场景中,属性标识可以是参与拍卖商品标识,即数据之间的关联性在于参与拍卖商品标识。
因此,数据之间的关联性不同,可以有不同的消息广播方法。
请参阅图3,图3所示为本申请另一实施例提出的一种消息广播方法的流程图,该方法中,主要考虑的数据之间的关联性是目标标识,在这种情况下,目标变更数据包括目标标识,第一数据集合中的每个第一元素对应一个目标标识,该方法可以包括:
S210,获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳。
S220,从第一数据集合中查找与目标变更数据具有相同目标标识的目标第一元素。
其中,第一数据集合是指消息队列中用于存储第一元素的集合,第一数据集合中的每个第一元素可以包括目标标识、目标标识对应的数据内容以及目标标识对应的时间戳。因此,第一数据集合中的每个第一元素对应一个目标标识。
目标第一元素是指第一数据集合中与目标变更数据具有相同目标标识第一元素。
因此,为了后续能够基于目标变更数据以及对应的变更时间戳,对目标第一元素包括的目标内容以及时间戳进行更新,在获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳之后,可以从第一数据集合中查找与目标变更数据具有相同目标标识的目标第一元素。
在具体示例中,例如在贵宾用户进出频道这种场景中,假设第一数据集合中包括3个第一元素,第一元素1用于存储贵宾用户甲对应的数据内容以及数据内容产生的时间戳,第一元素2用于存储贵宾用户已对应的数据内容以及数据内容产生的时间戳,第一元素3用于存储贵宾用户丙对应的数据内容以及数据内容产生的时间戳,若目标变更数据的目标标识为贵宾用户甲,则从第一数据集合中查找出用于存储贵宾用户甲的数据内容以及数据内容产生的时间戳的第一元素1。
S230,基于目标变更数据以及对应的变更时间戳,对目标第一元素包括的目标内容以及时间戳进行更新,得到更新后的第一数据集合。
由于目标第一元素包括目标内容以及时间戳,因此,在获取到目标变更数据以及对应的变更时间戳之后,便可以基于目标变更数据以及对应的变更时间戳,对目标第一元素包括的目标内容以及时间戳进行更新,从而得到更新后的第一数据集合。
作为一种方式,可以使用目标变更数据替换第一元素包括的目标内容,以及使用变更时间戳替换第一元素包括的时间戳的方式,实现对目标第一元素包括的目标内容以及时间戳进行更新。
作为另外一种方式,如图4所示,基于目标变更数据以及对应的变更时间戳,对目标第一元素包括的目标内容以及时间戳进行更新,得到更新后的第一数据集合,包括:
S231,从第一数据集合中读取并删除目标第一元素包括的内容以及时间戳。
本实施例中,在从第一数据集合中查找与目标变更数据具有相同目标标识的目标第一元素之后,可以从第一数据集合中读取并删除目标第一元素包括的内容以及时间戳。
S232,将目标变更数据以及对应的变更时间戳分别作为更新后的目标第一元素包括的内容以及时间戳,将更新后的目标第一元素写入第一数据集合,得到更新后的第一数据集合。
本实施例中,在从第一数据集合中读取并删除目标第一元素包括的内容以及时间戳之后,便可以将目标变更数据以及对应的变更时间戳分别作为更新后的目标第一元素包括的内容以及时间戳,将更新后的目标第一元素写入第一数据集合,得到更新后的第一数据集合。
作为一种方式,如图5所示,在获取目标变更数据data之后,可以首先执行读取同目标标识msg的操作,即执行msg=msg_que.get,然后再执行更新msg的操作,即执行msg=msg_add.(data),最后便可以执行重新写入队列的操作,即执行msg_que.push(timestamp,msg),最终得到更新后的第一数据集合。
S240,基于更新后的第一数据集合中的各个第一元素包括的时间戳的先后顺序,依次对更新后的第一数据集合中的各个第一元素的内容进行广播。
可以理解的是,由于更新后的第一数据集合中的各个第一元素包括有时间戳信息,因此,为了可以使得更早变更的第一元素的内容得以最早进行广播,可以基于更新后的第一数据集合中的各个第一元素包括的时间戳的先后顺序,依次对更新后的第一数据集合中的各个第一元素的内容进行广播。
下面以一个具体示例来对本实施例的方案进行详细说明:
继续沿用贵宾用户进出频道这种场景,假设第一数据集合中包括3个第一元素,第一元素1用于存储贵宾用户甲对应的数据内容以及数据内容产生的时间戳,第一元素2用于存储贵宾用户已对应的数据内容以及数据内容产生的时间戳,第一元素3用于存储贵宾用户丙对应的数据内容以及数据内容产生的时间戳。且假设在该场景中,发生的行为为:在时间戳T1时,甲进频道1,在时间戳T2时,甲出频道1,在时间戳T3,乙进频道2,在时间戳T4丙进频道1,在时间戳T5甲进频道1。其中,时间戳T1-T5依次增大,且时间戳T1-T5在同一个广播时间间隔内。
这种情况下,在获取到目标变更数据“甲进频道1”以及对应的变更时间戳“时间戳T1”时,针对第一元素1,可以使用“甲进频道1”以及“时间戳T1”对第一元素1进行更新,得到更新后的第一数据集合,此时,第一数据集合中的第一元素1包括的目标内容为“甲进频道1”,时间戳为“时间戳T1”。
在获取到目标变更数据“甲出频道1”以及对应的变更时间戳“时间戳T2”时,针对第一元素1,可以使用“甲出频道1”以及“时间戳T2”对更新后的第一数据集合中的第一元素1进行更新,得到再次更新后的第一数据集合,此时,第一数据集合中的第一元素1包括的目标内容为“甲出频道1”,时间戳为“时间戳T2”。
接着,在获取到目标变更数据“乙进频道2”以及对应的变更时间戳“时间戳T3”时,同样可以得到再次更新的第一数据集合,此时,第一数据集合中的第一元素2包括的目标内容为“乙进频道2”,时间戳为“时间戳T3”。
接着,在获取到目标变更数据“丙进频道1”以及对应的变更时间戳“时间戳T4”时,同样可以得到再次更新的第一数据集合,此时,第一数据集合中的第一元素3包括的目标内容为“丙进频道1”,时间戳为“时间戳T4”。
接着,在获取到目标变更数据“甲进频道1”以及对应的变更时间戳“时间戳T5”时,可以使用“甲进频道1”以及“时间戳T5”对更新后的第一数据集合中的第一元素1进行更新,得到再次更新后的第一数据集合,此时,第一数据集合中的第一元素1包括的目标内容为“甲进频道1”,时间戳为“时间戳T5”。
在获取广播时间间隔内的上述所有目标变更数据以及目标变更数据对应的变更时间戳之后,便可以得到最终的更新后的第一数据集合,如图6所示,图6示出了本实施例提供的一种第一数据集合的示意图,此时第一数据集合中的第一元素1包括的目标内容为“甲进频道1”,时间戳为“时间戳T5”,第一元素2包括的目标内容为“乙进频道2”,时间戳为“时间戳T3”,第一元素3包括的目标内容为“丙进频道1”,时间戳为“时间戳T4”。且由于时间戳T3、时间戳T4、时间戳T5依次增大,因此,在消息广播的广播时间到来时,首先,以一条广播消息广播第一元素2对应的内容,即“用户乙在时间戳T3进频道2”,然后再以另一条广播消息广播第一元素3对应的内容,即“用户丙在时间戳T4进频道1”,最后再以另一条广播消息广播第一元素1对应的内容,即“用户甲在时间戳T5进频道1”。也即最终广播的消息从5条减少到3条。
下面再以一个具体示例来对本实施例的效果进行详细说明:
假设整个广播系统能接受的流量峰值为每秒100MB大小数据和每秒100次消息,单个广播消息的大小平均为1MB,普通情况下实时更新数据,每个用户行为都触发一次更新,则每秒只能处理100次数据更新,即广播100个广播消息,更多的消息超过了广播系统的处理能力。如果广播消息的时间间隔是2秒,只简单做时间范围的聚合,则最多也只能聚合200次数据更新,即广播200个广播消息,因为超过了流量带宽的限制。如果平均每个用户数据在1s内数据变更2次,采用本申请实施例的方案,2秒内则平均可以处理400次数据更新。
从上述示例可以看出,本申请实施例的消息广播方法可以将广播时间间隔内具有同一目标标识的目标变更数据根据对应的变更时间戳进行聚合,即从目标标识的维度对目标变更数据进行聚合,从而在不影响正常交互的情况下,减少广播消息的数量,进而有效减少广播消息在高峰时的流量占用,减少瞬时流量超过系统处理极限的情况,减少系统负载。
请参阅图7,图7所示为本申请另一实施例提出的一种消息广播方法的流程图,该方法中,主要考虑的数据之间的关联性是目标标识以及属性标识,在这种情况下,目标变更数据包括目标标识以及属性标识,第一数据集合中的每个第一元素对应一个目标标识,第二数据集合中的每个第二元素对应一个属性标识,该方法可以包括:
S310,获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳。
S320,从第一数据集合中查找与目标变更数据具有相同目标标识的目标第一元素。
S330,基于目标变更数据以及对应的变更时间戳,对目标第一元素包括的目标内容以及时间戳进行更新,得到更新后的第一数据集合。
S340,从第二数据集合中查找与目标变更数据具有相同属性标识的目标第二元素。
其中,第二数据集合是指消息队列中用于存储第二元素的集合,第二据集合中的每个第二元素可以包括属性标识以及属性标识对应的时间戳。因此,第二数据集合中的每个第二元素对应一个属性标识。
目标第二元素是指第二数据集合中与目标变更数据具有相同属性标识第二元素。
因此,为了后续能够基于目标变更数据对应的变更时间戳,对目标第二元素包括的时间戳进行更新,在获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳之后,还可以从第二数据集合中查找与目标变更数据具有相同属性标识的目标第二元素。
在具体示例中,仍然以贵宾用户进出频道这种场景中,假设在该场景中具体包括频道1和频道2这2个频道,此时,第二数据集合中则可以包括2个第二元素,第二元素1用于存储频道1以及频道1内贵宾用户进出频道操作的时间戳,第二元素2用于存储频道2以及频道2内贵宾用户进出频道操作的时间戳。若目标变更数据的属性标识为频道1,则从第二数据集合中查找出用于存储频道1以及频道1内贵宾用户进出频道操作的时间戳的第二元素1。
作为一种方式,可以采用redis(Remote Dictionary Server,远程字典服务)实现消息队列。通过redis实现消息队列有一定通用性的,可以应用于不同的数据更新。便于对消息进行具体业务层面的聚合处理。
S350,基于目标变更数据对应的变更时间戳,对目标第二元素包括的时间戳进行更新,得到更新后的第二数据集合。
由于目标第二元素包括属性标识以及属性标识对应的时间戳,因此,在获取到目标变更数据对应的变更时间戳之后,便可以基于目标变更数据对应的变更时间戳,对目标第二元素包括的时间戳进行更新,从而得到更新后的第二数据集合。
作为一种方式,可以直接使用目标变更数据对应的变更时间戳替换第二元素包括的时间戳,实现对目标第二元素包括的时间戳进行更新。
作为另外一种方式,还可以从第二数据集合中读取并删除目标第二元素包括时间戳,然后将目标变更数据对应的变更时间戳作为更新后的目标第二元素包括的时间戳,将更新后的目标第二元素写入第二数据集合,得到更新后的第二数据集合。
S360,基于更新后的第一数据集合中的各个第一元素对应的属性标识,对具有相同属性标识的第一元素进行聚合,得到第一子集合,其中,每个第一子集合分别与更新后的第二数据集合中的一个第二元素的属性标识对应。
本实施例中,由于目标变更数据可以包括目标标识以及属性标识,因此,为了进一步减少广播消息的数量,可以考虑再从属性标识的维度,对更新后的第一数据集合中的各个第一元素再次进行聚合,即对具有相同属性标识的第一元素进行聚合,得到第一子集合,可以理解的是,由于是从属性标识的维度对更新后的第一数据集合中的各个第一元素再次进行聚合的,因此,每个第一子集合均分别对应一个属性标识。
此外,为了提高第一数据集合以及第二数据集合中元素的更新效率,可以建立第一子集合与第二数据集合中的元素的对应关系,即每个第一子集合分别与更新后的第二数据集合中的一个第二元素的属性标识对应。如此,在更新第一数据集合或者第二数据集合时,便可以直接通过属性标识在第一子集合中查找到该属性标识对应的数据,而不用再通过遍历第一子集合数据的方式查找该属性标识对应的第一子集合。同时,将每个第一子集合分别与更新后的第二数据集合中的一个第二元素的属性标识对应,也能够使得后续在广播消息的时候,可以直使用于第二数据集合中的各个元素包括的时间戳,以便于区分各个第一子集合的内容的广播先后顺序。
S370,基于更新后的第二数据集合中的各个第二元素包括的时间戳的先后顺序,依次对更新后的第二数据集合中的各个第二元素的属性标识对应的第一子集合的内容进行广播。
可以理解的是,本实施例中是同时从目标标识以及属性标识两个维度对广播时间间隔内的目标变更数据进行聚合,因此,在广播消息的时候仅需要考虑更新后的第二数据集合中的各个第二元素包括的时间戳信息,因此,为了可以使得更早变更的第一子集合的内容得以更早进行广播,可以基于更新后的第二数据集合中的各个第二元素包括的时间戳的先后顺序,依次对更新后的第二数据集合中的各个第二元素的属性标识对应的第一子集合的内容进行广播。
下面以一个具体示例来对本实施例的方案进行详细说明:
继续沿用贵宾用户进出频道这种场景,假设第一数据集合中包括3个第一元素,第一元素1用于存储贵宾用户甲对应的数据内容以及数据内容产生的时间戳,第一元素2用于存储贵宾用户已对应的数据内容以及数据内容产生的时间戳,第一元素3用于存储贵宾用户丙对应的数据内容以及数据内容产生的时间戳;第二数据集合中包括2个第二元素,第二元素1用于存储频道1以及频道1内贵宾用户进出频道操作的时间戳,第二元素2用于存储频道2以及频道2内贵宾用户进出频道操作的时间戳。
假设在该场景中,发生的行为为:在时间戳T1时,甲进频道1,在时间戳T2时,甲出频道1,在时间戳T3,乙进频道2,在时间戳T4丙进频道1,在时间戳T5甲进频道1。其中,时间戳T1-T5依次增大,且时间戳T1-T5在同一个广播时间间隔内。
这种情况下,在获取到目标变更数据“甲进频道1”以及对应的变更时间戳“时间戳T1”时,针对第一元素1,可以使用“甲进频道1”以及“时间戳T1”对第一元素1进行更新,得到更新后的第一数据集合,此时,第一数据集合中的第一元素1包括的目标内容为“甲进频道1”,时间戳为“时间戳T1”。此外,还可以使用“时间戳T1”对与“频道1”具有相同属性标识的第二元素1进行更新,得到更新后的第二数据集合,此时,第二数据集合中的第二元素1包括的内容为“频道1”,时间戳为“时间戳T1”。
在获取到目标变更数据“甲出频道1”以及对应的变更时间戳“时间戳T2”时,针对第一元素1,可以使用“甲出频道1”以及“时间戳T2”对更新后的第一数据集合中的第一元素1进行更新,得到再次更新后的第一数据集合,此时,第一数据集合中的第一元素1包括的目标内容为“甲出频道1”,时间戳为“时间戳T2”。此外,还可以使用“时间戳T2”对与“频道1”具有相同属性标识的第二元素1进行更新,得到更新后的第二数据集合,此时,第二数据集合中的第二元素1包括的内容为“频道1”,时间戳为“时间戳T2”。
接着,在获取到目标变更数据“乙进频道2”以及对应的变更时间戳“时间戳T3”时,同样可以得到再次更新的第一数据集合,此时,第一数据集合中的第一元素2包括的目标内容为“乙进频道2”,时间戳为“时间戳T3”。此外,还可以使用“时间戳T3”对与“频道2”具有相同属性标识的第二元素2进行更新,得到更新后的第二数据集合,此时,第二数据集合中的第二元素2包括的内容为“频道2”,时间戳为“时间戳T3”。
接着,在获取到目标变更数据“丙进频道1”以及对应的变更时间戳“时间戳T4”时,同样可以得到再次更新的第一数据集合,此时,第一数据集合中的第一元素3包括的目标内容为“丙进频道1”,时间戳为“时间戳T4”。此外,还可以使用“时间戳T4”对与“频道1”具有相同属性标识的第二元素1进行更新,得到更新后的第二数据集合,此时,第二数据集合中的第二元素1包括的内容为“频道1”,时间戳为“时间戳T4”。
接着,在获取到目标变更数据“甲进频道1”以及对应的变更时间戳“时间戳T5”时,可以使用“甲进频道1”以及“时间戳T5”对更新后的第一数据集合中的第一元素1进行更新,得到再次更新后的第一数据集合,此时,第一数据集合中的第一元素1包括的目标内容为“甲进频道1”,时间戳为“时间戳T5”。此外,还可以使用“时间戳T5”对与“频道1”具有相同属性标识的第二元素1进行更新,得到更新后的第二数据集合,此时,第二数据集合中的第二元素1包括的内容为“频道1”,时间戳为“时间戳T5”。
在获取广播时间间隔内的上述所有目标变更数据以及目标变更数据对应的变更时间戳之后,便可以得到最终的更新后的消息队列,更新后的消息队列中包括第一数据集合以及第二数据集合,如图8所示,图8示出了本实施例提供的一种消息队列的内部结构示意图。
如图8所示,消息队列中的第二数据集合中的第二元素1包括:频道1,时间戳T5,与第二元素的属性标识对应的第一子集合包括:目标内容为“甲进频道1”,时间戳为“时间戳T5”以及目标内容为“丙进频道1”,时间戳为“时间戳T4”;
消息队列中的第二数据集合中的第二元素2包括:频道2,时间戳T3,与第二元素的属性标识对应的第一子集合包括:目标内容为“乙进频道2”,时间戳为“时间戳T3”。
从上述示例可以看出,最终广播的消息从5条减少到2条。本申请实施例的消息广播方法可以将广播时间间隔内具有同一目标标识的目标变更数据根据对应的变更时间戳进行聚合,以及将具有同一属性标识的目标变更数据根据对应的变更时间戳进行聚合,即同时从目标标识以及属性标识两个维度对目标变更数据进行聚合,从而在不影响正常交互的情况下,进一步减少广播消息的数量,进而有效减少广播消息在高峰时的流量占用,减少瞬时流量超过系统处理极限的情况,减少系统负载。
此外,考虑到每次广播时间间隔结束之后,可以将消息队列中的消息全部广播完,那么在下一次广播时间间隔开始的时候,消息队列的集合中不再存在内容,因此,从第一数据集合中查找与目标变更数据具有相同目标标识的目标第一元素之前,还包括:在第一数据集合中不存在与目标变更数据具有相同目标标识的目标第一元素时,将目标变更数据以及对应的变更时间戳分别作为第一数据集合中的第一元素包括的内容以及时间戳,添加到第一数据集合中,得到第一数据集合。
本实施例中,在获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳之后,会判断消息队列的第一数据集合中是否存在与目标变更数据具有相同目标标识的目标第一元素,如果存在与目标变更数据具有相同目标标识的目标第一元素,则执行前述S320-S330的步骤;如果不存在与目标变更数据具有相同目标标识的目标第一元素,将目标变更数据以及对应的变更时间戳分别作为第一数据集合中的第一元素包括的内容以及时间戳,添加到第一数据集合中,得到第一数据集合,以便于后续可以执行前述S320-S330的步骤。
同样地,从第二数据集合中查找与目标变更数据具有相同属性标识的目标第二元素之前,还包括:
在第二数据集合中不存在与目标变更数据具有相同属性标识的目标第二元素时,将目标变更数据包括的属性标识以及对应的变更时间戳分别作为第二数据集合中的第二元素包括的属性标识以及时间戳,添加到第二数据集合中,得到第二数据集合。
本实施例中,在获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳之后,还会判断消息队列的第二数据集合中是否存在与目标变更数据具有相同属性标识的目标第二元素,如果存在与目标变更数据具有相同属性标识的目标第一元素,则执行前述S340-S370的步骤;如果不存在与目标变更数据具有相同属性标识的目标第二元素,将目标变更数据包括的属性标识以及对应的变更时间戳分别作为第二数据集合中的第二元素包括的属性标识以及时间戳,添加到第二数据集合中,得到第二数据集合,以便于后续可以继续执行前述S340-S370的步骤。
请参阅图9,图9所示为本申请另一实施例提出的一种消息广播系统的结构示意图,该系统可以用于执行图7所示的消息广播方法,该系统包括第一元素写入模块、第二元素写入模块、消息队列、定时消费模块以及广播模块。
第一元素写入模块,用于基于目标变更数据以及对应的变更时间戳,对目标第一元素包括的目标内容以及时间戳进行更新,得到更新后的第一数据集合。
第二元素写入模块,用于基于目标变更数据对应的变更时间戳,对目标第二元素包括的时间戳进行更新,得到更新后的第二数据集合。
消息队列,包括第一数据集合以及第二数据集合,用于存储第一数据集合以及第二数据集合。
定时消费模块,用于按照广播时间间隔定时从消息队列中取出更新后的第二数据集合中的各个第二元素的属性标识对应的第一子集合的内容,并发送到广播模块。
广播模块,用于基于更新后的第二数据集合中的各个第二元素包括的时间戳的先后顺序,依次对更新后的第二数据集合中的各个第二元素的属性标识对应的第一子集合的内容进行广播。
其中,图9所示的消息广播系统可以是运行于图1所示的服务器110内的系统。
请参阅图10,图10所示为本申请另一实施例提出的一种消息广播方法的流程图,该方法中,主要考虑的数据之间的关联性是属性标识,在这种情况下,目标变更数据包括属性标识,第三数据集合中的每个第三元素对应一个属性标识,该方法可以包括:
S410,获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳。
S420,从第三数据集合中查找与目标变更数据具有相同属性标识的目标第三元素。
其中,第三数据集合是指消息队列中用于存储第三元素的集合,第三据集合中的每个第三元素可以包括属性标识以及属性标识对应的时间戳。因此,第三数据集合中的每个第三元素对应一个属性标识。
目标第三元素是指第三数据集合中与目标变更数据具有相同属性标识第三元素。
因此,为了后续能够基于目标变更数据对应的变更时间戳,对目标第三元素包括的时间戳进行更新,在获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳之后,还可以从第三数据集合中查找与目标变更数据具有相同属性标识的目标第三元素。
S430,基于目标变更数据以及对应的变更时间戳,对目标第三元素包括的时间戳进行更新,得到更新后的第三数据集合。
由于目标第三元素包括属性标识以及属性标识对应的时间戳,因此,在获取到目标变更数据对应的变更时间戳之后,便可以基于目标变更数据对应的变更时间戳,对目标第三元素包括的时间戳进行更新,从而得到更新后的第三数据集合。
S440,基于各个目标变更数据对应的属性标识,对具有相同属性标识的目标变更数据进行聚合,得到第四数据集合,其中,每个第四数据集合分别与更新后的第三数据集合中的一个第三元素的属性标识对应。
本实施例中,由于目标变更数据可以包括属性标识,因此,为了减少广播消息的数量,还可以考虑从属性标识的维度,对具有相同属性标识的目标变更数据进行聚合,得到第四数据集合,可以理解的是,由于是从属性标识的维度对目标变更数据进行聚合的,因此,每个第四数据集合均分别对应一个属性标识。
将每个四集合分别与更新后的第三数据集合中的一个第三元素的属性标识对应,能够使得后续在广播消息的时候,可以直使用于第三数据集合中的各个元素包括的时间戳,以便于区分各个第四集合的内容的广播先后顺序。
S450,基于更新后的第三数据集合中的各个第三元素包括的时间戳的先后顺序,依次对更新后的第三数据集合中的各个第三元素的属性标识对应的第四数据集合的内容进行广播。
可以理解的是,由于更新后的第三数据集合中的各个第三元素包括有时间戳信息,因此,为了可以使得更早变更的第三数据集合中的各个第三元素的属性标识对应的第四数据集合的内容得以最早进行广播,可以直接基于更新后的第三数据集合中的各个第三元素包括的时间戳的先后顺序,依次对更新后的第三数据集合中的各个第三元素的属性标识对应的第四数据集合的内容进行广播。
本申请实施例的消息广播方法可以将广播时间间隔内具有同一属性标识的目标变更数据根据对应的变更时间戳进行聚合,即从属性标识的维度对目标变更数据进行聚合,从而在不影响正常交互的情况下,减少广播消息的数量,进而有效减少广播消息在高峰时的流量占用,减少瞬时流量超过系统处理极限的情况,减少系统负载。
请参阅图11,图11示出了本申请一实施例提出的一种消息广播装置500的框图,该装置500可以包括:数据获取模块510、数据集合更新模块520以及内容广播模块530。
数据获取模块510,用于获取广播时间间隔内的目标变更数据以及目标变更数据对应的变更时间戳;
数据集合更新模块520,用于基于目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合;
内容广播模块530,用于基于更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个元素对应的内容进行广播。
作为一种方式,目标数据集合包括第一数据集合,目标变更数据包括目标标识,第一数据集合中的每个第一元素对应一个目标标识,数据集合更新模块520可以包括:
目标第一元素查找子模块,用于从第一数据集合中查找与目标变更数据具有相同目标标识的目标第一元素;
第一数据集合更新子模块,用于基于目标变更数据以及对应的变更时间戳,对目标第一元素包括的目标内容以及时间戳进行更新,得到更新后的第一数据集合。
相应地,内容广播模块530包括:
第一内容广播子模块,用于基于更新后的第一数据集合中的各个第一元素包括的时间戳的先后顺序,依次对更新后的第一数据集合中的各个第一元素的内容进行广播。
作为一种方式,目标数据集合还包括第二数据集合,目标变更数据还包括属性标识,第二数据集合中的每个第二元素对应一个属性标识,消息广播装置500还包括:
目标第二元素查找模块,用于从第二数据集合中查找与目标变更数据具有相同属性标识的目标第二元素;
第二数据集合更新模块,用于基于目标变更数据对应的变更时间戳,对目标第二元素包括的时间戳进行更新,得到更新后的第二数据集合;
聚合模块,用于基于更新后的第一数据集合中的各个第一元素对应的属性标识,对具有相同属性标识的第一元素进行聚合,得到第一子集合,其中,每个第一子集合分别与更新后的第二数据集合中的一个第二元素的属性标识对应。
相应地,内容广播模块530包括:
第二内容广播子模块,用于基于更新后的第二数据集合中的各个第二元素包括的时间戳的先后顺序,依次对更新后的第二数据集合中的各个第二元素的属性标识对应的第一子集合的内容进行广播。
作为一种方式,消息广播装置500还包括:
第一数据集合获得模块,用于在第一数据集合中不存在与目标变更数据具有相同目标标识的目标第一元素时,将目标变更数据以及对应的变更时间戳分别作为第一数据集合中的第一元素包括的内容以及时间戳,添加到第一数据集合中,得到第一数据集合。
作为一种方式,消息广播装置500还包括:
第二数据集合获得模块,用于在第二数据集合中不存在与目标变更数据具有相同属性标识的目标第二元素时,将目标变更数据包括的属性标识以及对应的变更时间戳分别作为第二数据集合中的第二元素包括的属性标识以及时间戳,添加到第二数据集合中,得到第二数据集合。
作为一种方式,目标标识为用户标识,属性标识为频道标识。
作为一种方式,第一数据集合更新子模块包括:
读取并删除单元,用于从第一数据集合中读取并删除目标第一元素包括的内容以及时间戳;
写入单元,用于将目标变更数据以及对应的变更时间戳分别作为更新后的目标第一元素包括的内容以及时间戳,将更新后的目标第一元素写入第一数据集合,得到更新后的第一数据集合。
作为一种方式,目标数据集合包括第三数据集合,目标变更数据包括属性标识,第三数据集合中的每个第三元素对应一个属性标识,数据集合更新模块520可以包括:
目标第三元素查找子模块,用于从第三数据集合中查找与目标变更数据具有相同属性标识的目标第三元素;
第三数据集合更新子模块,用于基于目标变更数据以及对应的变更时间戳,对目标第三元素包括的时间戳进行更新,得到更新后的第三数据集合;
第四数据集合获得子模块,用于基于各个目标变更数据对应的属性标识,对具有相同属性标识的目标变更数据进行聚合,得到第四数据集合,其中,每个第四数据集合分别与更新后的第三数据集合中的一个第三元素的属性标识对应。
相应地,内容广播模块530包括:
第三内容广播子模块,用于基于更新后的第三数据集合中的各个第三元素包括的时间戳的先后顺序,依次对更新后的第三数据集合中的各个第三元素的属性标识对应的第四数据集合的内容进行广播。
本申请提供的一种消息广播装置,由于广播的是更新后的数据集合中的元素,而更新后的数据集合是基于预设广播时间段内获取的目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新得到的,因此本申请可以基于数据之间存在关联性的特点,通过更新目标数据集合的方式广播部分消息,即不会对所有的目标更新数据均进行广播,相较于传统消息队列广播消息的方式中的对所有变更数据均进行广播的方式,能够减少广播消息的数量,有效减少广播消息在高峰时的流量占用,减少瞬时流量超过系统处理极限的情况,减少系统负载,同时,再次由于本申请中是通过更新目标数据集合的方式广播部分消息,最终广播的消息均是目标对象实际关心的,因此即使只广播部分消息也能够满足正常交互的需求。
需要说明的是,本申请中装置实施例与前述方法实施例是相互对应的,装置实施例中具体的原理可以参见前述方法实施例中的内容,此处不再赘述。
下面将结合图12对本申请提供的一种电子设备进行说明。
请参阅图12,基于上述的消息广播方法,本申请实施例还提供的另一种包括可以执行前述消息广播方法的处理器104的电子设备200,该电子设备200可以为智能手机、平板电脑、计算机或者便携式计算机等设备。电子设备200还包括存储器104、网络模块106以及屏幕108。其中,该存储器104中存储有可以执行前述实施例中内容的程序,而处理器102可以执行该存储器104中存储的程序。
其中,处理器102可以包括一个或者多个用于处理数据的核以及消息矩阵单元。处理器102利用各种接口和线路连接整个电子设备200内的各个部分,通过运行或执行存储在存储器104内的指令、程序、代码集或指令集,以及调用存储在存储器104内的数据,执行电子设备200的各种功能和处理数据。可选地,处理器102可以采用数字信号处理(DigitalSignal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器102可集成中央处理器(Central Processing Unit,CPU)、图像处理器(GraphicsProcessing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器102中,单独通过一块通信芯片进行实现。
存储器104可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器104可用于存储指令、程序、代码、代码集或指令集。存储器104可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
网络模块106用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯,例如和音频播放设备进行通讯。网络模块106可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。网络模块106可与各种网络如互联网、企业内部网、无线网络进行通讯或者通过无线网络与其他设备进行通讯。上述的无线网络可包括蜂窝式电话网、无线局域网或者城域网。例如,网络模块106可以与基站进行信息交互。
屏幕108可以进行界面内容的显示,也可以用于响应触控手势。
需要说明的是,为了实现更多的功能,电子设备200还可以保护更多的器件,例如,还可以保护用于进行人脸信息采集的结构光传感器或者还可以保护用于采集虹膜的摄像头等。
请参考图13,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质1100中存储有程序代码,程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质1100可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质1100包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质1100具有执行上述方法中的任何方法步骤的程序代码1110的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1110可以例如以适当形式进行压缩。
基于上述的消息广播方法,根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的各种可选实现方式中提供的方法。
综上,本申请实施例提供的一种消息广播方法、装置、电子设备、存储介质及计算机程序产品或计算机程序,由于广播的是更新后的数据集合中的元素,而更新后的数据集合是基于预设广播时间段内获取的目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新得到的,因此本申请可以基于数据之间存在关联性的特点,通过更新目标数据集合的方式广播部分消息,即不会对所有的目标更新数据均进行广播,相较于传统消息队列广播消息的方式中的对所有变更数据均进行广播的方式,能够减少广播消息的数量,有效减少广播消息在高峰时的流量占用,减少瞬时流量超过系统处理极限的情况,减少系统负载,同时,再次由于本申请中是通过更新目标数据集合的方式广播部分消息,最终广播的消息均是目标对象实际关心的,因此即使只广播部分消息也能够满足正常交互的需求。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种消息广播方法,其特征在于,包括:
获取广播时间间隔内的目标变更数据以及所述目标变更数据对应的变更时间戳;
基于所述目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合;
基于所述更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个所述元素对应的内容进行广播。
2.根据权利要求1所述的方法,其特征在于,所述目标数据集合包括第一数据集合,所述目标变更数据包括目标标识,所述第一数据集合中的每个第一元素对应一个目标标识,所述基于所述目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合,包括:
从所述第一数据集合中查找与所述目标变更数据具有相同目标标识的目标第一元素;
基于所述目标变更数据以及对应的变更时间戳,对所述目标第一元素包括的目标内容以及时间戳进行更新,得到更新后的第一数据集合;
所述基于所述更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个所述元素的内容进行广播,包括:
基于所述更新后的第一数据集合中的各个第一元素包括的时间戳的先后顺序,依次对所述更新后的第一数据集合中的各个第一元素的内容进行广播。
3.根据权利要求2所述的方法,其特征在于,所述目标数据集合还包括第二数据集合,所述目标变更数据还包括属性标识,所述第二数据集合中的每个第二元素对应一个属性标识,所述方法还包括:
从所述第二数据集合中查找与所述目标变更数据具有相同属性标识的目标第二元素;
基于所述目标变更数据对应的变更时间戳,对所述目标第二元素包括的时间戳进行更新,得到更新后的第二数据集合;
基于所述更新后的第一数据集合中的各个第一元素对应的属性标识,对具有相同属性标识的第一元素进行聚合,得到第一子集合,其中,每个所述第一子集合分别与所述更新后的第二数据集合中的一个第二元素的属性标识对应;
所述基于所述更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个所述元素的内容进行广播,包括:
基于所述更新后的第二数据集合中的各个第二元素包括的时间戳的先后顺序,依次对更新后的第二数据集合中的各个第二元素的属性标识对应的所述第一子集合的内容进行广播。
4.根据权利要求2或3所述的方法,其特征在于,所述从所述第一数据集合中查找与所述目标变更数据具有相同目标标识的目标第一元素之前,还包括:
在所述第一数据集合中不存在与所述目标变更数据具有相同目标标识的目标第一元素时,将所述目标变更数据以及对应的变更时间戳分别作为所述第一数据集合中的第一元素包括的内容以及时间戳,添加到所述第一数据集合中,得到所述第一数据集合。
5.根据权利要求3所述的方法,其特征在于,所述从所述第二数据集合中查找与所述目标变更数据具有相同属性标识的目标第二元素之前,还包括:
在所述第二数据集合中不存在与所述目标变更数据具有相同属性标识的目标第二元素时,将所述目标变更数据包括的属性标识以及对应的变更时间戳分别作为所述第二数据集合中的第二元素包括的属性标识以及时间戳,添加到所述第二数据集合中,得到所述第二数据集合。
6.根据权利要求3所述的方法,其特征在于,所述目标标识为用户标识,所述属性标识为频道标识。
7.根据权利要求2所述的方法,其特征在于,所述基于所述目标变更数据以及对应的变更时间戳,对所述目标第一元素包括的第一目标内容以及时间戳进行更新,得到更新后的第一数据集合,包括:
从所述第一数据集合中读取并删除所述目标第一元素包括的内容以及时间戳;
将所述目标变更数据以及对应的变更时间戳分别作为更新后的目标第一元素包括的内容以及时间戳,将所述更新后的目标第一元素写入所述第一数据集合,得到所述更新后的第一数据集合。
8.根据权利要求1所述的方法,其特征在于,所述目标数据集合包括第三数据集合,所述目标变更数据包括属性标识,所述第三数据集合中的每个第三元素对应一个属性标识,所述基于所述目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合,包括:
从所述第三数据集合中查找与所述目标变更数据具有相同属性标识的目标第三元素;
基于所述目标变更数据以及对应的变更时间戳,对所述目标第三元素包括的时间戳进行更新,得到更新后的第三数据集合;
基于各个目标变更数据对应的属性标识,对具有相同属性标识的目标变更数据进行聚合,得到第四数据集合,其中,每个所述第四数据集合分别与所述更新后的第三数据集合中的一个第三元素的属性标识对应;
所述基于所述更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个所述元素的内容进行广播,包括:
基于所述更新后的第三数据集合中的各个第三元素包括的时间戳的先后顺序,依次对更新后的第三数据集合中的各个第三元素的属性标识对应的所述第四数据集合的内容进行广播。
9.一种消息广播装置,其特征在于,所述装置包括:
数据获取模块,用于获取广播时间间隔内的目标变更数据以及所述目标变更数据对应的变更时间戳;
数据集合更新模块,用于基于所述目标变更数据以及对应的变更时间戳,对消息队列中的目标数据集合进行更新,得到更新后的数据集合;
内容广播模块,用于基于所述更新后的数据集合中的各个元素对应的时间戳的先后顺序,依次对各个所述元素对应的内容进行广播。
10.一种电子设备,其特征在于,包括处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述处理器执行以实现权利要求1-8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110113077.XA CN112764951A (zh) | 2021-01-27 | 2021-01-27 | 消息广播方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110113077.XA CN112764951A (zh) | 2021-01-27 | 2021-01-27 | 消息广播方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112764951A true CN112764951A (zh) | 2021-05-07 |
Family
ID=75706197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110113077.XA Pending CN112764951A (zh) | 2021-01-27 | 2021-01-27 | 消息广播方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112764951A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061686A (en) * | 1997-06-26 | 2000-05-09 | Digital Equipment Corporation | Updating a copy of a remote document stored in a local computer system |
WO2019143370A1 (en) * | 2018-01-22 | 2019-07-25 | Visa International Service Association | Method, system, and computer program product for real-time data aggregation |
CN110191364A (zh) * | 2019-05-31 | 2019-08-30 | 武汉瓯越网视有限公司 | 视频数据迁移方法、存储介质、设备及系统 |
US20190370800A1 (en) * | 2018-05-31 | 2019-12-05 | Visa International Service Association | Method, System, and Computer Program Product for Aggregating Data from a Plurality of Sources |
CN111836067A (zh) * | 2020-07-21 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 直播组件信息的处理方法、装置、设备及存储介质 |
CN111831954A (zh) * | 2020-07-20 | 2020-10-27 | 汉海信息技术(上海)有限公司 | 内容数据更新方法、装置、计算机设备及存储介质 |
CN111901619A (zh) * | 2020-07-23 | 2020-11-06 | 北京达佳互联信息技术有限公司 | 一种消息推送方法和装置 |
-
2021
- 2021-01-27 CN CN202110113077.XA patent/CN112764951A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061686A (en) * | 1997-06-26 | 2000-05-09 | Digital Equipment Corporation | Updating a copy of a remote document stored in a local computer system |
WO2019143370A1 (en) * | 2018-01-22 | 2019-07-25 | Visa International Service Association | Method, system, and computer program product for real-time data aggregation |
US20190370800A1 (en) * | 2018-05-31 | 2019-12-05 | Visa International Service Association | Method, System, and Computer Program Product for Aggregating Data from a Plurality of Sources |
CN110191364A (zh) * | 2019-05-31 | 2019-08-30 | 武汉瓯越网视有限公司 | 视频数据迁移方法、存储介质、设备及系统 |
CN111831954A (zh) * | 2020-07-20 | 2020-10-27 | 汉海信息技术(上海)有限公司 | 内容数据更新方法、装置、计算机设备及存储介质 |
CN111836067A (zh) * | 2020-07-21 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 直播组件信息的处理方法、装置、设备及存储介质 |
CN111901619A (zh) * | 2020-07-23 | 2020-11-06 | 北京达佳互联信息技术有限公司 | 一种消息推送方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170192819A1 (en) | Method and electronic device for resource allocation | |
CN113055451B (zh) | 资源下载方法、装置、电子设备及存储介质 | |
US11736749B2 (en) | Interactive service processing method and system, device, and storage medium | |
CN111625743B (zh) | 资源加载方法、装置及电子设备 | |
CN111163130A (zh) | 一种网络服务系统及其数据传输方法 | |
CN111488529B (zh) | 信息处理方法、装置、服务器及存储介质 | |
WO2021138823A1 (zh) | 信息推送方法、装置、服务器及存储介质 | |
US11889133B2 (en) | Burst traffic processing method, computer device and readable storage medium | |
CN113656176B (zh) | 云设备的分配方法、装置、系统、电子设备、介质及产品 | |
WO2021159393A1 (zh) | 信息推送方法、装置、服务器及存储介质 | |
US20170178202A1 (en) | Advertisement display method, terminal device and a non-transitory computer-readable storage medium | |
CN108282668B (zh) | 一种视频的获取方法及系统 | |
CN111541555A (zh) | 群聊优化方法及相关产品 | |
CN113392041A (zh) | 应用缓存清理方法、装置、设备及存储介质 | |
CN110022335B (zh) | 数据包发送方法、装置、服务器及计算机可读存储介质 | |
US20170155712A1 (en) | Method and device for updating cache data | |
CN113127723B (zh) | 用户画像处理方法、装置、服务器及存储介质 | |
CN114153581A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
US20170171339A1 (en) | Advertisement data transmission method, electrnoic device and system | |
CN106550021B (zh) | 推送消息的推送方法及装置 | |
CN110708293B (zh) | 多媒体业务的分流方法和装置 | |
CN109788326B (zh) | 一种视频资源预推送方法、装置及系统 | |
CN112764951A (zh) | 消息广播方法、装置、电子设备及存储介质 | |
CN116303303A (zh) | 批量数据处理方法、装置、设备及介质 | |
CN114285906B (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 |