CN114968575A - 一种基于异步任务的防重复消费的方法及相关装置 - Google Patents
一种基于异步任务的防重复消费的方法及相关装置 Download PDFInfo
- Publication number
- CN114968575A CN114968575A CN202210573796.4A CN202210573796A CN114968575A CN 114968575 A CN114968575 A CN 114968575A CN 202210573796 A CN202210573796 A CN 202210573796A CN 114968575 A CN114968575 A CN 114968575A
- Authority
- CN
- China
- Prior art keywords
- consumption
- instance
- tasks
- asynchronous
- batch
- 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/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
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供了一种基于异步任务的防重复消费的方法及相关装置,该方法包括:根据多个消费实例在执行历史第一批量任务时的任务分配情况,以及根据该多个消费实例的关键词从第二批量任务中搜索的任务数量确定目标比例;根据该目标比例确定该多个消费实例中每个消费实例所需要执行的目标异步任务;为该多个消费实例的创建批次号,以此对该多个消费实例的该目标异步任务进行标记;通过第一消费实例执行标记了该第一消费实例的批次号的异步任务,该第一消费实例为该多个消费实例中的任意一个消费实例。采用本申请实施例,能够在一定程度上有效的提高系统的性能。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于异步任务的防重复消费的方法及相关装置。
背景技术
随着科技的进步和经济的发展,数据成爆发式的增长,可能每天都会产生并处理大批量的数据,特别是在保险、银行等行业有大客户量和业务量,相应的,会有大批量的异步任务出现。
在处理异步任务的过程中,需要防止同一个异步任务重复提交,所以需要对异步任务加锁,比如,当要对数据库中的一条数据进行修改时,为了避免同时被其他人修改,直接对该数据进行加锁。如果批量异步任务出现数量突增,会使得系统性能大幅度下降,并且在增加实例消费的情况下,容易出现数据库锁表。该问题严重甚至会出现应用和数据库堵塞,导致整个应用奔溃,极其容易引起用户的反感或投诉。
因此,在处理大批量异步任务防重复消费的情况下如何解决系统性能的问题是我们关心的热点。
发明内容
本申请实施例提供了一种基于异步任务的防重复消费的方法及相关装置,能够在一定程度上有效的提高系统的性能。
第一方面,本申请实施例提供一种基于异步任务的防重复消费的方法,该方法包括:
根据多个消费实例在执行历史第一批量任务时的任务分配情况,以及根据该多个消费实例的关键词从第二批量任务中搜索的任务数量确定目标比例;
根据该目标比例确定该多个消费实例中每个消费实例所需要执行的目标异步任务,其中,该目标异步任务属于该第二批量任务中的任务;
为该多个消费实例的创建批次号,以此对该多个消费实例的该目标异步任务进行标记,其中,为不同消费实例的批次号不同,该第二批量任务中至少存在一个异步任务被标记了两种批次号;
通过第一消费实例执行标记了该第一消费实例的批次号的异步任务,其中,该第一消费实例为该多个消费实例中的任意一个消费实例。
上述方法中,通过以各消费实例历史上执行异步任务的情况以及查询的可执行的异步任务的情况作为参考,对于无法精准的定位到需要获取的异步任务,才从大批量异步任务中,直接对一定数量的异步任务处理而言,本申请实施例中,各消费实例的数量更均衡。而且,同一个异步任务可以被多个消费实例标记,比如,消费实例A无须将目标异步全部标记后,再把异步任务释放出来,消费实例B才能去标记,通过这种做法,不堵塞其他的消费实例进行标记,由于是多个消费实例在标记,对批量异步任务的更新速度也更快,对于系统的性能方面有很大的提升。
第二方面,本申请实施例提供了一种基于异步任务的防重复消费的装置,该装置包括:
第一确定单元,用于根据多个消费实例在执行历史第一批量任务时的任务分配情况,以及根据多个消费实例的关键词从第二批量任务中搜索的任务数量确定目标比例;
第二确定单元,用于根据该目标比例确定该多个消费实例中每个消费实例所需要执行的目标异步任务,其中,该目标异步任务属于该第二批量任务中的任务;
标记单元,用于为该多个消费实例创建批次号,以此对该多个消费实例的该目标异步任务进行标记,其中,不同消费实例的批次号不同,该第二批量任务中至少存在一个异步任务被标记了两种批次号;
执行单元,用于执行标记了第一消费实例的批次号的异步任务,其中,第一消费实例为该多个消费实例中的任意一个消费实例。
上述方法中,通过以各消费实例历史上执行异步任务的情况以及查询的可执行的异步任务的情况作为参考,对于无法精准的定位到需要获取的异步任务,才从大批量异步任务中,直接对一定数量的异步任务处理而言,本申请实施例中,各消费实例的数量更均衡。而且,同一个异步任务可以被多个消费实例标记,比如,消费实例A无须将目标异步全部标记后,再把异步任务释放出来,消费实例B才能去标记,通过这种做法,不堵塞其他的消费实例进行标记,由于是多个消费实例在标记,对批量异步任务的更新速度也更快,对于系统的性能方面有很大的提升。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器,该存储器用于存储计算机程序,该处理器用于调用该计算机程序,执行如下操作:
根据多个消费实例在执行历史第一批量任务时的任务分配情况,以及根据多个消费实例的关键词从第二批量任务中搜索的任务数量确定目标比例;
根据该目标比例确定该多个消费实例中每个消费实例所需要执行的目标异步任务,其中,该目标异步任务属于该第二批量任务中的任务;
为该多个消费实例创建批次号,以此对该多个消费实例的该目标异步任务进行标记,其中,不同消费实例的批次号不同,该第二批量任务中至少存在一个异步任务被标记了两种批次号;
执行标记了该第一消费实例的批次号的异步任务,其中,该第一消费实例为该多个消费实例中的任意一个消费实例。
上述方法中,通过以各消费实例历史上执行异步任务的情况以及查询的可执行的异步任务的情况作为参考,对于无法精准的定位到需要获取的异步任务,才从大批量异步任务中,直接对一定数量的异步任务处理而言,本申请实施例中,各消费实例的数量更均衡。而且,同一个异步任务可以被多个消费实例标记,比如,消费实例A无须将目标异步全部标记后,再把异步任务释放出来,消费实例B才能去标记,通过这种做法,不堵塞其他的消费实例进行标记,由于是多个消费实例在标记,对批量异步任务的更新速度也更快,对于系统的性能方面有很大的提升。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有程序指令,当其在处理器上运行时,实现第一方面提供的基于异步任务的防重复消费的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对本申请实施例用到的附图作简单地介绍。
图1是本申请实施例提供的一种电子设备的结构示意图;
图2是本申请实施例提供的一种基于异步任务的防重复消费的方法流程示意图;
图3是本申请实施例示例的一种确定目标比例的示意图;
图4是本申请实施例示例的一种异步任务被标记的示意图;
图5是本申请实施例示例的一种通知异步任务被执行的消息的示意图;
图6是本申请实施例提供的一种基于异步任务的防重复消费的装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行更详细的描述。
参见图1,图1是本申请实施例提供的一种电子设备的结构示意图,该电子设备100包括处理器101、存储器102和通信接口103,该处理器101、存储器102和通信接口103通过总线相互连接。
存储器102是用来存储程序和各种数据信息的部件,存储器102包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable read only memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM)。该存储器102用于提供存储空间,存放程序和数据,可包括但不限于:Android系统、iOS系统、Windows系统等等,本申请对此并不作限定。在本申请实施例中,该存储器102用于存储相关指令及数据,比如,存储消费实例需要执行的异步任务、消费实例发送给其他消费实例的告知消息等。
处理器101为信息处理、程序运行的执行单元。处理器101可以是一个或多个中央处理器(central processing unit,CPU),在处理器101是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。在本申请实施例中,比如,该处理器101可以调用存储器102中存储的异步任务分配给多个消费实例,再如,该处理器101可以调用存储器102中存储的异步任务并进行标记。
通信接口103用于接收或发送数据,可选的,通信接口可以包括有限通信接口或无线通信接口。在本申请实施例中,比如,接收异步任务被执行的告知消息。
该电子设备100可以为单个设备,或者为多个设备组成的服务器集群。
以下对本申请实施例提供的方法进行介绍。
请参见图2,图2是本申请实施例提供的一种基于异步任务的防重复消费的方法流程示意图,该方法可以基于图1所示的电子设备100实现,也可以基于其他设备来实现,该方法包括但不限于如下步骤。
步骤S201:电子设备根据多个消费实例在执行历史第一批量任务时的任务分配情况,以及根据该多个消费实例的关键词从第二批量任务中搜索的任务数量确定目标比例。
其中,实例指的是线程,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
在本申请实施例中,任务指的是异步任务。其中,异步指的是在执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。
以用户上网买保险为例,在买保险的过程中,其中有一个操作是发邮件,即在买了保险之后,系统需要去发邮件告诉用户说已经有了保单。如果说是同步的话,用户在点击完购买的按钮之后,接着系统会发一封邮件告诉用户已经购买成功,然后会出现购买保险相关信息的弹窗,在这过程中是系统是先发邮件然后再出现弹窗,这个情况是同步,这种情况下发的邮件为同步任务。如果是异步的话,系统会先把发邮件的需求记录下来,记录到数据库的表里面,接着就直接出现弹窗,出现弹窗之后,再去发邮件,这种情况是异步,这种情况下发的邮件是异步任务。通俗的来说,异步任务是指不会立即执行的任务。
第一批量任务指的是多个消费实例在历史记录中执行多次的批量异步任务中的任意一次的批量异步任务。
第二批量异步任务指的是当前多个消费实例所需要执行的某一批异步任务。
为了将多个消费实例历史中执行的异步任务与当前需要执行的异步任务区分开,所以,将两种情况下的异步任务以不同的名称区分。
多个消费实例的关键词指的是多个消费实例各自所需要执行的异步任务的关键信息。举例来说,当前多个消费实例需要处理关于保险的一批异步任务,其中,该一批异步任务是与养老保险、旅游保险、意外险等对应的异步任务,假设多个消费实例中的消费实例A需要处理的是养老保险对应的异步任务,关键词为体现养老保险的一些词。
可选的,通过利用计算机在结构化查询(Structured Query Language,SQL)语句中输入关键词,以此从第二批量任务中搜索异步任务。其中,SQL是具有数据操纵和数据定义等多种功能的数据库语言,可以通过SQL访问和处理数据库,比如数据插入、查询、更新和删除等。但是,具体的以什么样的形式进行搜索不作任何限定。
目标比例用于确定上述多个消费实例中每个消费实例所需要执行的目标异步任务,其中,该目标异步任务属于上述第二批量任务中的任务。
目标比例至少可以通过以下方式确定:
方式一,根据上述多个消费实例在执行历史第一批量任务中的第一任务数量确定第一比例,其中,该第一比例表征上述多个消费实例在历史上执行的异步任务的占比,以该第一比例为目标比例。举例来说,消费实例A、B、C在历史执行异步任务的过程中,第一批量任务为1000个,消费实例A执行的异步任务为300个,消费实例B执行的异步任务为400个,消费实例C执行的异步任务为300个。其中,消费实例A、B、C分别执行的异步任务的数量即为上述的第一任务数量。消费实例A执行的异步任务的占比为30%,消费实例B执行的异步任务的占比为40%,消费实例C执行的异步任务的占比为30%,消费实例A的占比30%、消费实例B的占比40%、消费实例C的占比30%即为上述的目标比例。
可以理解的是,多个消费实例在执行历史第一批量异步任务中的第一任务数量的第一比例,反映了多个消费实例执行异步任务的能力,因此,以该第一比例作为确定目标比例的因素具有一定的意义。
方式二,首先,根据上述多个消费实例在执行历史第一批量任务中的第一任务数量确定第一比例,其中,该第一比例表征上述多个消费实例在历史上执行的异步任务的占比,第一任务数量为该多个消费实例中每个消费实例执行的异步任务的数量。以上述消费实例A、B、C在历史第一批量任务1000个任务执行的情况为例,消费实例A执行的异步任务的占比为30%,消费实例B执行的异步任务的占比为40%,消费实例C执行的异步任务的占比为30%,消费实例A的占比30%、消费实例B的占比40%、消费实例C的占比30%即为上述的第一比例。
其次,根据该多个消费实例中每个消费实例的关键词从第二批量任务中搜索该每个消费实例对应的任务,以此确定上述每个消费实例对应的第二任务数量。其中,第二任务数量即为当前该多个消费实例中每个消费实例搜索到的异步任务的数量。举例来说,当前消费实例A、B、C需要对第二批量任务进行处理,该第二批量任务有1000个,其中,消费实例A搜索到的异步任务有400个,消费实例B搜索到的异步任务有500个,消费实例C搜索到的异步任务有400个,消费实例A搜索到的400个、消费实例B搜索到的500个、消费实例C搜索到的400个即为上述的第二任务数量。
然后,根据该每个消费实例对应的第二任务数量确定第二比例,其中,该第二比例表征预估的该多个消费实例在执行该第二批量任务过程中执行的异步任务的占比。以上述消费实例A、B、C搜索到的第二任务数量为例,则预估的消费实例A、B、C各自执行的异步任务的占比分别对应的为40%、50%、40%,该预估的消费实例A的占比40%、预估的消费实例B的占比50%、预估的消费实例C的占比40%即为上述的第二比例。
最后,根据上述第一比例和第二比例确定目标比例。如图3所示,图3示例出一种确定目标比例的示意图,假设其中消费实例A的第一比例为30%,消费实例B的第一比例40%,消费实例C的第一比例30%;消费实例A的第二比例为40%,消费实例B的第二比例50%,消费实例C的第二比例40%;可以通过上述中每个消费实例的比例参数进行综合考虑,来确定目标比例。例如,消费实例A的目标比例为(30%+40%)/2=35%,消费实例B的目标比例为(40%+50%)/2=45%,消费实例C的目标比例为(30%+40%)/2=35%。
可以理解的是,为了避免某个消费实例执行的异步任务过多或过少而导致异步任务整体分配不均衡的问题,本申请实施例特地以各消费实例历史上执行异步任务的情况和个消费实例查询的可执行的异步任务的情况作为参考,历史上执行异步任务的情况能够一定程度上反映各消费实例的业务执行能力,而查询的可执行的异步任务的情况能够一定程度上反映异步任务的执行需求,因此这两方面综合考虑之后为各消费实例确定出的异步任务数量更均衡。
步骤S202:电子设备根据该目标比例确定该多个消费实例中每个消费实例所需要执行的目标异步任务。
其中,该目标异步任务属于上述第二批量任务中的任务。目标异步任务为多个消费实例中每个消费实例最终需要去处理的异步任务。
具体地,电子设备对多个消费实例中的每个消费实例搜索得到的异步任务进行调整,得到各个消费实例对应的目标异步任务,使得各个消费实例对应的目标异步任务的数量比例为上述的目标比例。
举例来说,消费实例A、B、C需要对1000个第二批量任务进行处理,消费实例A在第二批量任务中搜索得到的任务为400个,消费实例B在第二批量任务中搜索得到的任务为600个,消费实例C在第二批量任务中搜索得到的任务为300个;而消费实例A的目标比例为35%,消费实例B的目标比例为45%,消费实例C的目标比例为35%;电子设备根据消费实例A的目标比例35%,将搜索得到的异步任务调整为350个,消费实例B和消费实例C以同样的方式对所搜索得到的异步任务进行调整,调整得到的异步任务即为上述目标异步任务。
可以理解的是,以目标比例对多个消费实例中的每个消费实例查询得到的可执行的异步任务,进行调整确定出的异步任务数量更均衡。
步骤S203:电子设备为该多个消费实例创建批次号,以此对该多个消费实例的该目标异步任务进行标记。
其中,不同消费实例的批次号不同。创建批次号是为了对异步任务进行标记,从而各个消费实例可以根据各个消费实例对应的批次号获得异步任务。
上述中第二批量任务中至少存在一个异步任务被标记了两种批次号。举例来说,从传统的技术来讲,某一个异步任务被消费实例A标记了,消费实例B就不再对该异步任务进行标记。在本申请实施例中,消费实例A对某一个异步任务进行了标记,与此同时,消费实例B也可以对该某一个异步任务进行标记。如图4所示,图4示例出一种异步任务被标记的示意图,其中,消费实例A将编号1-6的异步任务标记为a1到a6,与此同时,消费实例B将编号5-10的异步任务标记为b1到b6。
消费实例A在对异步任务进行标记的时候,不妨碍消费实例B同时标记,假设消费实例A中的一个异步任务被标记了a,同时也被消费实例B标记了b。
可以理解的是,消费实例A无须将目标异步全部标记后,再把目标异步释放出来,消费实例B才能去标记,通过这种做法,不堵塞其他的消费实例进行标记。同时,由于是多个消费实例在标记,对批量异步任务的更新速度也更快。
进一步地,本申请实施例中,通过对搜索得到的批量异步任务调整过后的目标异步任务,创建批次号并获取该目标异步任务;而不是由于无法精准的定位到需要获取的异步任务,才从大批量异步任务中,直接对一定数量的异步任务创建批次号并获取该一定数量的异步任务。
举例来说,数据库表里面有一百万个异步任务,假设消费实例A最终执行的数据为1000个,从传统的技术来讲,消费实例A可能无法确定哪些异步任务需要自己去处理,可能先把其中的10000个数据给标记,本申请实施例中,根据目标比例确定的目标异步任务可能是1500个,此时,只需要对该1500个异步任务进行标记,这样的话对数据标记的量大大减少了。
可以理解的是,如果在一百万个异步任务里面需要获取一千个数据,但是没办法精准的定位到这一千个异步任务,可能先去给一万个异步任务标记,标记到了之后才确定其中有一千个异步任务是需要的,但是给这一万个异步任务标记了。但是通过目标比例确定目标异步任务之后,可能给其中的一千五百条标记,这样的话,会减少对大批量的数据进行标记,防止计算机系统性能大幅度下降。
可选的,电子设备获取目标异步任务的索引,通过多个消费实例中每个消费实例基于该索引创建批次号,以此对多个消费实例的目标异步任务进行标记。具体的以什么样的形式创建批次号不作任何限定。
其中,在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。通俗来说,索引指的是异步任务对应的身份标识号(IdentityDocument,ID),其中,每一个异步任务对应一个ID。可选的,通过利用计算机写SQL语句来获取异步任务的索引。
步骤S204:电子设备通过第一消费实例执行标记了该第一消费实例的批次号的异步任务,其中,该第一消费实例为该多个消费实例中的任意一个消费实例。
具体地,电子设备通过第一消费实例执行标记了该第一消费实例的批次号的异步任务,至少包括两种情况:
情况一,电子设备通过第一消费实例判断标记了该第一消费实例的批次号的第一异步任务是否已被该第一消费实例之外的消费实例执行;若该第一异步任务未被该第一消费实例之外的消费实例执行,则执行该第一异步任务。
其中,该第一异步任务为标记了该第一消费实例的批次号的任意一个异步任务。
第一消费实例标记中的异步任务中的部分异步任务可能被执行了,所以在执行异步任务中的每一个异步任务之前,都需要对该每一个异步任务进行判断。
以用户在购买保险的情况下发邮件为例,消费实例A在拿到属于自己标记的邮件后,假设有150封邮件,先判断第一封邮件有没有被其他的消费实例执行过,若执行了则忽略第一封邮件,接着,判断第二封邮件有没有被其他的消费实例执行,若没有被执行则将第二封邮件发出去,对于后面的148封邮件以此类推。同理,其他的消费实例也根据上述方法操作。
可以理解的是,当用户在购买保险的时候,在大批量的邮件需要下发的情况下,如果多次收到购买保单成功的邮件,这样会给用户带来不好的体验感,同时会造成计算机的资源浪费。
在一种可选的方案中,若第一异步任务已被第一消费实例之外的消费实例执行,则通过该第一消费实例向该第一消费实例以外的消费实例发送第一通知消息,其中,该第一通知消息用于通知该第一异步任务已被执行。
举例来说,消费实例A、B、C需要执行一批异步任务,其中,消费实例A已经执行过了异步任务中的1到150编号的异步任务,消费实例B正在对编号148到400的异步任务进行逐一的处理过程中,消费实例B在判断编号为148的异步任务被执行了后,就向其他消费实例发送通知消息,告知编号为148的异步任务被执行了,接着,对编号为149、150的异步任务做同样的操作,如图5所示,图5示例出一种通知异步任务被执行的消息的示意图。因此,消费实例C就可以直接忽略编号为148、149、150的异步任务。
可以理解的是,上述消费实例C无须再对上述编号为148、149、150的异步任务进行判断,可以直接忽略编号为148、149、150的异步任务,因此,在大批量的异步任务的情况下,可以降低判断异步任务是否被执行的开销。
情况二,电子设备通过第一消费实例对标记了该第一消费实例的批次号的异步任务进行整体的判断,判断该第一消费实例的批次号的异步任务中是否已被该第一消费实例之外的消费实例执行的第二异步任务;若该第二异步任务未被该第一消费实例之外的消费实例执行,则执行该第二异步任务。
其中,第二异步任务为标记了上述第一消费实例的批次号的任意一个异步任务。
以消费实例发邮件为例,消费实例A在拿到属于自己标记的邮件后,假设有150封邮件,先把150封都判断一遍,然后再去把其中未被执行过的邮件发出去。
在一种可选的方案中,若第二异步任务已被第一消费实例之外的消费实例执行,则通过该第一消费实例向执行了该第二异步任务的消费实例之外的消费实例发送第二通知消息,其中,该第二通知消息用于通知该第二异步任务已被执行。
举例来说,消费实例A、B、C需要执行一批异步任务,其中,消费实例A已经执行过了异步任务中的1到150编号的异步任务,消费实例B正在对编号148到400的异步任务进行处理,消费实例B先对拿到手的所有异步任务进行整体的判断一遍,发现编号为148、149、150的异步任务已经被执行过了,消费实例B就向其他消费实例发送通知,告知编号为148、149、150的异步任务被执行了,因此,消费实例C就可以直接忽略编号为148、149、150的异步任务。
上述详细阐述了本申请实施例的方法,下面提供本申请实施例的装置。
请参见图6,图6是本申请实施例提供的一种基于异步任务的防重复消费的装置600的结构示意图,该防重复消费的装置600可以为上述电子设备或者该电子设备中的器件或功能模块,该装置600可以包括第一确定单元601、第二确定单元602、标记单元603和执行单元604,其中各个单元的详细描述如下。
第一确定单元601,用于根据多个消费实例在执行历史第一批量任务时的任务分配情况,以及根据多个消费实例的关键词从第二批量任务中搜索的任务数量确定目标比例;
第二确定单元602,用于根据该目标比例确定该多个消费实例中每个消费实例所需要执行的目标异步任务,其中,该目标异步任务属于该第二批量任务中的任务;
标记单元603,用于为该多个消费实例创建批次号,以此对该多个消费实例的该目标异步任务进行标记,其中,不同消费实例的批次号不同,该第二批量任务中至少存在一个异步任务被标记了两种批次号;
执行单元604,用于执行标记了该第一消费实例的批次号的异步任务,其中,该第一消费实例为该多个消费实例中的任意一个消费实例。
上述方法中,通过以各消费实例历史上执行异步任务的情况以及查询的可执行的异步任务的情况作为参考,对于无法精准的定位到需要获取的异步任务,才从大批量异步任务中,直接对一定数量的异步任务处理而言,本申请实施例中,各消费实例的数量更均衡。而且,同一个异步任务可以被多个消费实例标记,比如,消费实例A无须将目标异步全部标记后,再把异步任务释放出来,消费实例B才能去标记,通过这种做法,不堵塞其他的消费实例进行标记,由于是多个消费实例在标记,对批量异步任务的更新速度也更快,对于系统的性能方面有很大的提升。
在一种可选的方案中,在根据多个消费实例在执行历史第一批量任务时的任务分配情况,以及根据多个消费实例的关键词从第二批量任务中搜索的任务数量确定目标比例方面,上述第一确定单元601具体用于:
根据多个消费实例在执行历史第一批量任务中的第一任务数量确定第一比例,该第一比例表征该多个消费实例在历史上执行的异步任务的占比;
根据该多个消费实例中每个消费实例的关键词从第二批量任务中搜索该每个消费实例对应的任务,以确定该每个消费实例对应的第二任务数量;
根据该每个消费实例对应的第二任务数量确定第二比例,其中,该第二比例表征预估的该多个消费实例在执行该第二批量任务过程中执行的异步任务的占比;
根据该第一比例和该第二比例确定目标比例。
可以理解的是,为了避免某个消费实例执行的异步任务过多或过少而导致异步任务整体分配不均衡的问题,本申请实施例特地以各消费实例历史上执行异步任务的情况和个消费实例查询的可执行的异步任务的情况作为参考,历史上执行异步任务的情况能够一定程度上反映各消费实例的业务执行能力,而查询的可执行的异步任务的情况能够一定程度上反映异步任务的执行需求,因此这两方面综合考虑之后为各消费实例确定出的异步任务数量更均衡。
在一种可选的方案中,在根据目标比例确定多个消费实例中每个消费实例所需要执行的目标异步任务方面,上述第二确定单元602具体用于:
对为每个消费实例搜索得到的异步任务进行调整,得到各个消费实例对应的目标异步任务,使得各个消费实例对应的目标异步任务的数量比例为所述目标比例。
在一种可选的方案中,在执行标记了第一消费实例的批次号的异步任务方面,上述执行单元604具体用于:
判断标记了第一消费实例的批次号的第一异步任务是否已被该第一消费实例之外的消费实例执行,该第一异步任务为标记了该第一消费实例的批次号的任意一个异步任务;
若该第一异步任务未被该第一消费实例之外的消费实例执行,则执行该第一异步任务。
举例来说,当用户在购买保险的时候,在大批量的邮件需要下发的情况下,如果多次收到购买保单成功的邮件,这样会给用户带来不好的体验感,同时会造成计算机的资源浪费。可以理解的是,电子设备通过第一消费实例执行异步任务之前,先对标记的异步任务进行判断,判断是否被第一消费实例之外的其他消费实例所执行,有效的避免了同一个异步任务被执行多次,而且在一定程度上避免了系统执行多次异步任务的资源浪费。
在一种可选的方案中,上述防重复消费的装置600还包括:
通知单元,用于在第一异步任务已被第一消费实例之外的消费实例执行的情况下,向该第一消费实例以外的消费实例发送第一通知消息,其中,该第一通知消息用于通知该第一异步任务已被执行。
可以理解的是,向该第一消费实例之外的消费实例发送通知消息,该第一消费实例之外的消费实例可以根据接收到的通知消息忽略被执行过的异步任务,无须再次对被执行过的异步任务进行判断,在大批量的异步任务的情况下,可以降低判断异步任务是否被执行的开销。
在一种可选的方案中,在执行标记了第一消费实例的批次号的异步任务方面,上述执行单元604具体用于:
对标记了该第一消费实例的批次号的异步任务进行整体的判断,判断该第一消费实例的批次号的异步任务中是否已被该第一消费实例之外的消费实例执行的第二异步任务,该第二异步任务为标记了该第一消费实例的批次号的任意一个异步任务;
若该第二异步任务未被该第一消费实例之外的消费实例执行,则执行该第二异步任务。
在一种可选的方案中,上述通知单元还用于:
在第二异步任务已被第一消费实例之外的消费实例执行的情况下,通过该第一消费实例向执行了该第二异步任务的消费实例之外的消费实例发送第二通知消息,其中,该第二通知消息用于通知该第二异步任务已被执行。
本申请实施例还提供一种计算机可读存储介质,当该计算机可读存储介质中存储有计算机指令,当其在处理器上运行时,实现如图2所示的方法流程。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种基于异步任务的防重复消费的方法,其特征在于,应用于电子设备,所述方法包括:
根据多个消费实例在执行历史第一批量任务时的任务分配情况,以及根据所述多个消费实例的关键词从第二批量任务中搜索的任务数量确定目标比例;
根据所述目标比例确定所述多个消费实例中每个消费实例所需要执行的目标异步任务,其中,所述目标异步任务属于所述第二批量任务中的任务;
为所述多个消费实例创建批次号,以此对所述多个消费实例的所述目标异步任务进行标记,其中,不同消费实例的批次号不同,所述第二批量任务中至少存在一个异步任务被标记了两种批次号;
通过第一消费实例执行标记了所述第一消费实例的批次号的异步任务,其中,所述第一消费实例为所述多个消费实例中的任意一个消费实例。
2.根据权利要求1所述的方法,其特征在于,所述根据多个消费实例在执行历史第一批量任务时的任务分配情况,以及根据多个消费实例的关键词从第二批量任务中搜索的任务数量确定目标比例,包括:
根据多个消费实例在执行历史第一批量任务中的第一任务数量确定第一比例,所述第一比例表征所述多个消费实例在历史上执行的异步任务的占比;
根据所述多个消费实例中每个消费实例的关键词从第二批量任务中搜索所述每个消费实例对应的任务,以确定所述每个消费实例对应的第二任务数量;
根据所述每个消费实例对应的第二任务数量确定第二比例,其中,所述第二比例表征预估的所述多个消费实例在执行所述第二批量任务过程中执行的异步任务的占比;
根据所述第一比例和所述第二比例确定目标比例。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述目标比例确定所述多个消费实例中每个消费实例所需要执行的目标异步任务,包括:
对为所述每个消费实例搜索得到的异步任务进行调整,得到各个消费实例对应的目标异步任务,使得所述各个消费实例对应的目标异步任务的数量比例为所述目标比例。
4.根据权利要求1或2所述的方法,其特征在于,所述通过第一消费实例执行标记了所述第一消费实例的批次号的异步任务,包括:
通过第一消费实例判断标记了所述第一消费实例的批次号的第一异步任务是否已被所述第一消费实例之外的消费实例执行,所述第一异步任务为标记了所述第一消费实例的批次号的任意一个异步任务;
若所述第一异步任务未被所述第一消费实例之外的消费实例执行,则执行所述第一异步任务。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述第一异步任务已被所述第一消费实例之外的消费实例执行,则通过所述第一消费实例向所述第一消费实例之外的消费实例发送通知消息,其中,所述通知消息用于通知所述第一异步任务已被执行。
6.根据权利要求1或2所述的方法,其特征在于,所述通过第一消费实例执行标记了所述第一消费实例的批次号的异步任务,包括:
通过第一消费实例对标记了所述第一消费实例的批次号的异步任务进行整体的判断,判断标记了所述第一消费实例的批次号的异步任务中是否已被所述第一消费实例之外的消费实例执行的第二异步任务,所述第二异步任务为标记了所述第一消费实例的批次号的任意一个异步任务;
若所述第二异步任务未被所述第一消费实例之外的消费实例执行,则执行所述第二异步任务。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述第二异步任务已被所述第一消费实例之外的消费实例执行,则通过所述第一消费实例向执行了所述第二异步任务的消费实例之外的消费实例发送第二通知消息,其中,所述第二通知消息用于通知所述第二异步任务已被执行。
8.一种基于异步任务的防重复消费的装置,其特征在于,所述装置包括:
第一确定单元,用于根据多个消费实例在执行历史第一批量任务时的任务分配情况,以及根据多个消费实例的关键词从第二批量任务中搜索的任务数量确定目标比例;
第二确定单元,用于根据所述目标比例确定所述多个消费实例中每个消费实例所需要执行的目标异步任务,其中,所述目标异步任务属于所述第二批量任务中的任务;
标记单元,用于为所述多个消费实例创建批次号,以此对所述多个消费实例的所述目标异步任务进行标记,其中,不同消费实例的批次号不同,所述第二批量任务中至少存在一个异步任务被标记了两种批次号;
执行单元,用于通过第一消费实例执行标记了所述第一消费实例的批次号的异步任务,其中,所述第一消费实例为所述多个消费实例中的任意一个消费实例。
9.一种电子设备,其特征在于,所述设备包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现权利要求1-7任一项所述的基于异步任务的防重复消费的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,当其在处理器上运行时,实现权利要求1-7任一项所述的基于异步任务的防重复消费的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210573796.4A CN114968575A (zh) | 2022-05-25 | 2022-05-25 | 一种基于异步任务的防重复消费的方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210573796.4A CN114968575A (zh) | 2022-05-25 | 2022-05-25 | 一种基于异步任务的防重复消费的方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114968575A true CN114968575A (zh) | 2022-08-30 |
Family
ID=82954948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210573796.4A Pending CN114968575A (zh) | 2022-05-25 | 2022-05-25 | 一种基于异步任务的防重复消费的方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114968575A (zh) |
-
2022
- 2022-05-25 CN CN202210573796.4A patent/CN114968575A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107679081B (zh) | 信息修改方法、装置、计算机设备及计算机可读存储介质 | |
US9460117B2 (en) | Image searching | |
US9116879B2 (en) | Dynamic rule reordering for message classification | |
CN102129425B (zh) | 数据仓库中大对象集合表的访问方法及装置 | |
US11775520B2 (en) | Updating of a denormalized database object after updating, deleting, or inserting a record in a source database object | |
AU2012236577A1 (en) | Processing data in a mapreduce framework | |
US8171228B2 (en) | Garbage collection in a cache with reduced complexity | |
CN112214505B (zh) | 数据同步方法、装置、计算机可读存储介质及电子设备 | |
CN112883030A (zh) | 数据收集方法、装置、计算机设备和存储介质 | |
CN108897729B (zh) | 一种交易模板共享方法、装置、电子设备及存储介质 | |
US9965521B1 (en) | Determining a transition probability from one or more past activity indications to one or more subsequent activity indications | |
CN112052259A (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
CN111045983A (zh) | 核电站电子文件管理方法、装置、终端设备及介质 | |
US8935710B1 (en) | Unique event identification | |
CN114968575A (zh) | 一种基于异步任务的防重复消费的方法及相关装置 | |
US9195734B2 (en) | Associating a task completion step of a task with a task template of a group of similar tasks | |
CN114461762A (zh) | 档案变更识别方法、装置、设备及存储介质 | |
CN113704251A (zh) | 分布式存储数据库一体机的首页布局方法及装置 | |
CN113177157B (zh) | 标签分离方法、装置、设备及存储介质 | |
CN117312354A (zh) | 一种数据处理方法、装置、存储介质及设备 | |
US20150154252A1 (en) | Enhanced service environments with user-specific working sets | |
CN114356930A (zh) | 舆情数据的查询方法及相关装置 | |
CN116578799A (zh) | 一种小程序与第三方平台关联的实现方法、装置及介质 | |
CN114706888A (zh) | 业务调度方法、装置、存储介质和服务器 | |
CN118504026A (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 |