CN113157714A - 榜单数据更新方法、装置、电子设备及存储介质 - Google Patents
榜单数据更新方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113157714A CN113157714A CN202110477044.3A CN202110477044A CN113157714A CN 113157714 A CN113157714 A CN 113157714A CN 202110477044 A CN202110477044 A CN 202110477044A CN 113157714 A CN113157714 A CN 113157714A
- Authority
- CN
- China
- Prior art keywords
- virtual resource
- event information
- resource value
- target
- data
- 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 43
- 238000005192 partition Methods 0.000 claims abstract description 99
- 238000012545 processing Methods 0.000 claims description 68
- 238000012163 sequencing technique Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 9
- 230000001186 cumulative effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 239000012634 fragment Substances 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开关于一种榜单数据更新方法、装置、电子设备及存储介质,其中方法通过获取直播中的事件信息以及对应的虚拟资源值,将事件信息以及对应的虚拟资源值分发至与直播账户标识对应的数据分区中,并从数据分区中读取目标事件信息对应的虚拟资源值,以及上一条事件信息对应的累计虚拟资源值,从而采用与直播账户标识对应的亲缘性线程池,根据虚拟资源值和累计虚拟资源值,确定与数据分区对应的直播账户标识的目标虚拟资源值,并基于目标虚拟资源值更新榜单数据。从而使得同一直播账户对应的数据分区中的事件信息由同一线程池处理,因此,避免了同一直播账户的数据更新的并发问题,不仅保障了榜单数据的正确性,还提高了榜单数据的可靠性。
Description
技术领域
本公开涉及互联网技术,尤其涉及一种榜单数据更新方法、装置、电子设备及存储介质。
背景技术
随着互联网技术的不断发展,网络直播已成为一种新兴的社交方式,与网络直播对应的各种各样的排行榜单也应运而生。例如:“主播人气榜单”、“观众等级榜单”、“直播PK榜单”等,都是非常重要且能够增加用户粘性的方式。
以直播PK(Player Killing,对决)榜单来说,是指让主播在一段时间内进行直播PK,然后根据主播获得的礼物金额或者最大连胜数等对主播进行排名。然而,在高并发分布式的场景下,在生成直播PK榜单的过程中,对连胜场次进行结算时可能会出现乱序的情况。例如:若A主播已经连胜三场PK,且在短时间内,又赢了一场PK(即第四场PK),并很快又输了一场PK(即第五场PK)。这时如果前一场赢的PK(即第四场PK)还没结算完成,而分布式系统的另一个结算节点先完成了输的那场PK(即第五场PK)的结算,则会计算错A主播的连胜数,如将连胜数“4”错计算成了“3”,导致最终计算的榜单的正确性无法得到保障,从而存在榜单数据可靠性低的问题。
发明内容
本公开提供一种榜单数据更新方法、装置、电子设备及存储介质,以至少解决相关技术中高并发场景下榜单的正确性无法得到保障的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种榜单数据更新方法,包括:
获取直播中的事件信息以及对应的虚拟资源值,所述事件信息包括对应的事件发生时间点、事件信息的处理状态以及所述虚拟资源值所属的直播账户标识;
将所述事件信息以及对应的虚拟资源值分发至与所述直播账户标识对应的数据分区中;
从所述数据分区中读取目标事件信息对应的虚拟资源值,所述目标事件信息为所述数据分区中事件信息的处理状态为未处理、且事件发生时间点最早的事件信息,以及读取所述目标事件信息的上一条事件信息对应的累计虚拟资源值;
采用与所述直播账户标识对应的亲缘性线程池,根据所述虚拟资源值和所述累计虚拟资源值,确定与所述数据分区对应的直播账户标识的目标虚拟资源值;
基于所述目标虚拟资源值更新榜单数据。
在其中一个实施例中,所述将所述事件信息以及对应的虚拟资源值分发至与所述直播账户标识对应的数据分区中,包括:按所述直播账户标识生成对应的数据分区;将所述事件信息以及对应的虚拟资源值按对应的事件发生时间点的先后顺序写入与所述直播账户标识对应的数据分区中。
在其中一个实施例中,所述基于所述目标虚拟资源值更新榜单数据,包括:获取各直播账户标识分别对应的目标虚拟资源值;按所述目标虚拟资源值的大小对各直播账户标识进行排序,将排序结果作为更新后的榜单数据。
在其中一个实施例中,所述根据所述虚拟资源值和所述累计虚拟资源值,确定与所述数据分区对应的直播账户标识的目标虚拟资源值,包括:获取所述累计虚拟资源值与所述虚拟资源值的和,将所述和确定为与所述数据分区对应的直播账户标识的目标虚拟资源值。
在其中一个实施例中,所述确定与所述数据分区对应的直播账户标识的目标虚拟资源值之后,所述方法还包括:将所述目标虚拟资源值确定为所述目标事件信息对应的累计虚拟资源值;以及,将所述目标事件信息的处理状态修改为已处理的处理状态。
在其中一个实施例中,所述读取所述目标事件信息的上一条事件信息对应的累计虚拟资源值,包括:按所述事件发生时间点的先后顺序对所述数据分区中的事件信息进行排序;获取所述目标事件信息的上一条事件信息对应的处理状态;若所述上一条事件信息对应的处理状态为已处理的处理状态,则获取所述上一条事件信息对应的累计虚拟资源值。
在其中一个实施例中,所述读取所述目标事件信息的上一条事件信息对应的累计虚拟资源值,包括:读取所述数据分区中处理状态为已处理的事件信息;获取处理状态为已处理的事件信息中事件发生时间点最晚的事件信息对应的累计虚拟资源值;将所述事件发生时间点最晚的事件信息对应的累计虚拟资源值,确定为所述目标事件信息的上一条事件信息对应的累计虚拟资源值。
根据本公开实施例的第二方面,提供一种榜单数据更新装置,包括:
数据获取模块,被配置为执行获取直播中的事件信息以及对应的虚拟资源值,所述事件信息包括对应的事件发生时间点、事件信息的处理状态以及所述虚拟资源值所属的直播账户标识;
分发模块,被配置为执行将所述事件信息以及对应的虚拟资源值分发至与所述直播账户标识对应的数据分区中;
虚拟资源值读取模块,被配置为执行从所述数据分区中读取目标事件信息对应的虚拟资源值,所述目标事件信息为所述数据分区中事件信息的处理状态为未处理、且事件发生时间点最早的事件信息,以及读取所述目标事件信息的上一条事件信息对应的累计虚拟资源值;
目标虚拟资源值确定模块,采用与所述直播账户标识对应的亲缘性线程池,根据所述虚拟资源值和所述累计虚拟资源值,确定与所述数据分区对应的直播账户标识的目标虚拟资源值;
榜单更新模块,被配置为执行基于所述目标虚拟资源值更新榜单数据。
在其中一个实施例中,所述分发模块被配置为执行:按所述直播账户标识生成对应的数据分区;将所述事件信息以及对应的虚拟资源值按对应的事件发生时间点的先后顺序写入与所述直播账户标识对应的数据分区中。
在其中一个实施例中,所述榜单更新模块包括:目标虚拟资源值获取单元,被配置为执行获取各直播账户标识分别对应的目标虚拟资源值;排序单元,被配置为执行按所述目标虚拟资源值的大小对各直播账户标识进行排序,将排序结果作为更新后的榜单数据。
在其中一个实施例中,所述目标虚拟资源值确定模块还被配置为执行:获取所述累计虚拟资源值与所述虚拟资源值的和,将所述和确定为与所述数据分区对应的直播账户标识的目标虚拟资源值。
在其中一个实施例中,所述装置还包括目标虚拟资源值更新模块,被配置为执行:将所述目标虚拟资源值确定为所述目标事件信息对应的累计虚拟资源值;以及,将所述目标事件信息的处理状态修改为已处理的处理状态。
在其中一个实施例中,所述虚拟资源值读取模块被配置为执行:按所述事件发生时间点的先后顺序对所述数据分区中的事件信息进行排序;获取所述目标事件信息的上一条事件信息对应的处理状态;若所述上一条事件信息对应的处理状态为已处理的处理状态,则获取所述上一条事件信息对应的累计虚拟资源值。
在其中一个实施例中,所述虚拟资源值读取模块还被配置为执行:读取所述数据分区中处理状态为已处理的事件信息;获取处理状态为已处理的事件信息中事件发生时间点最晚的事件信息对应的累计虚拟资源值;将所述事件发生时间点最晚的事件信息对应的累计虚拟资源值,确定为所述目标事件信息的上一条事件信息对应的累计虚拟资源值。
根据本公开实施例的第三方面,提供一种服务器,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,使得服务器执行第一方面的任一项实施例中所述的榜单数据更新方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行第一方面的任一项实施例中所述的榜单数据更新方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行第一方面的任一项实施例中所述的榜单数据更新方法。
本公开的实施例提供的技术方案至少带来以下有益效果:通过获取直播中的事件信息以及对应的虚拟资源值,将事件信息以及对应的虚拟资源值分发至与直播账户标识对应的数据分区中,并从数据分区中读取目标事件信息对应的虚拟资源值,以及读取目标事件信息的上一条事件信息对应的累计虚拟资源值,从而采用与直播账户标识对应的亲缘性线程池,根据虚拟资源值和累计虚拟资源值,确定与数据分区对应的直播账户标识的目标虚拟资源值,并基于目标虚拟资源值更新榜单数据。从而使得同一直播账户对应的数据分区中的事件信息由同一线程池处理,因此,避免了同一直播账户的数据更新的并发问题,不仅保障了榜单数据的正确性,还提高了榜单数据的可靠性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的传统榜单数据更新方法的应用示意图。
图2是根据另一示例性实施例示出的传统榜单数据更新方法的应用示意图。
图3是根据一示例性实施例示出的一种榜单数据更新方法的流程图。
图4是根据一示例性实施例示出的对目标事件信息分发步骤的流程图。
图5是根据一示例性实施例示出的更新榜单数据步骤的流程图。
图6是根据一示例性实施例示出的读取累计虚拟资源值步骤的流程图。
图7是根据一示例性实施例示出的一种榜单数据更新方法的计算框架图。
图8是根据一示例性实施例示出的一种榜单数据更新装置的框图。
图9是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
由于传统技术中存在榜单数据可靠性低的问题,举例来说,如图1所示,传统技术中一般通过EventConsumer(事件消费组件)直接监听活动相关的Kafka Event(消息事件),然后在EventConsumer的线程池中完成积分结算。但是,由于不同的EventConsumer完成结算的时间可能不一样,从而可能会造成如下情况:若某一用户产生两条时间点相近的事件A和B,其中A的时间点早于B。但是由于A和B可能会被分配给两个不同的EventConsumer消费结算,如果A所在的EventConsumer发生卡顿,则导致A未结算完成的情况下B已结算完成,以至于时序错误,从而影响最终结算结果的正确性。
基于上述问题,目前还有一种常见的优化思路。如图2所示,就是对同一个用户的结算加锁。若某一用户产生两条时间点相近的事件A和B,A的时间点早于B。A和B同样可能会被分配给两个不同的EventConsumer消费结算,但是,结算A的EventConsumer会申请对该用户维度加一个分布式锁,导致结算B的EventConsumer无法结算,只有等待A结算完成B才能解锁。然而,由于分布式锁本身的稳定性会导致各类高并发问题,例如:死锁、锁超时等,从而导致严重影响结算性能,并降低可用性。
基于此,本公开提供了一种榜单数据更新方法,如图3所示,本实施例以该方法应用于服务器进行举例说明,可以理解的是,该方法也可以应用于终端,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。其中,终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本实施例中,该方法包括以下步骤:
在步骤S310中,获取直播中的事件信息以及对应的虚拟资源值。
其中,事件是指影响榜单数据的相关事件,例如,对于直播PK榜单来说,事件可以是主播在直播PK过程中的输赢情况,也可以是主播获得礼物或点赞的情况等。具体地,事件信息包括对应的事件发生时间点、事件信息的处理状态以及对应虚拟资源值所属的直播账户标识等。而虚拟资源值则是用于更新榜单的重要数据,其可以是基于不同类型的事件换算得到。例如,对于直播PK榜单来说,虚拟资源值可以是基于主播的连胜数进行转换而得到,也可以是基于主播获得礼物的金额或获得的点赞数进行转换而得到等,从而将各种不同类型的事件转换到同一水平以进行榜单更新。而虚拟资源值所属的直播账户标识,则是指该虚拟资源属于哪个直播账户所有,而账户标识则是用于区分不同直播用户的记号。又由于在对榜单数据进行更新的过程中,其时序性是很重要的,因此,在本实施例中,事件信息中还包括对应事件的发生时间点。
在步骤S320中,将事件信息以及对应的虚拟资源值分发至与直播账户标识对应的数据分区中。
其中,数据分区是基于直播账户标识分配的数据存储空间。在本实施例中,为了避免传统的榜单更新对于并发场景下的执行顺序无法保障的问题,本实施例将事件信息按对应的直播账户标识进行分发,即将同一直播账户标识对应的事件信息按事件发生时间点的先后顺序分发至同一数据分区中,从而保障了结算时序,且使得同一直播账户的数据更新不会出现并发问题。
在步骤S330中,从数据分区中读取目标事件信息对应的虚拟资源值,以及读取目标事件信息的上一条事件信息对应的累计虚拟资源值。
其中,目标事件信息是指数据分区中事件信息的处理状态为未处理、且事件发生时间点最早的事件信息。则目标事件信息的上一条事件信息是指事件信息的处理状态为已处理、且事件发生时间点最晚的事件信息,即以目标事件信息对应的事件发生时间点为分界线,最后进行结算处理的事件信息。累计虚拟资源值则是基于该条最后进行结算处理的事件信息对应的虚拟资源值以及对应直播账户历史已结算的虚拟资源值的和。相对于目标事件信息来说,该累计虚拟资源值是指对该目标事件信息之前的所有已结算事件信息的虚拟资源值的和,也即直播账户的历史已结算的虚拟资源值。在本实施例中,通过从数据分区中读取目标事件信息对应的虚拟资源值,以及读取目标事件信息的上一条事件信息对应的累计虚拟资源值,并通过后续步骤对该目标事件信息进行结算处理,从而保障了结算时序。
在步骤S340中,采用与直播账户标识对应的亲缘性线程池,根据虚拟资源值和累计虚拟资源值,确定与数据分区对应的直播账户标识的目标虚拟资源值。
其中,亲缘性线程池就是把相同直播账户的待处理任务(即目标事件信息)按照投递线程池的顺序,放到同一个内存队列,每个内存队列由一个线程来消费的模式。因此,每个亲缘性线程池分别与各自的直播账户标识相对应,又由于数据分区也是基于直播账户标识进行分配的,因此,对于同一直播账户标识的数据分区由对应的亲缘性线程池进行处理,而不同的数据分区则由不同的亲缘性线程池进行处理。目标虚拟资源值是指同一直播账户标识对应的事件信息中已处理的事件信息的累计虚拟资源值。在本实施例中,采用与直播账户标识对应的亲缘性线程池,处理对应数据分区中的目标事件信息,即各亲缘性线程池异步处理各自对应的数据分区,使得同一数据分区中的事件信息被收敛至同一个亲缘性线程池中进行有序处理,因此,亲缘性线程池根据当前被消费的目标事件信息对应的虚拟资源值和该目标事件信息的上一条事件信息对应的累计虚拟资源值,更新对应直播账户标识的目标虚拟资源值。
在步骤S350中,基于目标虚拟资源值更新榜单数据。
具体地,通过上述各亲缘性线程池异步处理各自对应的数据分区中的事件信息,并更新对应直播账户标识的目标虚拟资源值,从而根据更新后的目标虚拟资源值对直播账户进行排序,以更新榜单数据。
上述榜单数据更新方法,通过获取直播中的事件信息以及对应的虚拟资源值,将事件信息以及对应的虚拟资源值分发至与直播账户标识对应的数据分区中,并从数据分区中读取目标事件信息对应的虚拟资源值,以及读取目标事件信息的上一条事件信息对应的累计虚拟资源值,从而采用与直播账户标识对应的亲缘性线程池,根据虚拟资源值和累计虚拟资源值,确定与数据分区对应的直播账户标识的目标虚拟资源值,并基于目标虚拟资源值更新榜单数据。从而使得同一直播账户对应的数据分区中的事件信息由同一线程池处理,因此,避免了同一直播账户的数据更新的并发问题,不仅保障了榜单数据的正确性,还提高了榜单数据的可靠性。
在一示例性实施例中,如图4所示,在步骤S320中,将事件信息以及对应的虚拟资源值分发至与直播账户标识对应的数据分区中,具体可以通过以下步骤实现:
在步骤S321中,按直播账户标识生成对应的数据分区。
其中,数据分区即是对应的数据存储空间,其具有数据有序存储的特点。具体地,基于直播账户标识生成对应的数据分区,即一个直播账户标识对应一个数据分区。
在步骤S322中,将事件信息以及对应的虚拟资源值按对应的事件发生时间点的先后顺序写入与直播账户标识对应的数据分区中。
由于在直播过程中,可能会不断的爆发相应的事件信息以及对应的虚拟资源值,因此,当服务器获取到事件信息以及对应的虚拟资源值后,则根据事件信息对应的虚拟资源值所属的直播账户标识将事件信息按对应的事件发生时间点的先后顺序写入与直播账户标识对应的数据分区中。即按直播账户标识将事件信息以及对应的虚拟资源值进行分区存储,将同一直播账户的事件信息以及对应的虚拟资源值有序存储于对应的数据分区中,从而使得同一直播账户标识对应的事件信息以及对应的虚拟资源值按事件发生时间点的先后顺序分发至同一数据分区中,进而有序消费,从而保证了同一直播账户的数据更新不会出现并发问题。
在一示例性实施例中,如图5所示,在步骤S350中,基于目标虚拟资源值更新榜单数据,具体可以通过以下步骤实现:
在步骤S331中,获取各直播账户标识分别对应的目标虚拟资源值。
由于每个亲缘性线程池分别与各自的直播账户标识相对应,又由于数据分区也是基于直播账户标识进行分配的,因此,对于同一直播账户标识的数据分区由对应的亲缘性线程池进行处理,而不同的数据分区则由不同的亲缘性线程池进行处理。基于此,通过各亲缘性线程池异步处理各自对应的数据分区,使得同一数据分区中的事件信息被收敛至同一个亲缘性线程池中进行有序处理,从而得到各亲缘性线程池处理后的分别与直播账户标识对应的目标虚拟资源值。
在步骤S332中,按目标虚拟资源值的大小对各直播账户标识进行排序,将排序结果作为更新后的榜单数据。
由于直播过程中的榜单数据是通过对各直播账户的目标虚拟资源值进行排序并经过适度冗余后得到的一个有序列表,因此,当采用上述步骤获取各直播账户标识对应的目标虚拟资源值之后,则对应直播账户的目标虚拟资源值发生了改变,因此,需要对列表进行重新排序,并将排序结果作为更新后的榜单数据。
上述实施例,通过获取各直播账户标识对应的目标虚拟资源值,进而按目标虚拟资源值的大小对各直播账户标识进行排序,将排序结果作为更新后的榜单数据。由于同一数据分区中的事件信息被收敛至同一个亲缘性线程池中进行有序处理,从而解决了并发导致榜单数据更新不正确的问题,并提高了榜单数据的准确性和可靠性。
在一示例性实施例中,如图6所示,在步骤S330中,读取目标事件信息的上一条事件信息对应的累计虚拟资源值,具体可以通过以下步骤实现:
在步骤S610中,按事件发生时间点的先后顺序对数据分区中的事件信息进行排序。
具体地,通过事件发生时间点的先后顺序对数据分区中的事件信息进行排序。由于在对数据分区中的事件信息进行处理时,其时序性较为重要,通常来说先发生的事件先处理。因此,在本实施例中,可以基于事件信息中携带的事件发生时间点,按照事件发生时间点的先后顺序对事件信息进行排序,从而可以按照对应的顺序对数据对分区中的事件信息进行处理,以进一步保证了处理时序。
在步骤S620中,获取目标事件信息的上一条事件信息对应的处理状态。
其中,事件信息对应的处理状态包括该事件为未处理的状态或已处理的状态。其中,已处理的状态是指在对直播账户的目标虚拟资源值进行更新时,考虑了对应事件信息的虚拟资源,即已对该事件信息的虚拟资源进行结算。而未处理的状态是指在对直播账户的目标虚拟资源值进行更新时,还未考虑该事件信息的虚拟资源,也即未对该事件信息的虚拟资源进行结算。上一条事件信息是指在时序上相对于事件发生时间点最早的未处理的目标事件信息的前一条事件信息。又由于未处理的目标事件信息是事件发生时间点最早的事件信息,而数据分区中的事件信息是按事件发生时间点的先后顺序进行排序得到的,因此,其上一条事件信息应为已处理的事件信息。基于此,在本实施例中,当要进行榜单数据更新时,可以基于数据分区中当前结算的目标事件信息,获取该目标事件信息的上一条事件信息对应的处理状态,以对其处理状态进行校验,以进一步保证处理时序。
在步骤S630中,若上一条事件信息对应的处理状态为已处理的处理状态,则获取上一条事件信息对应的累计虚拟资源值。
累计虚拟资源值则是基于该条事件信息对应的虚拟资源值以及对应直播账户历史已结算的虚拟资源值的和。在本实施例中,为了进一步提高结算的时序,可以对获取的上一条事件信息的处理状态进行校验,即获取目标事件信息的上一条事件信息对应的处理状态,若对应的处理状态为已处理状态,则校验通过,从而进一步获取该上一条事件信息对应的累计虚拟资源值。
上述实施例中,通过按事件发生时间点的先后顺序对数据分区中的事件信息进行排序,并获取目标事件信息的上一条事件信息对应的处理状态,若上一条事件信息对应的处理状态为已处理的处理状态,则获取上一条事件信息对应的累计虚拟资源值。由于数据分区中的事件信息是按事件发生时间点的先后顺序进行排序得到的,因此,基于此种方式读取目标事件信息的上一条事件信息对应的累计虚拟资源值,可以保障处理时序,进而可以提高对榜单数据计算的正确性。
在一示例性实施例中,还可以通过读取数据分区中处理状态为已处理的事件信息,进而获取处理状态为已处理的事件信息中事件发生时间点最晚的事件信息对应的累计虚拟资源值,将事件发生时间点最晚的事件信息对应的累计虚拟资源值,确定为目标事件信息的上一条事件信息对应的累计虚拟资源值。由于上一条事件信息是指在时序上相对于事件发生时间点最早的未处理的目标事件信息的前一条事件信息。又由于未处理的目标事件信息是事件发生时间点最早的目标事件信息,因此,其上一条事件信息则为已处理的发生时间点最晚的事件信息。基于此,本实施例可以通过对数据分区中已处理的事件信息按事件发生时间点的先后顺序进行排序,并获取事件发生时间点最晚的已处理的事件信息,即获取事件发生时间点最早的未处理的目标事件信息的上一条已处理的事件信息,进而获取该事件信息对应的累计虚拟资源值,即得到事件发生时间点最早的未处理的目标事件信息的上一条已处理的事件信息的累计虚拟资源值。通过此种方式读取目标事件信息的上一条事件信息对应的累计虚拟资源值,同样可以保障处理时序,进而可以提高对榜单数据计算的正确性。
在一示例性实施例中,在步骤S340中,根据虚拟资源值和累计虚拟资源值,确定与数据分区对应的直播账户标识的目标虚拟资源值,具体包括:获取累计虚拟资源值与虚拟资源值的和,将和确定为与数据分区对应的直播账户标识的目标虚拟资源值。
其中,目标虚拟资源值是指同一直播账户标识对应的已处理的事件信息的累计虚拟资源值。具体地,通过计算某一数据分区中事件发生时间点最早的未处理的目标事件信息的虚拟资源值与上一条已处理的事件信息的累计虚拟资源值的和,从而得到对应直播账户标识当前的目标虚拟资源值。同时,该目标虚拟资源值也是对应事件发生时间点最早的未处理的目标事件信息的累计虚拟资源值。由于同一直播账户对应的目标事件信息由同一线程池进行处理,因此,通过此种方式对直播账户的目标虚拟资源值进行更新,提高了对榜单数据计算的正确性,且使得结算时序在高并发、分布式的环境下不出错。
在一示例性实施例中,在步骤S640中,将累计虚拟资源值与虚拟资源值的和确定为与数据分区对应的直播账户标识的目标虚拟资源值之后,上述方法还包括:将目标虚拟资源值确定为目标事件信息对应的累计虚拟资源值,以及将目标事件信息的处理状态修改为已处理的处理状态。在本实施例中,通过将上述计算得到的目标虚拟资源值确定为目标事件信息对应的累计虚拟资源值,从而便于后续对目标虚拟资源值的更新,通过修改该目标事件信息的处理状态,从而避免对该目标事件信息进行重复结算,以提高榜单数据更新的准确度。
在一示例性实施例中,以下通过一个具体地实施例进一步说明本公开的榜单数据更新方法,如图7所示,在本实施例中,可以抽象一个计算框架,包括Kafka(一种开源的消息中间件)、事件消费组件(EventConsumer1、EventConsumer2、EventConsumer…)和完成事件结算的定时任务(SettleTask1、SettleTask2)。其中,可以是多个不同的EventConsumer与同一个SettleTask的组合,例如,每一个EventConsumer监听一种类型的事件,从而实现同时监听多种类型的事件,如送礼、PK胜负等。当直播过程中产生目标事件信息(EventA、EventB、……)时,由高吞吐量的分布式发布订阅消息系统kafka按事件类型将Event分配给对应的EventConsumer进行消费。EventConsumer则抽取该Event对应的虚拟资源值ES,并将ES封装为Record(结算记录)写入MySQL数据库的Record数据分片,其中,Record数据分片是基于直播账户标识进行的数据分片,从而保证同一直播账户的Event能够存储在同一数据分片中。而每一个SettleTask被分配一个待结算的Record数据分片,SettleTask在分配的数据分片中,批量读取状态为未处理的record,按事件时间排序(以保证结算时序1),根据直播账户标识使用亲缘线程池异步处理(以保证结算时序2)。并读取同一直播账户标识对应的上一条record,校验这条record的结算状态(保证结算时序3),取出SS(settle_score,已结算的累计虚拟资源值)。进而根据ES与SS调用calculate(业务方实现),计算出本条记录的newSS(即目标虚拟资源值)。调用afterCalculate(业务方实现)做业务逻辑处理,如:榜单数据更新,并更新该条record的状态为已处理。从而保障活动结算时序在极端高并发、分布式的环境下不出错,以提高榜单数据的准确度及可靠性。
应该理解的是,虽然图1-图7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-图7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
图8是根据一示例性实施例示出的一种榜单数据更新装置框图。参照图8,该装置包括数据获取模块802,分发模块804,虚拟资源值读取模块806,目标虚拟资源值确定模块808和榜单更新模块810。
数据获取模块802,被配置为执行获取直播中的事件信息以及对应的虚拟资源值,所述事件信息包括对应的事件发生时间点、事件信息的处理状态以及所述虚拟资源值所属的直播账户标识;
分发模块804,被配置为执行将所述事件信息以及对应的虚拟资源值分发至与所述直播账户标识对应的数据分区中;
虚拟资源值读取模块806,被配置为执行从所述数据分区中读取目标事件信息对应的虚拟资源值,所述目标事件信息为所述数据分区中事件信息的处理状态为未处理、且事件发生时间点最早的事件信息,以及读取所述目标事件信息的上一条事件信息对应的累计虚拟资源值;
目标虚拟资源值确定模块808,采用与所述直播账户标识对应的亲缘性线程池,根据所述虚拟资源值和所述累计虚拟资源值,确定与所述数据分区对应的直播账户标识的目标虚拟资源值;
榜单更新模块810,被配置为执行基于所述目标虚拟资源值更新榜单数据。
在一示例性实施例中,所述分发模块被配置为执行:按所述直播账户标识生成对应的数据分区;将所述事件信息以及对应的虚拟资源值按对应的事件发生时间点的先后顺序写入与所述直播账户标识对应的数据分区中。
在一示例性实施例中,所述榜单更新模块包括:目标虚拟资源值获取单元,被配置为执行获取各直播账户标识分别对应的目标虚拟资源值;排序单元,被配置为执行按所述目标虚拟资源值的大小对各直播账户标识进行排序,将排序结果作为更新后的榜单数据。
在一示例性实施例中,所述目标虚拟资源值确定模块还被配置为执行:获取所述累计虚拟资源值与所述虚拟资源值的和,将所述和确定为与所述数据分区对应的直播账户标识的目标虚拟资源值。
在一示例性实施例中,所述装置还包括目标虚拟资源值更新模块,被配置为执行:将所述目标虚拟资源值确定为所述目标事件信息对应的累计虚拟资源值;以及,将所述目标事件信息的处理状态修改为已处理的处理状态。
在一示例性实施例中,所述虚拟资源值读取模块被配置为执行:按所述事件发生时间点的先后顺序对所述数据分区中的事件信息进行排序;获取所述目标事件信息的上一条事件信息对应的处理状态;若所述上一条事件信息对应的处理状态为已处理的处理状态,则获取所述上一条事件信息对应的累计虚拟资源值。
在一示例性实施例中,所述虚拟资源值读取模块还被配置为执行:读取所述数据分区中处理状态为已处理的事件信息;获取处理状态为已处理的事件信息中事件发生时间点最晚的事件信息对应的累计虚拟资源值;将所述事件发生时间点最晚的事件信息对应的累计虚拟资源值,确定为所述目标事件信息的上一条事件信息对应的累计虚拟资源值。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图9是根据一示例性实施例示出的一种用于榜单数据更新的设备S00的框图。例如,设备S00可以为一服务器。参照图9,设备S00包括处理组件S20,其进一步包括一个或多个处理器,以及由存储器S22所代表的存储器资源,用于存储可由处理组件S20的执行的指令,例如应用程序。存储器S22中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件S20被配置为执行指令,以执行上述榜单数据更新方法。
设备S00还可以包括一个电源组件S24被配置为执行设备S00的电源管理,一个有线或无线网络接口S26被配置为将设备S00连接到网络,和一个输入输出(I/O)接口S28。设备S00可以操作基于存储在存储器S22的操作系统,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD或类似。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器S22,上述指令可由设备S00的处理器执行以完成上述方法。存储介质可以是计算机可读存储介质,例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行第一方面的任一项实施例中所述的榜单数据更新方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种榜单数据更新方法,其特征在于,所述方法包括:
获取直播中的事件信息以及对应的虚拟资源值,所述事件信息包括对应的事件发生时间点、事件信息的处理状态以及所述虚拟资源值所属的直播账户标识;
将所述事件信息以及对应的虚拟资源值分发至与所述直播账户标识对应的数据分区中;
从所述数据分区中读取目标事件信息对应的虚拟资源值,所述目标事件信息为所述数据分区中事件信息的处理状态为未处理、且事件发生时间点最早的事件信息,以及读取所述目标事件信息的上一条事件信息对应的累计虚拟资源值;
采用与所述直播账户标识对应的亲缘性线程池,根据所述虚拟资源值和所述累计虚拟资源值,确定与所述数据分区对应的直播账户标识的目标虚拟资源值;
基于所述目标虚拟资源值更新榜单数据。
2.根据权利要求1所述的榜单数据更新方法,其特征在于,所述将所述事件信息以及对应的虚拟资源值分发至与所述直播账户标识对应的数据分区中,包括:
按所述直播账户标识生成对应的数据分区;
将所述事件信息以及对应的虚拟资源值按对应的事件发生时间点的先后顺序写入与所述直播账户标识对应的数据分区中。
3.根据权利要求1所述的榜单数据更新方法,其特征在于,所述基于所述目标虚拟资源值更新榜单数据,包括:
获取各直播账户标识分别对应的目标虚拟资源值;
按所述目标虚拟资源值的大小对各直播账户标识进行排序,将排序结果作为更新后的榜单数据。
4.根据权利要求1所述的榜单数据更新方法,其特征在于,所述根据所述虚拟资源值和所述累计虚拟资源值,确定与所述数据分区对应的直播账户标识的目标虚拟资源值,包括:
获取所述累计虚拟资源值与所述虚拟资源值的和,将所述和确定为与所述数据分区对应的直播账户标识的目标虚拟资源值。
5.根据权利要求1所述的榜单数据更新方法,其特征在于,所述确定与所述数据分区对应的直播账户标识的目标虚拟资源值之后,所述方法还包括:
将所述目标虚拟资源值确定为所述目标事件信息对应的累计虚拟资源值;以及,
将所述目标事件信息的处理状态修改为已处理的处理状态。
6.根据权利要求1所述的榜单数据更新方法,其特征在于,所述读取所述目标事件信息的上一条事件信息对应的累计虚拟资源值,包括:
按所述事件发生时间点的先后顺序对所述数据分区中的事件信息进行排序;
获取所述目标事件信息的上一条事件信息对应的处理状态;
若所述上一条事件信息对应的处理状态为已处理的处理状态,则获取所述上一条事件信息对应的累计虚拟资源值。
7.一种榜单数据更新装置,其特征在于,包括:
数据获取模块,被配置为执行获取直播中的事件信息以及对应的虚拟资源值,所述事件信息包括对应的事件发生时间点、事件信息的处理状态以及所述虚拟资源值所属的直播账户标识;
分发模块,被配置为执行将所述事件信息以及对应的虚拟资源值分发至与所述直播账户标识对应的数据分区中;
虚拟资源值读取模块,被配置为执行从所述数据分区中读取目标事件信息对应的虚拟资源值,所述目标事件信息为所述数据分区中事件信息的处理状态为未处理、且事件发生时间点最早的事件信息,以及读取所述目标事件信息的上一条事件信息对应的累计虚拟资源值;
目标虚拟资源值确定模块,采用与所述直播账户标识对应的亲缘性线程池,根据所述虚拟资源值和所述累计虚拟资源值,确定与所述数据分区对应的直播账户标识的目标虚拟资源值;
榜单更新模块,被配置为执行基于所述目标虚拟资源值更新榜单数据。
8.一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的榜单数据更新方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由服务器的处理器执行时,使得所述服务器能够执行如权利要求1至6中任一项所述的榜单数据更新方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述的榜单数据更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110477044.3A CN113157714A (zh) | 2021-04-29 | 2021-04-29 | 榜单数据更新方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110477044.3A CN113157714A (zh) | 2021-04-29 | 2021-04-29 | 榜单数据更新方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113157714A true CN113157714A (zh) | 2021-07-23 |
Family
ID=76872827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110477044.3A Pending CN113157714A (zh) | 2021-04-29 | 2021-04-29 | 榜单数据更新方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157714A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115119019A (zh) * | 2022-06-20 | 2022-09-27 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012163245A1 (zh) * | 2011-05-27 | 2012-12-06 | 运软网络科技(上海)有限公司 | 一种基于事务的服务控制系统及其控制方法 |
CN110351572A (zh) * | 2019-07-10 | 2019-10-18 | 广州虎牙科技有限公司 | 直播间信息的更新方法、装置、设备及存储介质 |
CN111031336A (zh) * | 2019-12-10 | 2020-04-17 | 北京达佳互联信息技术有限公司 | 直播榜单数据更新方法、装置、电子设备和存储介质 |
CN111045568A (zh) * | 2019-12-20 | 2020-04-21 | 腾讯科技(深圳)有限公司 | 基于区块链的虚拟物品处理方法、装置、设备及存储介质 |
CN111405304A (zh) * | 2020-03-10 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 一种主播互动方法、装置、计算机设备和存储介质 |
CN111464826A (zh) * | 2020-04-14 | 2020-07-28 | 北京达佳互联信息技术有限公司 | 虚拟资源的榜单更新方法、装置、电子设备及存储介质 |
WO2021008122A1 (zh) * | 2019-07-15 | 2021-01-21 | 创新先进技术有限公司 | 基于区块链的虚拟资源分配方法及装置、电子设备 |
-
2021
- 2021-04-29 CN CN202110477044.3A patent/CN113157714A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012163245A1 (zh) * | 2011-05-27 | 2012-12-06 | 运软网络科技(上海)有限公司 | 一种基于事务的服务控制系统及其控制方法 |
CN110351572A (zh) * | 2019-07-10 | 2019-10-18 | 广州虎牙科技有限公司 | 直播间信息的更新方法、装置、设备及存储介质 |
WO2021008122A1 (zh) * | 2019-07-15 | 2021-01-21 | 创新先进技术有限公司 | 基于区块链的虚拟资源分配方法及装置、电子设备 |
CN111031336A (zh) * | 2019-12-10 | 2020-04-17 | 北京达佳互联信息技术有限公司 | 直播榜单数据更新方法、装置、电子设备和存储介质 |
CN111045568A (zh) * | 2019-12-20 | 2020-04-21 | 腾讯科技(深圳)有限公司 | 基于区块链的虚拟物品处理方法、装置、设备及存储介质 |
CN111405304A (zh) * | 2020-03-10 | 2020-07-10 | 腾讯科技(深圳)有限公司 | 一种主播互动方法、装置、计算机设备和存储介质 |
CN111464826A (zh) * | 2020-04-14 | 2020-07-28 | 北京达佳互联信息技术有限公司 | 虚拟资源的榜单更新方法、装置、电子设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115119019A (zh) * | 2022-06-20 | 2022-09-27 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111031336B (zh) | 直播榜单数据更新方法、装置、电子设备和存储介质 | |
CN111659126B (zh) | 匹配进程的分配方法、装置、服务器、终端及存储介质 | |
CN109547807B (zh) | 一种基于直播的信息处理方法、装置及服务器 | |
WO2017189938A1 (en) | Unified platform for a plurality of titles and gaming devices | |
CN112087487A (zh) | 模型训练任务的调度方法、装置、电子设备及存储介质 | |
CN111372089B (zh) | 更新活动榜单的方法、装置及存储介质 | |
CN110060140A (zh) | 海量数据对账方法、装置、介质和计算机设备 | |
CN113157714A (zh) | 榜单数据更新方法、装置、电子设备及存储介质 | |
CN112783790B (zh) | 一种应用程序测试方法和装置 | |
CN113476853A (zh) | 交互任务的数据处理方法、装置、电子设备、存储介质 | |
CN112699046A (zh) | 应用程序测试方法及装置、电子设备和存储介质 | |
US20240104231A1 (en) | Sharing with multiple people access to one or more resources each conveyed in a single nft | |
US20140357374A1 (en) | Method and server for pvp team matching in computer games | |
CN109766267A (zh) | Cpu高耗代码定位方法、装置、电子设备及存储介质 | |
CN111405297B (zh) | 活动榜单结算方法、装置及存储介质 | |
CN111241143B (zh) | 用于供水的水量和水费的分布式计算方法及系统 | |
CN116795524A (zh) | 任务处理方法、装置、计算机设备、存储介质及程序产品 | |
CN112818241A (zh) | 一种内容推广方法、装置、计算机设备和存储介质 | |
Lu et al. | Can cloud computing be used for planning? an initial study | |
CN111346372A (zh) | 一种基于数据备份的游戏登录加载方法、装置及服务器 | |
CN112054926A (zh) | 集群管理方法、装置、电子设备及存储介质 | |
CN112308583A (zh) | 一种基于虚拟积分的医学平台管理方法及系统 | |
JP7268259B1 (ja) | ブロックチェーン乱数取得方法、装置、機器および媒体 | |
CN113058271B (zh) | 游戏控制方法、装置、服务器及存储介质 | |
CN114390303B (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 |