CN111124635A - 任务处理方法、装置、电子设备和存储介质 - Google Patents
任务处理方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN111124635A CN111124635A CN201911243894.6A CN201911243894A CN111124635A CN 111124635 A CN111124635 A CN 111124635A CN 201911243894 A CN201911243894 A CN 201911243894A CN 111124635 A CN111124635 A CN 111124635A
- Authority
- CN
- China
- Prior art keywords
- task
- sequence segment
- maximum
- sequence
- distributed
- 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
- 238000003672 processing method Methods 0.000 title abstract description 19
- 238000000034 method Methods 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 13
- 230000010354 integration Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000005284 excitation Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 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
- 230000002123 temporal effect 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/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
-
- 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
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/5061—Partitioning or combining of resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种任务处理方法、装置、电子设备和存储介质,预先在分布式集群中存储当前任务系统的最大ID序列号;当某节点接收到分配任务ID的请求时,首先,对该节点本地第一ID序列段进行检测,若检测到本地不存在第一ID序列段或第一ID序列段已经用完,则从分布式集群中获取最大ID序列号;其次,根据获取的最大ID序列号生成第二ID序列段,并根据第二ID序列段对分布式集群中的最大ID序列号进行更新;最后,根据第二ID序列段进行任务ID的分配。一方面,通过利用分布式集群存储并维护任务系统的最大ID序列号,并将任务ID的生成逻辑从数据库中解耦出来,可以解决单节点稳定性问题。另一方面,通过批量的第二ID序列段可以保证系统的可用性、高并发性。
Description
技术领域
本公开涉及数据处理技术领域,特别是涉及一种任务处理方法、装置、电子设备和存储介质。
背景技术
在竞争日益激烈的移动互联网领域,任务系统是一款用户级别产品中常见系统,任务系统主要用于与用户的交互。借助任务体系的搭建,挖掘用户激励的运营手段,利用激励机制的杠杆作用来引导用户行为,在有效提升留存率与活跃度的同时,使得用户忠诚度和用户粘性等方面也获得积极的反响,进而促使产品提高营收。在视频直播高并发(HighConcurrency,通常是指通过设计保证系统能够同时并行处理很多请求)的业务场景下,为了使观众在粉丝团业务中完成的每日任务能够丝毫无差的转成对应的奖励,从而保障用户在粉丝团业务中的权益,首先要求粉丝团任务系统具有水平扩展能力,满足高并发的业务需求;其次粉丝团任务系统具有幂等性,即对同一个观众的多次相同的任务的重复提交,积分系统须保证有且仅有一次有效。
在相关技术中,一方面,可以使用UUID(Universally Unique Identifier,全局唯一标识符)作为任务唯一ID达到幂等效果,该技术虽实现简单,但占用空间大且查询效率低,对于高并发大数据的任务系统不太适用。另一方面,如图1a所示,为相关技术中任务系统为积分系统的架构示意图。图1a中的架构沿用单实例存储的任务系统的思路,任务ID仍依赖于数据库自动生成,但将ID生成的数据库与任务存储系统的数据库分离,积分系统所有节点的任务ID依赖于独立的单实例数据库(单实例数据库是指一个单进程架构的数据库)生成。该方案由于依赖单实例数据库,单一节点服务能力可靠性不够高,因此存在单节点稳定性问题;且由于单实例生成任务ID,随着积分系统接入的业务增长超过了ID生成数据库负载。因此,该方案也不适用于高并发大数据的任务系统。
发明内容
基于此,有必要本公开提供一种任务处理方法、装置、电子设备和存储介质,以至少解决相关技术不适用于高并发的任务系统的技术问题。
根据本公开实施例的第一方面,提供一种任务处理方法,包括:
预先在分布式集群中存储当前任务系统的最大ID序列号;
当接收到分配任务ID的请求时,检测本地是否存在第一ID序列段,或者在检测本地存在第一ID序列段时,检测第一ID序列段是否已经用完;
若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,则从分布式集群中获取当前任务系统的最大ID序列号;
根据获取的当前任务系统的最大ID序列号生成第二ID序列段,并根据第二ID序列段对分布式集群中的最大ID序列号进行更新;
根据第二ID序列段进行任务ID的分配。
根据本公开实施例的第二方面,提供一种任务处理装置,所述装置包括:
存储模块,被配置为执行预先在分布式集群中存储当前任务系统的最大ID序列号;
检测模块,被配置为执行当接收到分配任务ID的请求时,检测本地是否存在第一ID序列段进行检测,或者在检测本地存在第一ID序列段时,检测第一ID序列段是否已经用完;
获取模块,被配置为执行若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,则从分布式集群中获取当前任务系统的最大ID序列号;
ID生成模块,被配置为执行根据获取的当前任务系统的最大ID序列号生成第二ID序列段,并根据第二ID序列段对分布式集群中的最大ID序列号进行更新;
分配模块,被配置为执行根据第二ID序列段进行任务ID的分配。
根据本公开实施例的第三方面,一种电子设备,包括:
处理器;
被配置为执行存储处理器可执行指令的存储器;
其中,处理器被配置为执行指令,以实现上述第一方面中所述的任务处理方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中所述的任务处理方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由电子设备的处理器执行时,使得能够实现实现上述第一方面中所述的任务处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
预先在分布式集群中存储当前任务系统的最大ID序列号;当某节点接收到分配任务ID的请求时,首先,检测该节点本地是否存在第一ID序列段,或者在检测存在第一ID序列段时,检测第一ID序列段是否已经用完;若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,则从分布式集群中获取当前任务系统的最大ID序列号;其次,根据获取的当前任务系统的最大ID序列号生成第二ID序列段,并根据第二ID序列段对分布式集群中的最大ID序列号进行更新;最后,根据第二ID序列段进行任务ID的分配。一方面,本公开实施例的任务处理方法中,通过利用分布式集群存储并维护任务系统的最大ID序列号,并将任务ID的生成逻辑从数据库中解耦出来,可以改进相关技术中对单实例数据库的依赖,从而解决了相关技术存在的单节点稳定性问题。另一方面,根据当前任务系统的最大ID序列号采用批量ID段的方式生成第二ID序列段,保证任务系统的可用性、高并发性,减少对分布式集群的访问,从而不仅可以缓解集群压力,还可以提高分配任务ID的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1a是相关技术中积分系统的架构示意图;
图1b是一个实施例中任务处理方法的应用环境图;
图1c是根据一示例性实施例示出的一种任务处理方法的流程图;
图2是根据一示例性实施例示出的一种任务处理方法的流程图;
图3是根据一示例性实施例示出的一种任务处理方法的流程图;
图4是根据一示例性实施例示出的一种任务处理方法的流程图;
图5a是根据一示例性实施例示出的一种任务处理方法的交互流程图;
图5b是一示例性实施例示出的积分系统的架构示意图;
图6是根据一示例性实施例示出的一种任务处理装置的框图;
图7是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1b为一个实施例中任务处理方法的应用环境图。参照图1b,本公开的任务处理方法可以应用于这样的系统,该系统包括客户端100和服务端200,客户端100与服务端200网络连接。其中,客户端100是指发起分配任务ID的请求的调用方。服务端200是指接收分配任务ID的请求的被调用方。其中,客户端100可以是电子设备中的应用软件,包括但不限于APP、浏览器、小程序等。其中电子设备具体可以为手机、平板电脑、笔记本电脑、台式电脑等中的至少一种。服务器200可以用独立的服务器或者是多个服务器组成的服务器集群来实现。对于客户端100和服务器200的表现形式,可以根据实际情况选择。如图1a所示,结合到视频直播中的粉丝团业务中,客户端100可以包括送礼模块、观看模块、分享模块和查询模块。服务端200可以包括任务系统和数据库,其中,任务系统对应当前正在处理的任务类型,例如,当前正在处理对用户的奖励任务,那么任务系统则对应奖励系统,奖励可以是积分。
基于背景技术中阐述的问题,本公开实施例的任务处理方法的思想包括:服务端200预先在分布式集群中存储当前任务系统的最大ID序列号;当服务端200的某个节点接收到分配任务ID的请求时,检测该节点本地是否存在第一ID序列段,或者在检测本地存在第一ID序列段时,检测第一ID序列段是否已经用完;若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,则从分布式集群中获取当前任务系统的最大ID序列号;根据获取的当前任务系统的最大ID序列号生成第二ID序列段,并根据第二ID序列段对分布式集群中的最大ID序列号进行更新;根据第二ID序列段进行任务ID的分配。一方面,本公开实施例的任务处理方法中,通过利用分布式集群存储并维护任务系统的最大ID序列号,并将任务ID的生成逻辑从数据库中解耦出来,可以改进相关技术中对单实例数据库的依赖,从而解决了相关技术存在的单节点稳定性问题。另一方面,根据当前任务系统的最大ID序列号采用批量ID段的方式生成第二ID序列段,保证系统的可用性、高并发性,在提高系统可用性的同时,也提高了分配任务ID的效率。
图1c是根据一示例性实施例示出的一种任务处理方法的流程图,该任务处理方法可以适用于上述应用环境中的服务端中,如图1c所示,该包括以下步骤:
在步骤S110中,预先在分布式集群中存储当前任务系统的最大ID序列号。
其中,当前任务系统可以是指与任务请求类型对应的系统,例如,任务请求是在用户完成该任务时,给予用户一定积分,那么当前任务系统则相应的为当前积分系统。具体地,为了保证数据的幂等性,要保证生成的新ID序列段是有序的,因此本公开实施例中通过分布式集群预先存储当前任务系统的最大ID序列号。其中,ID序列段包括一系列的批量的ID号段。示例性地,可以通过分布式协调服务集群或者Redis存储当前任务系统的最大ID序列号。
在步骤S120中,当接收到分配任务ID的请求时,检测本地是否存在第一ID序列段,或者在检测本地存在第一ID序列段时,检测第一ID序列段是否已经用完。
其中,任务是指互联网产品或者其他产品用于引导或者激励用户使用该产品所设置的工作任务。当用户完成该任务时,给予用户一定奖励(比如积分)。结合到视频直播中的粉丝团业务中,任务可以是粉丝为某直播间发出的点赞、观看和送礼等行为,粉丝发出这些行为时给予粉丝的奖励可以是增加粉丝与主播之间的亲密值,即将粉丝发出的这些行为转换为粉丝与主播之间的亲密值。任务ID是指为了保证数据幂等性在用户执行某项任务时,为用户发起的任务所设置的唯一标识。
具体地,当用户通过客户端触发创建任务的按钮时,需要为该任务分配唯一的任务ID。将分配任务ID的请求发送至服务端,服务端的某个节点接收到分配任务ID的请求。当该节点接收到分配任务ID的请求时,对该节点本地是否存在第一ID序列段进行检测,并对该节点本地事先预存的第一ID序列段是否用完进行检测。
在步骤S130中,若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,则从分布式集群中获取当前任务系统的最大ID序列号。
具体地,当某个节点接收到分配任务ID的请求时,对第一ID序列段进行检测,若检测到该节点本地不存在第一ID序列段或者该节点事先预存的第一ID序列段已经用完,需要生成新的ID序列段以分配任务ID。为了保证数据的幂等性,要保证生成的新ID序列段是有序的,因此可以通过从分布式集群中获取预先存储的当前任务系统的最大ID序列号,并基于该最大ID序列号生成新的ID序列段。进一步地,若检测到该节点本地存在第一ID序列段且第一ID序列段没有用完,则根据该节点本地存储的第一ID序列段进行任务ID的分配。
在步骤S140中,根据获取的当前任务系统的最大ID序列号生成第二ID序列段,并根据第二ID序列段对分布式集群中的最大ID序列号进行更新。
具体地,若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,说明该节点需要生成新的ID序列段,则根据从分布式集群中获取的当前任务系统的最大ID序列号生成新的第二ID序列段。为了保证幂等性,需要结合新的第二ID序列段对分布式集群中的最大ID序列号进行维护,即更新分布式集群中存储的最大ID序列号,使得后续生成的ID序列段与之前生成的ID序列段是不同,保证任务ID的唯一性。
在步骤S150中,根据第二ID序列段进行任务ID的分配。
具体地,第二ID序列段包括一系列批量ID段。当用户触发创建任务的按钮时,某节点会接收到分配任务ID的请求。若该节点本地不存在第一ID序列段或者第一ID序列段已经用完,在根据从分布式集群中存储的当前任务系统的最大ID序列号生成新的第二ID序列段之后,可以根据新的第二ID序列段进行任务ID的分配。比如,按照顺序从第二ID序列段中获取一个ID号,并将该ID号用作任务ID。
基于上述实施例说明,通过预先在分布式集群中存储当前任务系统的最大ID序列号,当某节点接收到分配任务ID的请求时,首先,检测该节点本地是否存在第一ID序列段,或者在检测本地存在第一ID序列段时,检测第一ID序列段是否已经用完;若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,则从分布式集群中获取当前任务系统的最大ID序列号;其次,根据获取的当前任务系统的最大ID序列号生成第二ID序列段,并根据第二ID序列段对分布式集群中的最大ID序列号进行更新;最后,根据第二ID序列段进行任务ID的分配。一方面,本公开实施例的任务处理方法中,通过利用分布式集群存储并维护任务系统的最大ID序列号,并将任务ID的生成逻辑从数据库中解耦出来,可以改进相关技术中对单实例数据库的依赖,从而解决了相关技术中存在的单节点稳定性问题。另一方面,根据当前任务系统的最大ID序列号采用批量ID段的方式生成第二ID序列段,减少对分布式集群的访问,不仅可以缓解集群压力,还可以提高分配任务ID的效率。
在一示例性实施例中,当前任务系统的最大ID序列号预先保存在分布式协调服务集群中。其中,分布式协调服务集群可以采用Zookeeper集群,Zookeeper集群是一个分布式的、开放源码的分布式应用程序协调服务,并且是Hadoop和Hbase的重要组件。它可以为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
图2是根据一示例性实施例示出的一种任务处理方法的流程图。若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,则从分布式集群中获取当前任务系统的最大ID序列号,包括:
在步骤S210中,若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,从分布式协调服务集群中获取当前任务系统的最大ID序列号;
根据第二ID序列段对分布式集群中的最大ID序列号进行更新,包括:
在步骤S220中,根据第二ID序列段中的最大ID序列号对分布式协调服务集群中的最大ID序列号进行更新。
具体地,当用户通过客户端触发创建任务的按钮时,需要为该任务分配唯一的任务ID。首先,将分配任务ID的请求发送至服务端,服务端的某个节点接收到分配任务ID的请求。当该节点接收到分配任务ID的请求时,对该节点本地是否存在第一ID序列段进行检测,或者对该节点本地事先预存的第一ID序列段是否用完进行检测。若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,需要生成新的ID序列段。由于本实施中将任务ID生成从数据库中解耦出来,并通过分布式协调服务集群对最大ID序列号进行维护以确保幂等性,因此,若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,首先,获取预先存储在分布式协调服务集群中的当前任务系统的最大ID序列号;接着,由于新生成的第二ID序列段包括一系列批量的ID序列号,需要根据第二ID序列段中的最大ID序列号对分布式协调服务集群中的最大ID序列号进行更新,那么在第二ID序列段被用完时,根据更新后的最大ID序列号生成新的ID序列段与第二ID序列段是不同的,从而保证幂等性。
基于上述实施例说明,通过利用分布式协调服务集群容错性、一致性、可靠性等优点,使用分布式协调服务集群存储并维护当前任务系统中的最大ID序列号,可以确保任务ID生成的稳定性、可靠性。同时抽象解耦出独立的任务ID生成模块,该任务ID生成模块内部采用批量生成ID段的方式,减少对分布式协调服务集群的访问,既能缓解分布式协调服务集群压力,也能提高分配任务ID的效率。
图3是根据一示例性实施例示出的一种任务处理方法的流程图。该方法还包括以下步骤:
在步骤S310中,当接收到分配任务ID的请求时,检测本地是否存在第一ID序列段,或者在检测本地存在第一ID序列段时,检测第一ID序列段是否已经用完;
在步骤S320中,若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,则获取分布式协调服务集群的分布式锁;
在步骤S330中,根据从分布式协调服务集群中获取预先存储的当前任务系统的最大ID序列号生成第二ID序列段,并根据第二ID序列段中的最大ID序列号对分布式协调服务集群中的最大ID序列号进行更新;
在步骤S340中,释放分布式协调服务集群的分布式锁。
其中,分布式锁是指为了防止分布式系统中的多个进程之间相互干扰,在这些进程之间进行协调的技术。在分布式系统环境下,一个方法在同一时间只能被一个机器的一个进程执行。可以利用Zookeeper的顺序临时节点来实现分布式锁和等待队列。可以理解的是,有获取锁就得有释放锁。当得到锁的线程执行完任务,需要释放锁,以便其他进程可以执行。本实施例中,为了保证任务ID序列号的严格递增,可以利用分布式协调服务集群的分布式锁来保证同一时间内只能有一个进程在生成任务ID,避免多个进程同时访问分布式协调服务集群,确保数据的一致性。
具体地,当用户通过客户端触发创建任务的按钮时,将分配任务ID的请求发送至服务端,服务端的某个节点接收到分配任务ID的请求。当该节点接收到分配任务ID的请求时,对该节点本地是否存在第一ID序列段进行检测,或者对该节点本地事先预存的第一ID序列段是否用完进行检测。若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,需要生成新的ID序列段。为了保证同一时间内只能有一个进程在生成任务ID,在从分布式协调服务集群中获取预先存储的当前任务系统的最大ID序列号之前,获取分布式协调服务集群的分布式锁以防止其他进程生成任务ID。加上分布式锁后,首先,从分布式协调服务集群中获取预先存储的当前任务系统的最大ID序列号;其次,根据获取的当前任务系统的最大ID序列号生成第二ID序列段;并根据第二ID序列段中的最大ID序列号对Zookeeper集群中的最大ID序列号进行更新,至此,得到分布式锁的线程已经完成任务ID的生成以及最大ID序列号的更新。可以释放分布式协调服务集群的分布式锁,以便其他进程开始执行其他任务ID的生成。
在一示例性实施例中,该方法还包括:当接收分配任务ID的请求的节点出现故障时,根据分布式协调服务集群中保存的最大ID序列号生成第三ID序列段,丢弃第二ID序列段中剩余的ID序列号。
具体地,当用户通过客户端触发创建任务的按钮时,将分配任务ID的请求发送至服务端,服务端的某个节点接收到分配任务ID的请求。当接收分配任务ID的请求的节点出现故障时,该节点上事先预存或者生成的ID序列段并没有用完,也会丢弃该ID序列段中剩余的ID序列号。同时,从分布式协调服务集群中获取其上保存的最大ID序列号以生成新的第三ID序列段,如此,不仅可以降低系统的维护成本,还可以提升系统的稳定性。
图4是根据一示例性实施例示出的一种任务处理方法的流程图,如图4所示,包括以下步骤:
在步骤402中,预先在Zookeeper集群中存储当前任务系统的最大ID序列号。
在步骤404中,当接收到分配任务ID的请求时,检测本地是否存在第一ID序列段,或者在检测本地存在第一ID序列段时,检测第一ID序列段是否已经用完。
其中,分配任务ID的请求包括用户ID。用户ID用于唯一的标识用户身份。
在步骤406中,若检测到本地存在第一ID序列段且第一ID序列段没有用完,则根据本地的第一ID序列段进行任务ID的分配。
在步骤408中,若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,获取Zookeeper集群的分布式锁。
在步骤410中,从Zookeeper集群中获取预先存储的当前任务系统的最大ID序列号。
在步骤412中,根据获取的当前任务系统的最大ID序列号生成第二ID序列段,并根据第二ID序列段中的最大ID序列号对Zookeeper集群中的最大ID序列号进行更新。
在步骤414中,释放Zookeeper集群的分布式锁。
在步骤416中,根据第二ID序列段进行任务ID的分配。
在步骤418中,根据分配的任务ID生成任务对应的积分。
具体地,为了保证用户完成的任务可以准确的转成对应的积分,根据分配的任务ID生成任务所对应的积分。
在步骤420中,根据任务ID和用户ID对生成的积分进行分表,以分表、分库分表形式将生成的积分存储在关系型数据库中。
具体地,为了方便用户对积分的查询,需要将生成的积分进行存储,因此,根据分配的任务ID和该用户的用户ID将生成的积分进行分表,以分表、分库分表形式将任务所对应的积分存入关系型数据库中。如此,不仅可以减小数据库的负担,还可以缩短查询时间。
在步骤422中,将分配的任务ID用作关系型数据库的唯一键。
具体地,唯一键(Unique Key)用于保证字段数据的唯一性。将分配的任务ID用作关系型数据库的唯一键可以保证积分系统的幂等性。
图5a是根据一示例性实施例示出的一种任务处理方法的流程图,该任务处理方法可以适用于图5b所示的架构中。以直播视频的粉丝团业务为例进行说明,任务系统对应为积分系统。本实施例任务处理方法中,积分系统拆分为任务积分模块和ID生成模块,将ID生成模块解耦出来,且ID生成模块基于分布式协调服务Zookeeper集群管理当前积分系统的最大ID序列号以解决相关技术中存在的单点问题,并保证ID生成的稳定性、可靠性、一致性。同时,通过ID生成模块生成的本地IdSeg段保证系统的可用性、高并发性。任务积分模块利用ID生成模块生成的任务ID结合数据库唯一健来保证积分系统的幂等性。整体架构通过模块分层解耦、数据拆分解耦来保证积分系统各个模块均具备水平扩展性。如图5a所示,该方法包括以下步骤:
在步骤501中,预先在Zookeeper集群中存储当前积分系统的最大ID序列号(记为max_id)。
在步骤S502中,观众通过客户端触发创建任务。
在步骤S503中,通过任务积分模块向ID生成模块发送获取任务ID的请求。
在步骤S504中,ID生成模块接收到获取任务ID的请求,并对本地的第一ID序列段进行检测。
具体地,检测本地是否存在第一ID序列段,或者检测本地的第一ID序列段是否已经用完。
在步骤S505中,若检测到本地不存在第一ID序列段,则从Zookeeper集群中获取当前积分系统的最大ID序列号(记为max_id)。
在步骤S506中,若检测到本地的第一ID序列段已经用完,则从Zookeeper集群中获取当前积分系统的最大ID序列号(记为max_id)。
在步骤S507中,根据获取的当前积分系统的最大ID序列号生成第二ID序列段。
在步骤S508中,根据第二ID序列段中的最大ID序列号对Zookeeper集群中的最大ID序列号进行更新。
在步骤S509中,根据第二ID序列段进行任务ID的分配。
在步骤S510中,若检测到本地存在第一ID序列段且第一ID序列段没有用完,根据本地的第一ID序列段进行任务ID的分配。
在步骤S511中,ID生成模块将分配的任务ID返回至任务积分模块。
在步骤S512中,任务积分模块根据分配的任务ID生成任务对应的积分。
在步骤S513,任务积分模块根据任务ID和用户ID对生成的积分进行分表,以分表、分库分表形式将生成的积分存储在关系型数据库中,并将分配的任务ID用作关系型数据库的唯一键。
在步骤S514中,任务积分模块返回创建任务状态。
图6是根据一示例性实施例示出的一种任务处理装置的框图。参照图6,该装置包括存储模块610、检测模块620、获取模块630、ID生成模块640和分配模块650。
存储模块610,被配置为执行预先在分布式集群中存储当前任务系统的最大ID序列号;
检测模块620,被配置为执行当接收到分配任务ID的请求时,检测本地是否存在第一ID序列段,或者在检测本地存在第一ID序列段时,检测第一ID序列端是否已经用完;
获取模块630,被配置为执行若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,则从分布式集群中获取当前任务系统的最大ID序列号;
ID生成模块640,被配置为执行根据获取的当前任务系统的最大ID序列号生成第二ID序列段,并根据第二ID序列段对分布式集群中的最大ID序列号进行更新;
分配模块650,被配置为执行根据第二ID序列段进行任务ID的分配。
在一示例性实施例中,当前任务系统的最大ID序列号预先保存在分布式协调服务集群中;获取模块630,还被配置为执行若检测到本地不存在第一ID序列段或者第一ID序列段已经用完,则从分布式协调服务集群中获取当前任务系统的最大ID序列号;
ID生成模块640,还被配置为执行根据第二ID序列段中的最大ID序列号对分布式协调服务集群中的最大ID序列号进行更新。
在一示例性实施例中,该装置还包括:
分布式锁获取模块,被配置为执行获取分布式协调服务集群的分布式锁;
分布式锁释放模块,被配置为执行释放分布式协调服务集群的分布式锁。
在一示例性实施例中,装置还包括:
丢弃模块,被配置为执行当接收分配任务ID的请求的节点出现故障时,根据分布式协调服务集群中保存的最大ID序列号生成第三ID序列段,丢弃第二ID序列段中剩余的ID序列号。
在一示例性实施例中,分配模块650,还被配置为执行若检测到本地存在第一ID序列段且第一ID序列段没有用完,则根据本地的第一ID序列段进行任务ID的分配。
在一示例性实施例中,分配任务ID的请求包括用户ID;该装置还包括:
积分生成模块,被配置为执行根据分配的任务ID生成任务对应的积分;
积分存储模块,被配置为执行根据任务ID和用户ID对生成的积分进行分表,以分表、分库分表形式将生成的积分存储在关系型数据库中。
在一示例性实施例中,该装置还包括:
唯一键确定模块,被配置为执行将分配的任务ID用作关系型数据库的唯一键。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的一种电子设备的框图。电子设备包括:处理器;被配置为执行存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现上述负载均衡的实现方法。如图7所示,该电子设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,处理器用于提供计算和控制能力;存储器包括非易失性存储介质、内存储器,该非易失性存储介质存储有操作系统和计算机程序,该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境;网络接口用于与外部的设备通过网络连接通信;该计算机程序被处理器执行时以实现负载均衡的实现方法;显示屏可以是液晶显示屏或者电子墨水显示屏;输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器,上述指令可由电子设备的处理器执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种任务处理方法,其特征在于,所述方法包括:
预先在分布式集群中存储当前任务系统的最大ID序列号;
当接收到分配任务ID的请求时,检测本地是否存在第一ID序列段,或者在检测本地存在所述第一ID序列段时,检测所述第一ID序列段是否已经用完;
若检测到本地不存在所述第一ID序列段或者所述第一ID序列段已经用完,则从所述分布式集群中获取所述当前任务系统的最大ID序列号;
根据获取的所述当前任务系统的最大ID序列号生成第二ID序列段,并根据所述第二ID序列段对所述分布式集群中的最大ID序列号进行更新;
根据所述第二ID序列段进行所述任务ID的分配。
2.根据权利要求1所述的方法,其特征在于,所述当前任务系统的最大ID序列号预先保存在分布式协调服务集群中;
若检测到本地不存在所述第一ID序列段或者所述第一ID序列段已经用完,则从所述分布式协调服务集群中获取所述当前任务系统的最大ID序列号;
所述根据所述第二ID序列段对所述分布式集群中的最大ID序列号进行更新,包括:
根据所述第二ID序列段中的最大ID序列号对所述分布式协调服务集群中的最大ID序列号进行更新。
3.根据权利要求2所述的方法,其特征在于,在从所述分布式协调服务集群中获取所述当前任务系统的所述最大ID序列号之前,所述方法还包括:
获取所述分布式协调服务集群的分布式锁;
在所述根据所述第二ID序列段中的最大ID序列号对所述分布式协调服务集群中的最大ID序列号进行更新之后,还包括:
释放所述分布式协调服务集群的分布式锁。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当接收所述分配任务ID的请求的节点出现故障时,根据所述分布式协调服务集群中保存的最大ID序列号生成第三ID序列段,丢弃所述第二ID序列段中剩余的ID序列号。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
若检测到本地存在所述第一ID序列段且所述第一ID序列段没有用完,则根据本地的所述第一ID序列段进行所述任务ID的分配。
6.根据权利要求5所述的方法,其特征在于,所述分配任务ID的请求包括用户ID;所述根据所述第二ID序列段进行所述任务ID的分配之后,还包括:
根据分配的所述任务ID生成任务对应的积分;
根据所述任务ID和所述用户ID对生成的所述积分进行分表,并以分表、分库分表形式将生成的所述积分存储在关系型数据库中。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将分配的所述任务ID用作所述关系型数据库的唯一键。
8.一种任务处理装置,其特征在于,所述装置包括:
存储模块,被配置为执行预先在分布式集群中存储当前任务系统的最大ID序列号;
检测模块,被配置为执行当接收到分配任务ID的请求时,检测本地是否存在第一ID序列段,或者在检测本地存在所述第一ID序列段时,检测所述第一ID序列段是否已经用完;
获取模块,被配置为执行若检测到本地不存在所述第一ID序列段或者所述第一ID序列段已经用完,则从所述分布式集群中获取所述当前任务系统的最大ID序列号;
ID生成模块,被配置为执行根据获取的所述当前任务系统的最大ID序列号生成第二ID序列段,并根据所述第二ID序列段对所述分布式集群中的最大ID序列号进行更新;
分配模块,被配置为执行根据所述第二ID序列段进行所述任务ID的分配。
9.一种电子设备,其特征在于,包括:
处理器;
被配置为执行存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911243894.6A CN111124635A (zh) | 2019-12-06 | 2019-12-06 | 任务处理方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911243894.6A CN111124635A (zh) | 2019-12-06 | 2019-12-06 | 任务处理方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111124635A true CN111124635A (zh) | 2020-05-08 |
Family
ID=70497708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911243894.6A Pending CN111124635A (zh) | 2019-12-06 | 2019-12-06 | 任务处理方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124635A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831757A (zh) * | 2020-06-09 | 2020-10-27 | 时时同云科技(成都)有限责任公司 | 分布式全局唯一标识信息的生成和管理方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101341466A (zh) * | 2005-12-19 | 2009-01-07 | 国际商业机器公司 | 分布式系统中事务的提交 |
CN107045445A (zh) * | 2017-04-18 | 2017-08-15 | 北京思特奇信息技术股份有限公司 | 一种基于java链表生成分布式序列号的轻量级方法及系统 |
US9817703B1 (en) * | 2013-12-04 | 2017-11-14 | Amazon Technologies, Inc. | Distributed lock management using conditional updates to a distributed key value data store |
CN108509433A (zh) * | 2017-02-23 | 2018-09-07 | 北京京东金融科技控股有限公司 | 基于分布式系统的生成序列号的方法、装置及电子设备 |
CN108647308A (zh) * | 2018-05-09 | 2018-10-12 | 曙光信息产业(北京)有限公司 | 分布式系统的序列号生成方法及装置 |
CN109933574A (zh) * | 2019-02-27 | 2019-06-25 | 常州猛犸电动科技有限公司 | 一种唯一键生成方法、装置及终端设备 |
CN110377410A (zh) * | 2019-07-16 | 2019-10-25 | 中信百信银行股份有限公司 | 任务调度方法、系统、电子设备及计算机可读存储介质 |
CN110515956A (zh) * | 2019-09-02 | 2019-11-29 | 中国工商银行股份有限公司 | 序列号获取方法、装置、系统、电子设备及存储介质 |
-
2019
- 2019-12-06 CN CN201911243894.6A patent/CN111124635A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101341466A (zh) * | 2005-12-19 | 2009-01-07 | 国际商业机器公司 | 分布式系统中事务的提交 |
US9817703B1 (en) * | 2013-12-04 | 2017-11-14 | Amazon Technologies, Inc. | Distributed lock management using conditional updates to a distributed key value data store |
CN108509433A (zh) * | 2017-02-23 | 2018-09-07 | 北京京东金融科技控股有限公司 | 基于分布式系统的生成序列号的方法、装置及电子设备 |
CN107045445A (zh) * | 2017-04-18 | 2017-08-15 | 北京思特奇信息技术股份有限公司 | 一种基于java链表生成分布式序列号的轻量级方法及系统 |
CN108647308A (zh) * | 2018-05-09 | 2018-10-12 | 曙光信息产业(北京)有限公司 | 分布式系统的序列号生成方法及装置 |
CN109933574A (zh) * | 2019-02-27 | 2019-06-25 | 常州猛犸电动科技有限公司 | 一种唯一键生成方法、装置及终端设备 |
CN110377410A (zh) * | 2019-07-16 | 2019-10-25 | 中信百信银行股份有限公司 | 任务调度方法、系统、电子设备及计算机可读存储介质 |
CN110515956A (zh) * | 2019-09-02 | 2019-11-29 | 中国工商银行股份有限公司 | 序列号获取方法、装置、系统、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
RYOSUKE MITA: "Early warning of task failure using task processing logs", AH \'17: PROCEEDINGS OF THE 8TH AUGMENTED HUMAN INTERNATIONAL CONFERENCE, 16 March 2017 (2017-03-16), pages 1 * |
马雪芬等: "分布式资源环境下基于云服务的设计知识服务资源平台", 科技导报, vol. 37, no. 22, 28 November 2019 (2019-11-28), pages 126 - 132 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831757A (zh) * | 2020-06-09 | 2020-10-27 | 时时同云科技(成都)有限责任公司 | 分布式全局唯一标识信息的生成和管理方法及装置 |
CN111831757B (zh) * | 2020-06-09 | 2023-05-12 | 时时同云科技(成都)有限责任公司 | 分布式全局唯一标识信息的生成和管理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102255138B1 (ko) | 메시지 처리 방법과 장치, 저장 매체, 및 컴퓨터 장치 | |
US7937442B2 (en) | Multipoint control unit (MCU) failure detection and rollover | |
US8156497B2 (en) | Providing shared tasks amongst a plurality of individuals | |
US8412810B1 (en) | Provisioning and managing a cluster deployed on a cloud | |
US20080077665A1 (en) | High availability conferencing | |
US20160101360A1 (en) | Game Accessing Method and Processing Method, Server, Terminal, and System | |
CN109388626B (zh) | 用于向业务分配编号的方法和装置 | |
CN110442610A (zh) | 负载均衡的方法、装置、计算设备以及介质 | |
CN106712981A (zh) | 一种节点变更通知方法及装置 | |
CN112632919B (zh) | 一种文档编辑方法、装置、计算机设备和存储介质 | |
JP2022021294A (ja) | 生放送室でのユーザコミュニケーションのための方法および装置、電子機器、記憶媒体並びにコンピュータプログラム | |
CN107203429A (zh) | 一种基于分布式锁加载分布式任务的方法以及装置 | |
CN109167819A (zh) | 数据同步系统、方法、装置及存储介质 | |
CN108958933B (zh) | 任务执行器的配置参数更新方法、装置及设备 | |
CN111124635A (zh) | 任务处理方法、装置、电子设备和存储介质 | |
CN110868435B (zh) | 一种裸金属服务器调度方法、装置及存储介质 | |
CN108764866B (zh) | 用于分配资源、领取资源的方法和设备 | |
CN111770176B (zh) | 流量调度方法及装置 | |
CN112169312A (zh) | 云游戏服务的排队调度方法、装置、设备和存储介质 | |
CN106941509B (zh) | 用户信息流的请求方法及装置 | |
JP2014203461A (ja) | デスクトップ共有システム及びその方法 | |
CN110401709A (zh) | 一种即时通讯应用中会话的处理方法、装置和存储介质 | |
US9432420B2 (en) | Communication system, non-transitory computer-readable medium storing communication program and communication device | |
CN107203915B (zh) | 数据存储方法及装置 | |
CN111352944B (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 |