CN111880910A - 数据处理方法及装置、服务器及存储介质 - Google Patents
数据处理方法及装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN111880910A CN111880910A CN202010763403.7A CN202010763403A CN111880910A CN 111880910 A CN111880910 A CN 111880910A CN 202010763403 A CN202010763403 A CN 202010763403A CN 111880910 A CN111880910 A CN 111880910A
- Authority
- CN
- China
- Prior art keywords
- event
- user
- queue
- processing
- processed
- 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/466—Transaction processing
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Telephonic Communication Services (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开是关于一种数据处理方法及装置、服务器及存储介质。该方法包括:接收待处理的用户事件;将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列;其中,不同事件属性的所述用户事件,对应于不同的事件队列;通过多个进程,从所述事件队列中读取所述用户事件进行处理;从所述事件队列中,删除处理完的所述用户事件。通过该方法,能提升用户事件的处理速度,还能提升服务平台的稳定性。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种数据处理方法及装置、服务器及存储介质。
背景技术
随着互联网通信的发展,互联网系统规模越来越大,用户任务数量日益增多,任务也变得越来越复杂。尤其是在分布式环境下,存在多个业务系统,每个业务系统都有用户任务的需求,如果都在自身系统中调度,一方面增加业务系统的复杂度,另一方面也不方便管理,因此需要有一个任务平台对分散的任务进行统一管理调度。
在对任务进行管理时,如何采取有效的调度策略来快速执行任务,提升任务平台的稳定性,成为亟待解决的问题。
发明内容
本公开提供一种数据处理方法及装置、服务器及存储介质。
根据本公开实施例的第一方面,提供一种数据处理方法,包括:
接收待处理的用户事件;
将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列;其中,不同事件属性的所述用户事件,对应于不同的事件队列;
通过多个进程,从所述事件队列中读取所述用户事件进行处理;
从所述事件队列中,删除处理完的所述用户事件。
可选的,所述方法还包括:
确定位于同一个事件队列中的所述用户事件的优先级;
根据所述优先级,调整所述用户事件在所述事件队列中的位置;
其中,所述用户事件从所述事件队列的队尾进入所述事件队列,并被所述进程从所述事件队列的队头取出。
可选的,所述确定位于同一个事件队列中的所述用户事件的优先级,包括:
获取同一个所述事件队列中的所述用户事件的时间信息;
根据所述时间信息对应的时间,确定位于同一个所述事件队列中的所述用户事件的优先级;其中,所述优先级的高低,与所述用户事件的时间信息对应的时间迟早正相关。
可选的,所述通过多个进程,从所述事件队列中读取所述用户事件进行处理,包括:
所述多个进程中的一个进程,从一个所述事件队列的队头读取所述用户事件,并确定是否达到读取的所述用户事件的触发时间;
若达到读取的所述用户事件的触发时间,处理读取的所述用户事件。
可选的,所述通过多个所述进程,从所述事件队列中读取所述用户事件进行处理,包括:
通过多个所述进程,以轮询的方式从不同的所述事件队列中读取并处理所述用户事件。
可选的,所述方法还包括:
对多个所述事件队列进行随机排序;
所述通过多个所述进程,以轮询的方式从不同的所述事件队列中读取并处理所述用户事件,包括:
通过多个所述进程,以轮询的方式从随机排序后不同的所述事件队列中读取并处理所述用户事件。
可选的,所述事件属性包括:指示所述用户事件所属用户的用户标识;不同所述用户标识的用户事件,对应于不同的事件队列中。
可选的,所述将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列,包括:
以一致性哈希算法处理所述待处理的用户事件的所述用户标识,得到哈希值;
将所述待处理的用户事件,存储到与所述哈希值对应的所述事件队列中。
可选的,所述通过多个进程,从所述事件队列中读取所述用户事件进行处理,包括:
采用脚本调用的方式,通过多个所述进程从所述事件队列中读取所述用户事件进行处理。
可选的,所述方法还包括:
在满足扩容条件时,增加一个或多个事件队列。
可选的,所述方法还包括:
在满足缩容条件时,禁止向一个或多个所述事件队列中存入用户事件;
若所述事件队列中的所述用户事件处理完成,删除所述事件队列。
根据本公开实施例的第二方面,提供一种数据处理装置,包括:
接收模块,配置为接收待处理的用户事件;
存储模块,配置为将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列;其中,不同事件属性的所述用户事件,对应于不同的事件队列;
处理模块,配置为通过多个进程,从所述事件队列中读取所述用户事件进行处理;
删除模块,配置为从所述事件队列中,删除处理完的所述用户事件。
可选的,所述装置还包括:
确定模块,配置为确定位于同一个事件队列中的所述用户事件的优先级;
调整模块,配置为根据所述优先级,调整所述用户事件在所述事件队列中的位置;
其中,所述用户事件从所述事件队列的队尾进入所述事件队列,并被所述进程从所述事件队列的队头取出。
可选的,所述确定模块,配置为获取同一个所述事件队列中的所述用户事件的时间信息;根据所述时间信息对应的时间,确定位于同一个所述事件队列中的所述用户事件的优先级;其中,所述优先级的高低,与所述用户事件的时间信息对应的时间迟早正相关。
可选的,所述处理模块,配置为所述多个进程中的一个进程,从一个所述事件队列的队头读取所述用户事件,并确定是否达到读取的所述用户事件的触发时间;若达到读取的所述用户事件的触发时间,处理读取的所述用户事件。
可选的,所述处理模块,配置为通过多个所述进程,以轮询的方式从不同的所述事件队列中读取并处理所述用户事件。
可选的,所述装置还包括:
排序模块,配置为对多个所述事件队列进行随机排序;
所述处理模块,配置为通过多个所述进程,以轮询的方式从随机排序后不同的所述事件队列中读取并处理所述用户事件。
可选的,所述事件属性包括:指示所述用户事件所属用户的用户标识;不同所述用户标识的用户事件,对应于不同的事件队列中。
可选的,所述存储模块,配置为以一致性哈希算法处理所述待处理的用户事件的所述用户标识,得到哈希值;将所述待处理的用户事件,存储到与所述哈希值对应的所述事件队列中。
可选的,所述处理模块,配置为采用脚本调用的方式,通过多个所述进程从所述事件队列中读取所述用户事件进行处理。
可选的,所述装置还包括:
扩容模块,配置为在满足扩容条件时,增加一个或多个事件队列。
可选的,所述装置还包括:
缩容模块,配置为在满足缩容条件时,禁止向一个或多个所述事件队列中存入用户事件;若所述事件队列中的所述用户事件处理完成,删除所述事件队列。
根据本公开实施例的第三方面,提供一种服务器,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行如上述第一方面中所述的数据处理方法。
根据本公开实施例的第四方面,提供一种存储介质,包括:
当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如上述第一方面中所述的数据处理方法。
本公开的实施例提供的技术方案可以包括以下有益效果:
在本公开的实施例中,采用分布式的处理架构,将不同事件属性的用户事件存储至不同的事件队列,并通过多个进程从事件队列中读取用户事件进行处理,即采用分布存储和分布处理的方式。一方面,通过分布式储,用户事件被分散到不同的事件队列,因而针对各事件队列中用户事件的操作(读、排序等),相对于一个事件队列中存储所有用户事件的方式,能提升对用户事件的操作速度;此外,当一个事件队列异常,其余事件队列中的用户事件仍可被执行,即能减少数据单点故障导致的整体用户事件调度异常问题。另一方面,通过分布式处理,即通过多个进程来处理不同的用户事件,能提升对各用户事件的调度速度,且当一个进程损坏时,其余进程仍可处理用户事件。
可以理解的是,本公开通过分布式存储和分布式处理相结合,能进一步提升用户事件的处理速度,还能提升服务平台的稳定性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开实施例示出的一种数据处理方法流程图。
图2是本公开实施例中一种服务平台的架构图。
图3是本公开实施例中一种用户事件调度的结构示例图。
图4是根据一示例性实施例示出的一种数据处理装置图。
图5是本公开实施例示出的一种服务器的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是本公开实施例示出的一种数据处理方法流程图,如图1所示,数据处理方法包括以下步骤:
S11、接收待处理的用户事件;
S12、将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列;其中,不同事件属性的所述用户事件,对应于不同的事件队列;
S13、通过多个进程,从所述事件队列中读取所述用户事件进行处理;
S14、从所述事件队列中,删除处理完的所述用户事件。
在本公开的实施例中,数据处理方法应用于数据处理装置中,该数据处理装置可以是服务平台。服务平台采用分布式的架构接收待处理的用户事件,并对用户事件进行处理。该分布式的架构,可以是服务器集群。
基于本申请的服务平台,可接入由支持各第三方应用的服务器推送的用户事件。例如,第三方应用可以是来自合作方的淘宝应用、美团应用、邮件应用或记事本应用等。
在本公开的实施例中,用户事件可包括以下至少之一:
用户操作触发的待处理事件;
提示用户执行预设操作的待处理事件。
例如,基于用户的购物操作,生成的待支付订单的订单事件。
例如,基于用户日程设置的日程提醒事件,或会议事件。
图2是本公开实施例中一种服务平台的架构图,如图2所示,服务平台中接入了不同的合作方,各合作方推送的用户事件均推送到服务平台上,服务平台对用户事件进行处理后,将处理结果发送给用户的手机。例如,用户手机中的负一屏上各消息显示,消息显示的排序结果可能就是服务平台对用户事件进行排序处理后的结果。
在步骤S11中,可通过服务平台中的任一服务器接收需要由服务平台处理的用户事件。该任一服务器可以是主服务器,服务平台中的各子服务器可基于主服务器的指令进行工作。
由于服务平台接收的用户事件可能来自不同合作方以及不同用户,因此用户事件的数据量可能会很大。而大量的用户事件,可能并不能即时处理,因此,需要开辟内存将接收的各用户事件存储,以平衡接收用户事件和处理用户事件的能力。
在步骤S12中,服务平台将待处理的用户事件存储至事件队列。在存储时,会根据待处理的用户事件的事件属性,将不同事件属性的用户事件存储至不同的事件队列。其中,用户事件的事件属性包括以下至少之一:
用户事件对应的用户标识;
用户事件的事件类型;
用户事件的时间信息。
在一种实施例中,所述事件属性包括:指示所述用户事件所属用户的用户标识;不同所述用户标识的用户事件,对应于不同的事件队列中。
在一种实施例中,所述将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列,包括:
以一致性哈希算法处理所述待处理的用户事件的所述用户标识,得到哈希值;
将所述待处理的用户事件,存储到与所述哈希值对应的所述事件队列中。
在该实施例中,可用一致性哈希算法来将待处理的用户事件的用户标识,得到哈希值,并将待处理的用户事件,存储到与哈希值对应的事件队列中。通过该种方式,无需逐一对比用户事件的用户标识与各事件队列的用户标识是否一致,而只需根据计算出的哈希值,将用户事件存储到哈希值对应的事件队列中。例如,计算出的哈希值为2,则将用户事件存储到第2个事件队列。
可以理解的是,本公开采用一致性哈希算法的方式,能快速将用户事件存入对应的事件队列,提升服务平台的性能。
在一种实施例中,在根据用户事件的类型将用户事件存储至不同的事件队列时,例如可将快递事件存储于一个事件队列,将外卖订单存储于一个事件队列,而将淘宝订单存储于另一事件队列等。
在一种实施例中,在根据用户事件的时间信息将用户事件存储至不同的事件队列时,例如将用户事件的接收时间在预设时间差范围内的用户事件存储至同一事件队列,而将接收时间差异较大的用户事件存储至不同的事件队列。其中,用户事件的时间信息除用户事件的接收时间外,还可包括用户事件中所包含的时间信息,例如,用户事件是下午四点,提醒拿快递,则今天下午4点属于用户事件中包含的时间信息。此外,用户事件的时间信息还可包括服务平台的提示时间,例如,约定服务平台根据用户事件所包含的时间信息,提前预定时长(如提前十分钟)给出提示。
需要说明的是,在将待处理的用户事件存储至事件队列时,可采用远程字典服务(Remote Dictionary Server,Redis)数据库,初始分配一组Redis Zset有序集合结构作为事件队列。由于Redis支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,因此可基于Redis对用户事件进行备份,以减少因服务器损坏造成的数据丢失的概率。
在步骤S13至S14中,服务平台通过多个进程,从事件队列中读取用户事件进行处理,并将处理完成的用户事件删除。其中,不同的进程可处理来自不同事件队列中的用户事件,也可处理同一事件队列中不同的用户事件。
在本公开的实施例中,一个进程可以对应一台服务器中的一块内存,服务器中的各块内存从不同的事件队列中读取用户事件进行处理;此外,一个进程还可以对应一台服务器,即服务平台通过不同的服务器处理各事件队列中的用户事件。
本公开将接收到的用户事件缓存至事件队列中,并从事件队列中取用户事件进行处理的方式被称为生产者-消费者模式。其中,提交任务的操作相当于生产者,执行任务的操作相当于消费者。例如,双十一期间,大量的淘宝订单,接收用户下单的进程或服务器就是生产者,处理订单任务的进程或服务器就相当于消费者。本公开采用的生产者-消费者模式中,将待处理的用户事件,按用户事件的属性存储至了不同的事件队列。
图3是本公开实施例中一种用户事件调度的结构示例图,如图3所示,事件生产者产生的用户事件,被存储于不同的事件队列,不同的消费者从各事件队列中取用户事件进行处理。其中,同一事件队列中的不同用户事件可被不同的消费者处理,不同的消费者也可处理来自不同事件队列中的事件。
在一种实施例中,有通过Java的传统的单机任务调度方法(例如Timer)来对待处理的用户事件进行调度,还有采用时间轮的调度算法来对待处理的用户事件进行调度。但是,基于Java传统的单机任务调度方法,性能消耗大,且不支持分布式;而基于时间轮的调度方法,同样不支持分布式,且可能存在调度不即时的问题。
对此,本公开采用分布式的处理架构,将不同事件属性的用户事件存储至不同的事件队列,并通过多个进程从事件队列中读取用户事件进行处理。即采用分布存储和分布处理的方式,一方面,通过分布式储,用户事件被分散到不同的事件队列,因而针对各事件队列中用户事件的操作(读、排序等),相对于一个事件队列中存储所有用户事件的方式,能提升对用户事件的操作速度;此外,当一个事件队列异常,其余事件队列中的用户事件仍可被执行,即能减少数据单点故障导致的整体用户事件调度异常问题。另一方面,通过分布式处理,即通过多个进程来处理不同的用户事件,能提升对各用户事件的调度速度,且当一个进程损坏时,其余进程仍可处理用户事件。可以理解的是,本公开通过分布式存储和分布式处理相结合,能进一步提升用户事件的处理速度,还能提升服务平台的稳定性。
在一种实施例中,所述方法还包括:
确定位于同一个事件队列中的所述用户事件的优先级;
根据所述优先级,调整所述用户事件在所述事件队列中的位置;
其中,所述用户事件从所述事件队列的队尾进入所述事件队列,并被所述进程从所述事件队列的队头取出。
在该实施例中,事件队列中的用户事件还可做动态排序,即根据优先级,调整用户事件在事件队列中的位置。例如,通过得分(score)来表征优先级,得分越高,优先级越高。
由于队列属于一种特殊的线性表,只允许在表的前端进行删除操作(读取用户事件处理后删除),而在表的后端进行插入操作(存入用户事件),因而,通过优先级的动态排序,能动态调整事件队列中用户事件处理的先后顺序,提升服务平台的智能性。
需要说明的是,在本公开的实施例中,可根据用户事件的事件属性确定用户事先的优先级并确定用户事件在事件队列中的位置。例如,若用户标识属于重要用户,则将该用户标识的用户事件设置更高的优先级;再例如,若用户事件属于会议提醒事件,则将会议提醒事件设置为更高的优先级,或者,用户事件为收衣服提醒事件,当服务平台基于天气应用确定天气变恶劣,则将收衣服提醒事件设置为更高的优先级;再例如,一个用户事件为今天晚上航班10点起飞的行程提醒事件,另一个用户事件为今天下午4点有快递派送的快递提醒事件,则将快递提醒事件的优先级设置高于行程提醒事件。
在一种实施例中,所述确定位于同一个事件队列中的所述用户事件的优先级,包括:
获取同一个所述事件队列中的所述用户事件的时间信息;
根据所述时间信息对应的时间,确定位于同一个所述事件队列中的所述用户事件的优先级;其中,所述优先级的高低,与所述用户事件的时间信息对应的时间迟早正相关。
如前所述的,可根据用户事件的事件属性确定用户事件的优先级。在该实施例中,根据用户事件的时间信息来确定用户事件的优先级,时间越靠前,用户事件的优先级越高。其中,用户事件的时间信息可以是指用户事件所包含的时间信息。如前所述的快递提醒事件和行程提醒事件中的事件信息。
在本公开的实施例中,服务平台可对用户事件进行智能分析,抽取其中所包含的时间信息。在基于获取的时间信息进行对用户事件的优先级进行排序时,可采用跳表排序法来实现排序。若时间队列中有N(N大于1)个用户事件,则使用跳表排序法时,平均时间复杂度不超过log(N)。
可以理解的是,由于用户事件中包括的时间信息可反映事件执行的先后顺序,因而本公开根据用户事件的时间信息将时间靠前的用户事件设置为更高的优先级,能合理的安排各用户事件的执行顺序,更具智能性。
在一种实施例中,所述通过多个进程,从所述事件队列中读取所述用户事件进行处理,包括:
所述多个进程中的一个进程,从一个所述事件队列的队头读取所述用户事件,并确定是否达到读取的所述用户事件的触发时间;
若达到读取的所述用户事件的触发时间,处理读取的所述用户事件。
在本公开的实施例中,每个进程从事件队列的队头去读取用户事件,并确定是否达到读取的用户事件的触发时间,当在达到触发时间时,则处理读取的用户事件。例如,该用户事件是一个定时任务,例如每个月1号的上午10点给用户发上月消费记录表,则当进程从事件队列的对头读取用户事件后,确定该用户事件的触发时间为1号上午10点,则当当前时间为1号上午10点时,服务平台则给用户发送上个月的消费记录表。
在一种实施例中,所述通过多个所述进程,从所述事件队列中读取所述用户事件进行处理,包括:
通过多个所述进程,以轮询的方式从不同的所述事件队列中读取并处理所述用户事件。
在该实施例中,为使得各事件队列中的用户事件尽量都能被处理到,因而多个进程,会以轮询的方式从不同的事件队列中读取并处理用户事件。
例如,以ABCDE顺序进行排序的5个事件队列,当有4个进程时,4个进程会以ABCD、BCDE、CDEA、DEAB、EABC的顺序对事件队列中的用户事件进行处理,上述顺序即一轮,在一轮处理完成后,则重新按此顺序开始新的一轮。
在一种实施例中,所述方法还包括:
对多个所述事件队列进行随机排序;
所述通过多个所述进程,以轮询的方式从不同的所述事件队列中读取并处理所述用户事件,包括:
通过多个所述进程,以轮询的方式从随机排序后不同的所述事件队列中读取并处理所述用户事件。
在该实施例中,在以轮询方式从不同的事件队列中读取并处理用户事件前,可事先对事件队列进行随机排序,以尽可能使各个事件队列都能被处理到。
例如,首次轮询时事件队列的排列顺序是ABCDE,则下次轮询时,事件队列的排列顺序可以是BCAED。
在本公开的实施例中,可利用Shuffle函数实现对事件队列的随机排序。
在一种实施例中,所述通过多个进程,从所述事件队列中读取所述用户事件进行处理,包括:
采用脚本调用的方式,通过多个所述进程从所述事件队列中读取所述用户事件进行处理。
在本公开的实施例中,在通过多个进程从事件队列中读取用户事件进行处理时,采用脚本调用的方式,程序在执行时不会受其他程序的干扰,因而通过脚本调用的方式能提升程序执行的原子性,即提升进程的稳定性。
示例性的,在利用Redis数据库时,可采用Lua脚本调用的方式。如下是Lua脚本调用示例代码:
其中,ZRANGEBYSCORE指令是从Zset结构中根据score来获取用户事件,即根据优先级来获取用户事件;KEYS[1]是事件队列的名称;ARGV[1]是score下界;ARGV[2]是score上界。
在一种实施例中,所述方法还包括:
在满足扩容条件时,增加一个或多个事件队列。
在本公开的实施例中,当满足扩容条件时,可增加一个或多个事件队列。其中,满足扩容条件可以是事件队列中,用户事件的事件个数大于第一个数阈值。
在一种实施例中,当事件队列中的用户事件个数大于第一个数阈值时,可新增一个或多个事件队列,将超过第一个数阈值的事件队列中的用户事件中的部分,存储至新增的事件队列。多个进程,对从包括新增的事件队列的不同事件队列中取用户事件进行处理,从而简便实现了扩容。
在另一种实施例中,当事件队列中的用户事件个数大于第一个数阈值的时长超过第一时长阈值,则新增一个或多个事件队列。通过基于时长的判定来确定是否需要扩容,以提升扩容的必要性以及服务平台的稳定性。
示例性的,在利用Redis数据库时,可先添加Redis集群节点,并创建新的事件队列;随后,升级消费者(进程),即让消费者获知新增的队列(此时新队列为空);进一步的,升级生产者,即升级用户事件的存储,将用户事件重新分配,使得新增的事件队列中写入用户事件。在对用户事件进行重新分配后,则可利用不同的进程对用户事件进行处理。
需要说明的是,上述扩容过程,可发生在服务平台工作过程中。在扩容过程中,可能存在一个用户的多个用户事件出现在不同的事件队列中,被不同的进程处理的情况。但由于进程在读取并处理用户事件时,可根据时间顺序来处理的,因而出现用户事件处理顺序错误的概率较低。当然,如果是在要求非常严格的交易系统中(比如银行交易系统)可以通过停止服务平台的当前工作来完成平台扩容。
在另一种实施例中,也可在满足扩容条件时,新增进程。其中,满足扩容条件可以是用户事件被读取的时间超过第一预定时长。当用户事件被读取的时间超过第一预定时长时,可采用增加服务器来新增进程处理用户事件,也可利用当前服务器新增进程来处理用户事件。
可以理解的是,在本公开的实施例中,采用分布式的处理架构,方便对服务平台的容量进行动态扩展,具有灵活、扩展性好的特点。
在一种实施例中,所述方法还包括:
在满足缩容条件时,禁止向一个或多个所述事件队列中存入用户事件;
若所述事件队列中的所述用户事件处理完成,删除所述事件队列。
在本公开的实施例中,当满足缩容条件时,禁止向一个或多个所述事件队列中存入用户事件,并当事件队列中的用户事件处理完成时,删除事件队列。其中,满足缩容条件可以是事件队列中,用户事件的事件个数小于第二个数阈值。
在一种实施例中,当事件队列中的用户事件个数小于第二个数阈值时,则可禁止向该事件队列中存入用户事件。
在另一种实施例中,当事件队列中的用户事件个数小于第二个数阈值的时长超过第二时长阈值,则禁止向该事件队列中存入用户事件。可以理解的是,通过基于时长的判定来确定是否需要缩容,以提升缩容的必要性以及服务平台的稳定性。
示例性的,在利用Redis数据库时,主要过程是先升级消费者使其不向用户事件个数小于第二个数阈值的目标事件队列中写入事件,等目标队列的事件被消费完成(处理完成),再升级消费者不读取目标队列,最后删除目标事件队列。
在另一种实施例中,也可在满足缩容条件时,减少进程。其中,满足缩容条件可以是进程读取不到用户事件的时间超过第二预定时长。当用户事件被读取的时间超过第二预定时长时,可采用减少服务器的方式来减少进程,也可关闭服务器中部分进程的方式来减少处理用户事件的进程。
需要说明的是,本公开中的缩容条件和扩容条件,也可是因为硬件调整带来的缩容和扩容。例如,当服务平台中服务器的个数增加或服务器的内存扩大后,使得服务平台检测到服务器个数增加或内存增大,从而满足扩容条件;而当服务平台中服务器的个数减少或服务器的内存缩小后,使得服务平台检测到服务器个数减少或内存降低,从而满足缩容条件。
可以理解的是,在本公开的实施例中,采用分布式的处理架构,方便对服务平台的容量进行动态缩减,具有灵活、适应性好的特点。
图4是根据一示例性实施例示出的一种数据处理装置图。参照图4,在一个可选的实施例中,所述装置还包括:
接收模块101,配置为接收待处理的用户事件;
存储模块102,配置为将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列;其中,不同事件属性的所述用户事件,对应于不同的事件队列;
处理模块103,配置为通过多个进程,从所述事件队列中读取所述用户事件进行处理;
删除模块104,配置为从所述事件队列中,删除处理完的所述用户事件。
可选的,所述装置还包括:
确定模块105,配置为确定位于同一个事件队列中的所述用户事件的优先级;
调整模块106,配置为根据所述优先级,调整所述用户事件在所述事件队列中的位置;
其中,所述用户事件从所述事件队列的队尾进入所述事件队列,并被所述进程从所述事件队列的队头取出。
可选的,所述确定模块105,配置为获取同一个所述事件队列中的所述用户事件的时间信息;根据所述时间信息对应的时间,确定位于同一个所述事件队列中的所述用户事件的优先级;其中,所述优先级的高低,与所述用户事件的时间信息对应的时间迟早正相关。
可选的,所述处理模块103,配置为所述多个进程中的一个进程,从一个所述事件队列的队头读取所述用户事件,并确定是否达到读取的所述用户事件的触发时间;若达到读取的所述用户事件的触发时间,处理读取的所述用户事件。
可选的,所述处理模块103,配置为通过多个所述进程,以轮询的方式从不同的所述事件队列中读取并处理所述用户事件。
可选的,所述装置还包括:
排序模块107,配置为对多个所述事件队列进行随机排序;
所述处理模块103,配置为通过多个所述进程,以轮询的方式从随机排序后不同的所述事件队列中读取并处理所述用户事件。
可选的,所述事件属性包括:指示所述用户事件所属用户的用户标识;不同所述用户标识的用户事件,对应于不同的事件队列中。
可选的,所述存储模块102,配置为以一致性哈希算法处理所述待处理的用户事件的所述用户标识,得到哈希值;将所述待处理的用户事件,存储到与所述哈希值对应的所述事件队列中。
可选的,所述处理模块103,配置为采用脚本调用的方式,通过多个所述进程从所述事件队列中读取所述用户事件进行处理。
可选的,所述装置还包括:
扩容模块108,配置为在满足扩容条件时,增加一个或多个事件队列。
可选的,所述装置还包括:
缩容模块109,配置为在满足缩容条件时,禁止向一个或多个所述事件队列中存入用户事件;若所述事件队列中的所述用户事件处理完成,删除所述事件队列。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种服务器装置900的框图。参照图5,装置900包括处理组件922,其进一步包括一个或多个处理器,以及由存储器932所代表的存储器资源,用于存储可由处理组件922的执行的指令,例如应用程序。存储器932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件922被配置为执行指令,以执行上述信息处理方法。
装置900还可以包括一个电源组件926被配置为执行装置900的电源管理,一个有线或无线网络接口950被配置为将装置900连接到网络,和一个输入输出(I/O)接口958。装置900可以操作基于存储在存储器932的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器932,上述指令可由装置900的处理组件922执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行控制方法,所述方法包括:
接收待处理的用户事件;
将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列;其中,不同事件属性的所述用户事件,对应于不同的事件队列;
通过多个进程,从所述事件队列中读取所述用户事件进行处理;
从所述事件队列中,删除处理完的所述用户事件。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (24)
1.一种数据处理方法,其特征在于,所述方法包括:
接收待处理的用户事件;
将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列;其中,不同事件属性的所述用户事件,对应于不同的事件队列;
通过多个进程,从所述事件队列中读取所述用户事件进行处理;
从所述事件队列中,删除处理完的所述用户事件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定位于同一个事件队列中的所述用户事件的优先级;
根据所述优先级,调整所述用户事件在所述事件队列中的位置;
其中,所述用户事件从所述事件队列的队尾进入所述事件队列,并被所述进程从所述事件队列的队头取出。
3.根据权利要求2所述的方法,其特征在于,所述确定位于同一个事件队列中的所述用户事件的优先级,包括:
获取同一个所述事件队列中的所述用户事件的时间信息;
根据所述时间信息对应的时间,确定位于同一个所述事件队列中的所述用户事件的优先级;其中,所述优先级的高低,与所述用户事件的时间信息对应的时间迟早正相关。
4.根据权利要求1所述的方法,其特征在于,所述通过多个进程,从所述事件队列中读取所述用户事件进行处理,包括:
所述多个进程中的一个进程,从一个所述事件队列的队头读取所述用户事件,并确定是否达到读取的所述用户事件的触发时间;
若达到读取的所述用户事件的触发时间,处理读取的所述用户事件。
5.根据权利要求1所述的方法,其特征在于,所述通过多个所述进程,从所述事件队列中读取所述用户事件进行处理,包括:
通过多个所述进程,以轮询的方式从不同的所述事件队列中读取并处理所述用户事件。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
对多个所述事件队列进行随机排序;
所述通过多个所述进程,以轮询的方式从不同的所述事件队列中读取并处理所述用户事件,包括:
通过多个所述进程,以轮询的方式从随机排序后不同的所述事件队列中读取并处理所述用户事件。
7.根据权利要求1所述的方法,其特征在于,所述事件属性包括:指示所述用户事件所属用户的用户标识;不同所述用户标识的用户事件,对应于不同的事件队列中。
8.根据权利要求7所述的方法,其特征在于,所述将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列,包括:
以一致性哈希算法处理所述待处理的用户事件的所述用户标识,得到哈希值;
将所述待处理的用户事件,存储到与所述哈希值对应的所述事件队列中。
9.根据权利要求1所述的方法,其特征在于,所述通过多个进程,从所述事件队列中读取所述用户事件进行处理,包括:
采用脚本调用的方式,通过多个所述进程从所述事件队列中读取所述用户事件进行处理。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在满足扩容条件时,增加一个或多个事件队列。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在满足缩容条件时,禁止向一个或多个所述事件队列中存入用户事件;
若所述事件队列中的所述用户事件处理完成,删除所述事件队列。
12.一种数据处理装置,其特征在于,所述装置包括:
接收模块,配置为接收待处理的用户事件;
存储模块,配置为将所述待处理的用户事件存储至与待处理的用户事件的事件属性对应的事件队列;其中,不同事件属性的所述用户事件,对应于不同的事件队列;
处理模块,配置为通过多个进程,从所述事件队列中读取所述用户事件进行处理;
删除模块,配置为从所述事件队列中,删除处理完的所述用户事件。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
确定模块,配置为确定位于同一个事件队列中的所述用户事件的优先级;
调整模块,配置为根据所述优先级,调整所述用户事件在所述事件队列中的位置;
其中,所述用户事件从所述事件队列的队尾进入所述事件队列,并被所述进程从所述事件队列的队头取出。
14.根据权利要求13所述的装置,其特征在于,
所述确定模块,配置为获取同一个所述事件队列中的所述用户事件的时间信息;根据所述时间信息对应的时间,确定位于同一个所述事件队列中的所述用户事件的优先级;其中,所述优先级的高低,与所述用户事件的时间信息对应的时间迟早正相关。
15.根据权利要求12所述的装置,其特征在于,
所述处理模块,配置为所述多个进程中的一个进程,从一个所述事件队列的队头读取所述用户事件,并确定是否达到读取的所述用户事件的触发时间;若达到读取的所述用户事件的触发时间,处理读取的所述用户事件。
16.根据权利要求12所述的装置,其特征在于,
所述处理模块,配置为通过多个所述进程,以轮询的方式从不同的所述事件队列中读取并处理所述用户事件。
17.根据权利要求16所述的装置,其特征在于,所述装置还包括:
排序模块,配置为对多个所述事件队列进行随机排序;
所述处理模块,配置为通过多个所述进程,以轮询的方式从随机排序后不同的所述事件队列中读取并处理所述用户事件。
18.根据权利要求12所述的装置,其特征在于,所述事件属性包括:指示所述用户事件所属用户的用户标识;不同所述用户标识的用户事件,对应于不同的事件队列中。
19.根据权利要求18所述的装置,其特征在于,
所述存储模块,配置为以一致性哈希算法处理所述待处理的用户事件的所述用户标识,得到哈希值;将所述待处理的用户事件,存储到与所述哈希值对应的所述事件队列中。
20.根据权利要求12所述的装置,其特征在于,
所述处理模块,配置为采用脚本调用的方式,通过多个所述进程从所述事件队列中读取所述用户事件进行处理。
21.根据权利要求12所述的装置,其特征在于,所述装置还包括:
扩容模块,配置为在满足扩容条件时,增加一个或多个事件队列。
22.根据权利要求12所述的装置,其特征在于,所述装置还包括:
缩容模块,配置为在满足缩容条件时,禁止向一个或多个所述事件队列中存入用户事件;若所述事件队列中的所述用户事件处理完成,删除所述事件队列。
23.一种服务器,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行如权利要求1至11中任一项所述的数据处理方法。
24.一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如权利要求1至11中任一项所述的数据处理方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010763403.7A CN111880910A (zh) | 2020-07-31 | 2020-07-31 | 数据处理方法及装置、服务器及存储介质 |
US17/214,121 US11822961B2 (en) | 2020-07-31 | 2021-03-26 | Method and apparatus for data processing, server and storage medium |
EP21165580.8A EP3945420A1 (en) | 2020-07-31 | 2021-03-29 | Method and apparatus for data processing, server and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010763403.7A CN111880910A (zh) | 2020-07-31 | 2020-07-31 | 数据处理方法及装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111880910A true CN111880910A (zh) | 2020-11-03 |
Family
ID=73205966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010763403.7A Pending CN111880910A (zh) | 2020-07-31 | 2020-07-31 | 数据处理方法及装置、服务器及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11822961B2 (zh) |
EP (1) | EP3945420A1 (zh) |
CN (1) | CN111880910A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010012A (zh) * | 2021-03-09 | 2021-06-22 | 湖北亿咖通科技有限公司 | 车载娱乐系统中虚拟角色的配置方法和计算机存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115129761B (zh) * | 2022-09-02 | 2022-12-23 | 杭州雅拓信息技术有限公司 | 基于Redis实现窗口实时计算的方法、系统和设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5640563A (en) * | 1992-01-31 | 1997-06-17 | International Business Machines Corporation | Multi-media computer operating system and method |
US6360219B1 (en) * | 1998-12-16 | 2002-03-19 | Gemstone Systems, Inc. | Object queues with concurrent updating |
US20030099254A1 (en) * | 2000-03-03 | 2003-05-29 | Richter Roger K. | Systems and methods for interfacing asynchronous and non-asynchronous data media |
US6904124B2 (en) * | 2001-01-31 | 2005-06-07 | General Electric Company | Indirect programming of detector framing node |
US7596644B2 (en) * | 2006-01-11 | 2009-09-29 | Solarflare Communications, Inc. | Transmit rate pacing system and method |
CN104426926B (zh) * | 2013-08-21 | 2019-03-29 | 腾讯科技(深圳)有限公司 | 定时发布数据的处理方法及装置 |
US9990240B2 (en) | 2015-12-11 | 2018-06-05 | Successfactors, Inc. | Event handling in a cloud data center |
US11218419B1 (en) * | 2016-12-06 | 2022-01-04 | Amazon Technologies, Inc. | Execution request prioritization by context |
US10592307B2 (en) | 2016-12-13 | 2020-03-17 | Salesforce.Com, Inc. | Multi user threaded executor |
US11102139B1 (en) * | 2018-09-05 | 2021-08-24 | Amazon Technologies, Inc. | Shared queue management utilizing shuffle sharding |
-
2020
- 2020-07-31 CN CN202010763403.7A patent/CN111880910A/zh active Pending
-
2021
- 2021-03-26 US US17/214,121 patent/US11822961B2/en active Active
- 2021-03-29 EP EP21165580.8A patent/EP3945420A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010012A (zh) * | 2021-03-09 | 2021-06-22 | 湖北亿咖通科技有限公司 | 车载娱乐系统中虚拟角色的配置方法和计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3945420A1 (en) | 2022-02-02 |
US20220035666A1 (en) | 2022-02-03 |
US11822961B2 (en) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9201693B2 (en) | Quota-based resource management | |
CN110018899B (zh) | 回收内存的方法及装置 | |
CN107451853B (zh) | 一种红包实时派发的方法、装置、系统及存储介质 | |
WO2021104178A1 (zh) | 一种动态消息推送方法、系统和汽车诊断服务器 | |
Zuberi et al. | EMERALDS: a small-memory real-time microkernel | |
CN111782295B (zh) | 一种应用程序的运行方法、装置、电子设备及存储介质 | |
CN107092628B (zh) | 时间序列数据的处理方法和装置 | |
CN111880910A (zh) | 数据处理方法及装置、服务器及存储介质 | |
CN110502545B (zh) | 数据存储方法、装置、设备及计算机可读存储介质 | |
CN113242174B (zh) | 邮件同步方法、装置、计算机设备和存储介质 | |
CN109842621A (zh) | 一种减少token存储数量的方法及终端 | |
US9588983B2 (en) | Data classification for adaptive synchronization | |
CN113778652A (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN112118297B (zh) | 延时消息的控制方法、装置、设备及存储介质 | |
CN111552548A (zh) | 一种任务处理方法、装置、电子设备及机器可读存储介质 | |
CN112650449A (zh) | 缓存空间的释放方法、释放系统、电子设备及存储介质 | |
CN113302593A (zh) | 任务处理方法、装置、系统、电子设备及存储介质 | |
CN113986981A (zh) | 一种数据同步方法及装置 | |
CN115129438A (zh) | 任务分布式调度的方法和装置 | |
CN109542598B (zh) | 定时任务管理方法及装置 | |
CN116132528B (zh) | 一种航班管理消息的推送方法、装置及电子设备 | |
CN113204434B (zh) | 基于k8s的计划任务执行方法、装置及计算机设备 | |
CN115794841A (zh) | 数据更新方法、装置、电子设备及存储介质 | |
CN115632993A (zh) | 流量控制方法及装置 | |
CN117931405A (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 |