任务执行方法、装置、电子设备及计算机可读存储介质与流程

文档序号:16627566发布日期:2019-01-16 06:15阅读:124来源:国知局
任务执行方法、装置、电子设备及计算机可读存储介质与流程

本公开涉及计算机技术领域,具体涉及一种任务执行方法、装置、电子设备及计算机可读存储介质。



背景技术:

随着以amazonec2为代表的公共数据中心云平台的出现,越来越多的企业将业务由本地数据中心迁移到云平台之上。为了支持大量用户共享硬件(如cpu、存储、带宽等)资源,云平台运营商通常采用多租户技术将物理硬件资源抽象为虚拟资源。每个租户能够按照自身业务需求,租用不同规模的虚拟资源,并根据资源使用量向运营商付费。因此,多租户云平台具有两大优势:一是,可以服务于大量的租户,提高物理资源的利用率,从而提高运营商收益;二是,允许租户根据业务需求灵活伸缩虚拟资源的使用规模,最大程度地避免资源浪费。



技术实现要素:

本公开实施例提供一种任务执行方法、装置、电子设备及计算机可读存储介质。

第一方面,本公开实施例中提供了一种任务执行方法。

具体的,所述任务执行方法,包括:

响应于任务调度事件,生成租户关联信息;其中,所述租户关联信息至少包括用户、租户和业务的对应关系;

根据待执行业务以及所述租户关联信息获取所述待执行业务相关的数据主键列表;

根据所述数据主键列表以及所述租户关联信息执行与所述待执行业务具有第一预设对应关系的任务。

进一步地,所述生成租户关联信息,包括:

获取租户标识列表;

确定与所述租户标识列表中的所述租户具有第二预设对应关系的所述业务。

进一步地,所述生成租户关联信息,还包括:

确定当前执行区域下的用户标识列表;

根据用户与租户的从属关系、以及所述第二预设对应关系建立用户、租户和业务之间的一一对应关系。

进一步地,根据待执行业务以及所述租户关联信息获取所述待执行业务相关的数据主键列表,包括:

根据所述待执行业务确定与所述待执行业务具有所述第一预设对应关系的所述任务;

根据所述任务获取所述待执行业务相关的数据主键列表;其中,所述数据主键列表为请求所述待执行业务的用户及其所属租户的操作范围下的数据主键列表。

进一步地,根据所述数据主键列表以及所述租户关联信息执行与所述待执行业务具有第一预设对应关系的任务,包括:

根据所述数据主键列表以及请求所述待执行业务的所述用户确定明细数据;

根据所述租户关联信息以及所述明细数据执行所述任务。

进一步地,所述方法还包括:

生成配置信息;其中,所述配置信息包括以下至少之一:租户与业务的第二预设对应关系、业务与任务的第一预设对应关系和租户的配置参数;

将所述配置信息存储在缓存中。

进一步地,所述租户的配置参数包括以下至少之一:业务参数、业务调度周期和业务执行环境。

进一步地,生成租户关联信息,还包括:

确定具有所述第二预设对应关系的租户和业务对应的业务调度周期和/或业务执行环境;

根据所述业务调度周期和/或业务执行环境确定是否生成具有所述第二预设对应关系的租户和业务对应的所述租户关联信息。

第二方面,本公开实施例提供了一种任务执行装置,包括:

第一生成模块,被配置为响应于任务调度事件,生成租户关联信息;其中,所述租户关联信息至少包括用户、租户和业务的对应关系;

获取模块,被配置为根据待执行业务以及所述租户关联信息获取所述待执行业务相关的数据主键列表;

执行模块,被配置为根据所述数据主键列表以及所述租户关联信息执行与所述待执行业务具有第一预设对应关系的任务。

进一步地,所述第一生成模块,包括:

第一获取子模块,被配置为获取租户标识列表;

第一确定子模块,被配置为确定与所述租户标识列表中的所述租户具有第二预设对应关系的所述业务。

进一步地,所述第一生成模块,还包括:

第二确定子模块,被配置为确定当前执行区域下的用户标识列表;

建立子模块,被配置为根据用户与租户的从属关系、以及所述第二预设对应关系建立用户、租户和业务之间的一一对应关系。

进一步地,所述获取模块,包括:

第三确定子模块,被配置为根据所述待执行业务确定与所述待执行业务具有所述第一预设对应关系的所述任务;

第二获取子模块,被配置为根据所述任务获取所述待执行业务相关的数据主键列表;其中,所述数据主键列表为请求所述待执行业务的用户及其所属租户的操作范围下的数据主键列表。

进一步地,所述执行模块,包括:

第四确定子模块,被配置为根据所述数据主键列表以及请求所述待执行业务的所述用户确定明细数据;

执行子模块,被配置为根据所述租户关联信息以及所述明细数据执行所述任务。

进一步地,所述装置还包括:

第二生成模块,被配置为生成配置信息;其中,所述配置信息包括以下至少之一:租户与业务的第二预设对应关系、业务与任务的第一预设对应关系和租户的配置参数;

存储模块,被配置为将所述配置信息存储在缓存中。

进一步地,所述租户的配置参数包括以下至少之一:业务参数、业务调度周期和业务执行环境。

进一步地,所述第一生成模块,还包括:

第五确定子模块,被配置为确定具有所述第二预设对应关系的租户和业务对应的业务调度周期和/或业务执行环境;

第六确定子模块,被配置为根据所述业务调度周期和/或业务执行环境确定是否生成具有所述第二预设对应关系的租户和业务对应的所述租户关联信息。

所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,任务执行装置的结构中包括存储器和处理器,所述存储器用于存储一条或多条支持任务执行装置执行上述第一方面中任务执行方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述任务执行装置还可以包括通信接口,用于任务执行装置与其他设备或通信网络通信。

第三方面,本公开实施例提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现第一方面所述的方法步骤。

第四方面,本公开实施例提供了一种计算机可读存储介质,用于存储任务执行装置所用的计算机指令,其包含用于执行上述第一方面中任务执行方法所涉及的计算机指令。

本公开实施例提供的技术方案可以包括以下有益效果:

本公开实施例通过在租户与业务之间预先建立对应关系,并在业务与能够实现业务的具体任务之间预先建立对应关系,进而在任务调度过程中,先获得用户、租户和业务之间的对应关系,以便从业务和租户的组合层面对任务划分,之后根据待执行业务以及上述对应关系加载待执行业务相关的数据主键列表,最后再根据数据主键列表和上述对应关系执行与待执行业务具有预设对应关系的任务。本公开实施例的上述方案,利用用户、租户与业务之间的对应关系,在业务层面将不同租户进行了隔离,针对用户请求的待执行业务,基于业务与任务之间的对应关系,调用相应的任务获取相应租户下用户相关的数据主键列表,并执行相应的任务;因此在实现了多租户的任务和数据隔离的同时,又能够使得不同租户所配置对应的不同业务复用同样的任务,能够节省任务资源。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:

图1示出根据本公开一实施方式的任务执行方法的流程图;

图2示出根据图1所示实施方式的步骤s101的流程图;

图3示出根据图1所示实施方式的步骤s101的又一流程图;

图4示出根据图1所示实施方式的步骤s102的流程图;

图5示出根据图1所示实施方式的步骤s103的流程图;

图6示出根据图1所示实施方式的步骤s101的再一流程图;

图7示出根据本公开一实施方式的任务执行装置的结构框图;

图8示出根据图7所示实施方式的第一生成模块701的结构框图;

图9示出根据图7所示实施方式的第一生成模块701的又一结构框图;

图10示出根据图7所示实施方式的获取模块702的结构框图;

图11示出根据图7所示实施方式的执行模块703的结构框图;

图12示出根据图7所示实施方式的第一生成模块701的再一结构框图;

图13是适于用来实现根据本公开一实施方式的任务执行方法的电子设备的结构示意图。

具体实施方式

下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。

在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。

另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。

图1示出根据本公开一实施方式的任务执行方法的流程图。如图1所示,所述任务执行方法包括以下步骤s101-s103:

在步骤s101中,响应于任务调度事件,生成租户关联信息;其中,所述租户关联信息至少包括用户、租户和业务的对应关系;

在步骤s102中,根据待执行业务以及所述租户关联信息获取所述待执行业务相关的数据主键列表;

在步骤s103中,根据所述数据主键列表以及所述租户关联信息执行与所述待执行业务具有第一预设对应关系的任务。

在下文中将对步骤s101、s102和s103分别做进一步的描述。

步骤s101

本实施例中,云系统可以包括任务调度中心及多个服务器。任务调度中心可以定时或者周期性的触发任务调度事件,以实现各租户下的用户的业务请求。而服务器则可以根据任务调度中心发起的任务调度事件执行相应的任务。多个租户可以共享同一服务器提供的同一应用资源,但是不同租户之间的数据资源是隔离的。每个租户下可以有多个用户,多个用户也可以共享同一服务器提供的应用资源,但是用户之间的数据也是隔离的。可以按照用户的物理位置等因素将不同的多个用户划分到同一个有效执行区域(zone),同一个有效执行区域可以包括一个服务器或者多个服务器,也就是说被划分到同一个有效执行区域的多个用户可以由该有效执行区域下的一个或多个服务器提供服务。同一个租户下的多个用户可以被划分到相同的有效执行区域,也可以被划分到不同的有效执行区域,具体根据实际情况设定,在此不做限制。同一有效执行区域可以支持多个不同的租户,而同一租户可以被多个不同的有效执行区域所支持。

已有技术中,任务调度中心发起任务调度事件后,服务器先确定被划分到其所在的有效执行区域的一个或多个用户,再确定该一个或多个用户所请求执行的一个或多个任务(可以通过该一个或多个用户标识与任务标识的对应关系来确定)。之后每个任务对应的任务加载器从数据库捞取请求该任务的用户下的待执行数据的主键列表,最后再根据该主键列表获取数据明细列表,并执行相应的任务。已有技术的这种方式虽然能够隔离不同用户的数据,但是在任务执行时以任务为维度,无法针对不同的业务定制不同的任务,无法做到任务的复用。

考虑到上述缺陷,本公开实施例提出了上述任务执行方法。该任务执行方法中,可以预先配置租户与业务之间的对应关系、业务与任务之间的对应关系。任务执行实体(如服务器)在接收到任务调度事件后,先生成租户关联信息。租户关联信息可以包括但不限于用户、租户和业务之间的对应关系。租户可以是配置有业务的租户,而业务与租户具有预设的对应关系,用户属于某一个租户。因此可以通过当前所支持的所有租户信息确定每个租户所配置的业务,之后再确定租户下的用户。通过这种方式最终可以确定用户、租户和业务之间的对应关系。该对应关系可以是用户、租户和业务之间的一一对应关系,而租户关联信息可以包括多个该对应关系。例如,对应关系可以表示为(uid,business_code,tnt_inst_id),其中,uid为用户标识,business_code为业务代码,tnt_inst_id为租户标识。

在一实施例中,租户可以是云系统所支持的所有租户,也即具有云系统提供的资源的使用权限的租户,而用户则可以是当前有效执行区域下的用户。本公开实施例中可以按照用户维度划分多个有效执行区域,任务执行实体可以操作本有效执行区域中的数据。任务在本有效执行区域触发,并且在本有效执行区域内执行。例如,划分后的有效执行区域a包括n个用户,该n个用户可以属于同一租户或者不同租户,用户所请求的业务都在该有效执行区域a内执行。同一租户下的多个用户都可以请求该租户对应的业务。例如租户a对应配置有业务b,而当前有效执行区域下属于租户a的用户包括用户c和用户d,则响应于任务调度事件,可以确定的租户关联信息包括两个对应关系:(c,b,a)和(d,b,a)。

步骤s102

本实施例中,在确定了租户关联信息后,也即确定了一个或多个用户、租户和业务之间的对应关系后,根据该对应关系以及待执行业务获取相应数据的主键列表。数据主键列表是指与待执行业务相关数据的索引列表,其不包括明细数据。例如,对应某一用户请求的数据为数据库表d中的所有数据,那么对应该请求的数据主键可以是该数据表d的索引。数据主键列表为分配给与待执行业务具有预设对应关系的租户及其下用户的,例如云平台中为租户和用户指定的数据表id列表等。待执行业务为用户所请求且未被执行的业务,该业务为与用户所属租户具有预设的对应关系,也即为租户所配置的业务。需要注意的是用户只能请求其所属租户对应的业务。每个租户对应的业务都可以有多个用户请求。由于同一业务可以配置给多个租户,而多个租户之间的数据是隔离的。因此在获取数据主键列表时,可以根据请求该待执行业务的用户以及租户获取其操作范围内、且与该执行业务相关的数据主键列表。在一实施例中,业务由于与任务对应,因此在获取数据主键列表时,可以调用任务的数据加载器并以租户标识和用户标识为查询条件从数据库中加载与业务相关的数据,任务的数据加载器仅加载执行任务所需的数据。例如对于待执行业务x,根据租户关联信息可知与该待执行业务x对应的租户为租户y,且租户y下有n个用户z对该业务有请求,因此在可以获取与待执行业务x相关、属于租户y和用户z操作范围内的数据主键列表。通过这种方式,可以将不同租户之间的数据进行隔离。

步骤s103

本实施例中,在确定了待执行业务相关的数据主键列表后,可以执行相应的任务来完成待执行业务。业务是应用层面的,在实现层面需要由具体的任务来完成。本公开实施例中,每个业务对应有一个任务,也即每个业务都与一个任务具有预先配置好的第一预设对应关系,通过执行对应的任务就可以实现对应的业务。例如,对于一付款相关业务,与其具有第一预设对应关系的任务用于执行付款的相关操作。每个任务可以有相应的操作流程,在执行任务时,可以根据数据主键列表获取明细数据,并完成相应的操作。需要说明的是,本公开实施例中同一个任务可以由多个业务复用。由于预先对业务和租户的对应关系进行了配置,因此任务调度时,首先根据业务和租户的对应关系、当前执行区域下的用户进行了分组,也即对云系统所支持的租户、为租户所配置的业务及租户下的用户进行了对应关系的组合,每个组合涉及一个用户、租户和业务的一个对应关系,而不同组合涉及不同的对应关系,在确定了上述组合也即上述对应关系后,在实现业务时,先根据上述对应关系获取对应租户和用户的、与所述业务相关的数据主键列表,之后再根据数据主键列表和上述对应关系获取对应租户和用户的、与所述业务相关的明细数据,再执行相应任务;通过这个流程在获取数据主键列表和明细数据时,都仅获取对应租户和用户的数据,而此处的租户和用户是从上述组合中确定的与待执行业务具有对应关系的租户和用户,因此可以实现租户之间数据的隔离,同时还能实现任务的复用(因为不同租户可以与同一业务具有第一预设对应关系,但是在执行业务对应的任务时,不同租户的数据是不同的)。例如,存在业务1和业务2;业务1是在早上9点将相应款项入账,而业务2是在早上8点至10点将相应款项入账,那么这两个业务可以通过配置不同的执行时间共享同一个任务,即将相应款项入账这一任务。

通过本公开实施例,在接收到任务调度事件以后,可以通过确定的租户关联信息以及待执行业务先加载租户对应的待执行业务相关数据的主键列表,进而根据数据主键列表和租户关联信息执行该待执行业务对应的任务,以实现该待执行业务。本公开实施例的上述方案,利用用户、租户与业务之间的对应关系,在业务层面将不同租户进行了隔离,针对用户请求的待执行业务,基于业务与任务之间的对应关系,调用相应的任务获取相应租户下用户相关的数据主键列表,并执行相应的任务;因此在实现了多租户的任务和数据隔离的同时,又能够使得不同租户所配置对应的不同业务复用同样的任务,能够节省任务资源。

在本实施例的一个可选实现方式中,如图2所示,所述步骤s101,即生成租户关联信息的步骤,进一步包括以下步骤s201-s202:

在步骤s201中,获取租户标识列表;

在步骤s202中,确定与所述租户标识列表中的所述租户具有第二预设对应关系的所述业务。

该可选的实现方式中,接收到任务调度事件时,可以先确定云系统当前所支持的租户标识列表,之后再确定与租户标识列表中的一个或多个租户具有第二预设对应关系的业务。本实施例中,每个租户可能都对应有不同的业务,因此可以预先建立租户与业务之间的第二预设对应关系,在任务调度时,可以根据该第二预设对应关系确定租户可能要实现的业务。而在执行业务对应的任务时,可以根据该对应关系确定任务执行所涉及的数据范围,实现不同租户之间的数据隔离。在该可选的实现方式中,可以在租户和业务之间形成多个一一对应关系,如(business_code,tnt_inst_id)。需要说明的是,不同租户也可以共享同一个业务(即业务代码一致,但是执行业务对应的任务时不同租户的数据不同),可见,不同租户也能复用同一个任务,但是在数据层面,在加载数据时,仅加载租户可操作范围下的数据,因此同样能够很好地实现不同租户之间的数据隔离。

在本实施例的一个可选实现方式中,如图3所示,所述步骤s101,即生成租户关联信息的步骤,进一步还包括以下步骤s301-s302:

在步骤s301中,确定当前执行区域下的用户标识列表;

在步骤s302中,根据用户与租户的从属关系、以及所述第二预设对应关系建立用户、租户和业务之间的一一对应关系。

该可选的实现方式中,在生成租户关联信息的时候,还可以确定当前执行区域下的用户标识列表。本公开实施例中,以用户为维度将云系统划分成了不同的执行区域(即不同的zone)。同一租户下的不同用户可以在同一执行区域,也可以在不同执行区域。而不同租户下的不同用户可以在同一执行区域,也可以在不同执行区域。在任务调度时,要求任务执行实体可以操作本zone下的数据,而定时任务也在本zone内触发并在本zone内执行。因此,生成租户关联信息的时候,还可以确定被划分到当前执行区域下的用户标识列表。用户标识列表包括被划分到当前执行区域下的多个用户id。在确定了用户标识列表后,根据用户与租户的从属关系(也即用户所属的租户信息)、以及租户与业务的第二预设对应关系建立用户、租户和业务之间的一一对应关系。通过这种方式,可以将不属于当前执行区域的那些用户所请求的业务排除,因此当前执行区域下的任务执行实体仅执行被划分到当前执行区域的用户请求。

在本实施例的一个可选实现方式中,如图4所示,所述步骤s102,即根据待执行业务以及所述租户关联信息获取所述待执行业务相关的数据主键列表的步骤,进一步还包括以下步骤s401-s402:

在步骤s401中,根据所述待执行业务确定与所述待执行业务具有第一预设对应关系的所述任务;

在步骤s402中,根据所述任务获取所述待执行业务相关的数据主键列表;其中,所述数据主键列表为请求所述待执行业务的用户及其所属租户的操作范围下的数据主键列表。

在该可选的实现方式中,在确定了当前执行区域下用户、租户和业务的对应关系,也即租户关联信息后,可以确定待执行业务相关的数据主键业务列表。待执行业务是已经有用户请求且未处理的业务,而且每个业务可能有多个用户请求,也即多个用户请求执行同一业务,例如多个用户都请求执行付款这一业务。本公开实施例中,可以针对每一个待执行业务,确定与待执行业务具有第一预设对应关系的任务。如上文所述,每个业务都对应有一个任务,用于实现该业务。那么本公开实施例可以预先设定业务与任务之间的第一预设对应关系,一个业务对应一个任务,而不同的业务可以对应同一个任务,也即复用同一任务。不同的租户可以共享同一业务代码,但是不同租户的数据需要隔离。因此在确定了待执行业务对应的任务时,由于任务不同所需要的数据也不同,因此可以根据任务加载数据主键列表(可以根据任务的数据加载器加载执行该任务所需要的数据),并且可以根据该待执行业务对应的租户信息以及用户信息仅加载属于其操作范围的数据主键列表,不同的租户针对同一业务会加载不同的数据主键列表,因此也就实现了数据隔离的功能。例如,云系统中为租户1下的用户a指定了数据表d1,而对租户2下的用户b指定了数据表d2;用户a和用户b请求了同一业务,且该同一业务与租户1和租户2都具有第二预设的对应关系;那么在确定了该业务对应的任务后,可以针对用户a的业务请求,则加载数据表d1的索引列表,而针对用户b的业务请求可以加载数据表d2的索引列表。通过这种方式,在数据记载时能够将租户之间的数据完全隔离开来。

在本实施例的一个可选实现方式中,如图5所示,所述步骤s103,即根据所述数据主键列表以及所述租户关联信息执行与所述待执行业务具有第一预设对应关系的任务的步骤,进一步还包括以下步骤s501-s502:

在步骤s501中,根据所述数据主键列表以及请求所述待执行业务的所述用户确定明细数据;

在步骤s502中,根据所述租户关联信息以及所述明细数据执行所述任务。

在该可选的实现方式中,为租户分配的数据下,不同用户对应不同的数据分表,因此在确定了数据主键列表时,可以根据请求待执行业务的用户id获取数据主键列表对应的明细数据。例如,数据主键列表中对应数据表1的索引,而明细数据可以是数据表1中该用户id对应的部分数据。由于不同业务可以复用同一任务,但是由于不同租户的任务执行参数不尽相同,因此在执行任务时,还可以根据租户关联信息确定与待执行业务对应的租户,并确定该租户对应的配置参数。如上文所述的业务1和业务2,业务1是在早上9点将相应款项入账,而业务2是在早上8点至10点将相应款项入账,那么这两个业务可以通过配置不同参数也即执行时间(早上9点或者早上8点至10点)复用同一个任务,即将相应款项入账这一任务。因此,在执行任务时,还可以根据业务与租户的第二预设对应关系,获取租户的不同配置参数,进而确定该业务对应的业务参数,并根据该业务参数以及明细数据执行该任务,实现待执行业务。租户的配置参数包括租户在执行对应业务时的相关参数。

在本实施例的一个可选实现方式中,所述方法进一步还包括以下步骤:

生成配置信息;其中,所述配置信息包括以下至少之一:租户与业务的第二预设对应关系、业务与任务的第一预设对应关系和租户的配置参数;

将所述配置信息存储在缓存中。

该可选的实现方式中,可以针对任一租户以及为该租户所拥有的业务生成配置信息。配置信息可以建立成数据库表的形式,也可以是xml文件或者配置文件的形式。每组租户和业务的对应关系,都可以生成一项配置信息。在为租户生成新的业务时,可以生成对应的配置信息。租户的配置参数可以包括与该租户具有第二预设对应关系的业务的业务参数、业务调度周期以及业务执行环境中的至少一项。业务参数可以包括与该业务具有第一预设对应关系的任务在执行过程中所需要的执行参数,例如任务的执行时间等。而业务调度周期可以包括该业务的调度时间,通过设置业务调度周期这一配置参数,可以实现不同业务的调度频率的设置。业务执行环境包括与租户对应的业务所执行的环境。执行环境可以包括但不限于预发执行环境和线上执行环境,预发执行环境为未提供给用户使用时的执行环境,在业务刚发布时,可以先进入预发执行环境进行测试;而线上执行环境为已经发布了业务,且处于用户使用的过程中。可以通过配置业务执行环境来限定业务的执行环境。生成配置信息后,可以将配置信息存储在缓存中,在任务调度过程中,可以随时从缓存获取配置信息,能够加快执行速度。

在本实施例的一个可选实现方式中,如图6所示,所述步骤s101,即生成租户关联信息的步骤,进一步还包括以下步骤s601-s602:

在步骤s601中,确定具有所述第二预设对应关系的租户和业务所对应的业务调度周期和/或业务执行环境;

在步骤s602中,根据所述业务调度周期和/或业务执行环境确定是否生成具有所述第二预设对应关系的租户和业务对应的所述租户关联信息。

在该可选的实现方式中,生成租户关联信息时,首先获取租户标识列表,之后再根据租户标识列表中的每一租户确定与其具有第二预设对应关系的业务标识,可以从上文提到的配置信息中获取。在获取了有租户具有第二预设对应关系的业务标识后,可以根据配置信息确定该业务调度周期和/或业务执行环境,如果通过配置信息中的业务参数确定当前时间不是该业务的业务调度周期,或者不是该业务的执行环境时,则不针对该租户和业务生成租户关联信息,也即不需要后续执行对该业务的请求。例如,租户1和业务1具有第二预设对应关系,而在接收到任务调度事件后,确定租户1和业务1的配置信息中的业务调度周期或者业务执行环境与当前时间或者执行环境不符,则不再针对租户1和业务1与用户进行匹配生成租户关联信息,在后续的步骤中,也就不存针对在租户1下的用户对业务1的请求的实现过程。通过这种方式,可以实现业务调度周期和/业务执行环境的可配置性,能够实现不同执行环境的隔离。

下述为本公开装置实施例,可以用于执行本公开方法实施例。

图7示出根据本公开一实施方式的任务执行装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图7所示,所述任务执行装置包括第一生成模块701、获取模块702和执行模块703:

第一生成模块701,被配置为响应于任务调度事件,生成租户关联信息;其中,所述租户关联信息至少包括用户、租户和业务的对应关系;

获取模块702,被配置为根据待执行业务以及所述租户关联信息获取所述待执行业务相关的数据主键列表;

执行模块703,被配置为根据所述数据主键列表以及所述租户关联信息执行与所述待执行业务具有第一预设对应关系的任务。

在下文中将对第一生成模块701、获取模块702和执行模块703分别做进一步的描述。

第一生成模块701

在接收到任务调度事件后,第一生成模块701生成租户关联信息。租户关联信息可以包括但不限于用户、租户和业务之间的对应关系。租户可以是配置有业务的租户,而业务与租户具有预设的对应关系,用户属于某一个租户。因此可以通过当前所支持的所有租户信息确定每个租户所配置的业务,之后再确定租户下的用户。通过这种方式最终可以确定用户、租户和业务之间的对应关系。该对应关系可以是用户、租户和业务之间的一一对应关系,而租户关联信息可以包括多个该对应关系。例如,对应关系可以表示为(uid,business_code,tnt_inst_id),其中,uid为用户标识,business_code为业务代码,tnt_inst_id为租户标识。

获取模块702

第一生成模块701在确定了租户关联信息后,也即确定了一个或多个用户、租户和业务之间的对应关系后,获取模块702根据该对应关系以及待执行业务获取相应数据的主键列表。数据主键列表是指与待执行业务相关数据的索引列表,其不包括明细数据。例如,对应某一用户请求的数据为数据库表d中的所有数据,那么对应该请求的数据主键可以是该数据表d的索引。数据主键列表为分配给与待执行业务具有预设对应关系的租户及其下用户的,例如云平台中为租户和用户指定的数据表id列表等。待执行业务为用户所请求且未被执行的业务,该业务为与用户所属租户具有预设的对应关系,也即为租户所配置的业务。需要注意的是用户只能请求其所属租户对应的业务。每个租户对应的业务都可以有多个用户请求。由于同一业务可以配置给多个租户,而多个租户之间的数据是隔离的。因此在获取数据主键列表时,可以根据请求该待执行业务的用户以及租户获取其操作范围内、且与该执行业务相关的数据主键列表。在一实施例中,业务由于与任务对应,因此获取模块702在获取数据主键列表时,可以调用任务的数据加载器并以租户标识和用户标识为查询条件从数据库中加载与业务相关的数据,任务的数据加载器仅加载执行任务所需的数据。例如对于待执行业务x,根据租户关联信息可知与该待执行业务x对应的租户为租户y,且租户y下有n个用户z对该业务有请求,因此在可以获取与待执行业务x相关、属于租户y和用户z操作范围内的数据主键列表。通过这种方式,可以将不同租户之间的数据进行隔离。

执行模块703

获取模块702在确定了待执行业务相关的数据主键列表后,执行模块703可以执行相应的任务来完成待执行业务。业务是应用层面的,在实现层面需要由具体的任务来完成。本公开实施例中,每个业务对应有一个任务,也即每个业务都与一个任务具有预先配置好的第一预设对应关系,通过执行对应的任务就可以实现对应的业务。例如,对于一付款相关业务,与其具有第一预设对应关系的任务用于执行付款的相关操作。每个任务可以有相应的操作流程,在执行任务时,执行模块703可以根据数据主键列表获取明细数据,并调用任务处理器完成相应的操作。需要说明的是,本公开实施例中同一个任务可以由多个业务复用。由于预先对业务和租户的对应关系进行了配置,因此任务调度时,首先根据业务和租户的对应关系、当前执行区域下的用户进行了分组,也即对云系统所支持的租户、为租户所配置的业务及租户下的用户进行了对应关系的组合,每个组合涉及一个用户、租户和业务的一个对应关系,而不同组合涉及不同的对应关系,在确定了上述组合也即上述对应关系后,在实现业务时,先根据上述对应关系获取对应租户和用户的、与所述业务相关的数据主键列表,之后再根据数据主键列表和上述对应关系获取对应租户和用户的、与所述业务相关的明细数据,再执行相应任务;通过这个流程在获取数据主键列表和明细数据时,都仅获取对应租户和用户的数据,而此处的租户和用户是从上述组合中确定的与待执行业务具有对应关系的租户和用户,因此可以实现租户之间数据的隔离,同时还能实现任务的复用(因为不同租户可以与同一业务具有第一预设对应关系,但是在执行业务对应的任务时,不同租户的数据是不同的)。

本实施例中的任务执行装置与上文描述的任务执行方法对应一致,具体细节可参考上述对任务执行方法的描述,在此不再赘述。

在本实施例的一个可选实现方式中,如图8所示,所述第一生成模块701,进一步包括以下子模块:

第一获取子模块801,被配置为获取租户标识列表;

第一确定子模块802,被配置为确定与所述租户标识列表中的所述租户具有第二预设对应关系的所述业务。

该可选的实现方式中,接收到任务调度事件时,第一获取子模块801可以先确定云系统当前所支持的租户标识列表,之后第一确定子模块802确定与租户标识列表中的一个或多个租户具有第二预设对应关系的业务。本实施例中,每个租户可能都对应有不同的业务,因此可以预先建立租户与业务之间的第二预设对应关系,在任务调度时,可以根据该第二预设对应关系确定租户可能要实现的业务。而在执行业务对应的任务时,可以根据该对应关系确定任务执行所涉及的数据范围,实现不同租户之间的数据隔离。在该可选的实现方式中,可以在租户和业务之间形成多个一一对应关系,如(business_code,tnt_inst_id)。需要说明的是,不同租户也可以共享同一个业务(即业务代码一致,但是执行业务对应的任务时不同租户的数据不同),可见,不同租户也能复用同一个任务,但是在数据层面,在加载数据时,仅加载租户可操作范围下的数据,因此同样能够很好地实现不同租户之间的数据隔离。

在本实施例的一个可选实现方式中,如图9所示,所述第一生成模块701,进一步还包括以下子模块:

第二确定子模块901,被配置为确定当前执行区域下的用户标识列表;

建立子模块902,被配置为根据用户与租户的从属关系、以及所述第二预设对应关系建立用户、租户和业务之间的一一对应关系。

该可选的实现方式中,所述第一生成模块701在生成租户关联信息的时候,还可以由第二确定子模块901确定当前执行区域下的用户标识列表。本公开实施例中,以用户为维度将云系统划分成了不同的执行区域(即不同的zone)。同一租户下的不同用户可以在同一执行区域,也可以在不同执行区域。而不同租户下的不同用户可以在同一执行区域,也可以在不同执行区域。在任务调度时,要求任务执行实体可以操作本zone下的数据,而定时任务也在本zone内触发并在本zone内执行。因此,生成租户关联信息的时候,还可以确定被划分到当前执行区域下的用户标识列表。用户标识列表包括被划分到当前执行区域下的多个用户id。第二确定子模块901在确定了用户标识列表后,建立子模块902根据用户与租户的从属关系(也即用户所属的租户信息)、以及租户与业务的第二预设对应关系建立用户、租户和业务之间的一一对应关系。通过这种方式,可以将不属于当前执行区域的那些用户所请求的业务排除,因此当前执行区域下的任务执行实体仅执行被划分到当前执行区域的用户请求。

在本实施例的一个可选实现方式中,如图10所示,所述获取模块702,进一步还包括以下子模块:

第三确定子模块1001,被配置为根据所述待执行业务确定与所述待执行业务具有所述第一预设对应关系的所述任务;

第二获取子模块1002,被配置为根据所述任务获取所述待执行业务相关的数据主键列表;其中,所述数据主键列表为请求所述待执行业务的用户及其所属租户的操作范围下的数据主键列表。

在该可选的实现方式中,第一生成模块701在确定了当前执行区域下用户、租户和业务的对应关系,也即租户关联信息后,获取模块702可以获取待执行业务相关的数据主键业务列表。待执行业务是已经有用户请求且未处理的业务,而且每个业务可能有多个用户请求,也即多个用户请求执行同一业务,例如多个用户都请求执行付款这一业务。本公开实施例中,第三确定子模块1001可以针对每一个待执行业务,确定与待执行业务具有第一预设对应关系的任务。如上文所述,每个业务都对应有一个任务,用于实现该业务。那么本公开实施例可以预先设定业务与任务之间的第一预设对应关系,一个业务对应一个任务,而不同的业务可以对应同一个任务,也即复用同一任务。不同的租户可以共享同一业务代码,但是不同租户的数据需要隔离。因此在第三确定子模块1001确定了待执行业务对应的任务时,由于任务不同所需要的数据也不同,因此第二获取子模块1002可以根据任务加载数据主键列表(可以根据任务的数据加载器加载执行该任务所需要的数据),并且可以根据该待执行业务对应的租户信息以及用户信息仅加载属于其操作范围的数据主键列表,不同的租户针对同一业务会加载不同的数据主键列表,因此也就实现了数据隔离的功能。通过这种方式,在数据记载时能够将租户之间的数据完全隔离开来。

在本实施例的一个可选实现方式中,如图11所示,所述执行模块703,进一步包括以下子模块:

第四确定子模块1101,被配置为根据所述数据主键列表以及请求所述待执行业务的所述用户确定明细数据;

执行子模块1102,被配置为根据所述租户关联信息以及所述明细数据执行所述任务。

在该可选的实现方式中,为租户分配的数据下,不同用户对应不同的数据分表,因此在确定了数据主键列表时,第四确定子模块1101可以根据请求待执行业务的用户id获取数据主键列表对应的明细数据。由于不同业务可以复用同一任务,但是由于不同租户的任务执行参数不尽相同,因此执行任务时,还可以根据租户关联信息确定与待执行业务对应的租户,并确定该租户对应的配置参数。因此,执行子模块1102在执行任务时,还可以根据业务与租户的第二预设对应关系,获取租户的不同配置参数,进而确定该业务对应的业务参数,并根据该业务参数以及明细数据执行该任务,实现待执行业务。租户的配置参数包括租户在执行对应业务时的相关参数。

在本实施例的一个可选实现方式中,所述装置进一步还包括以下模块:

第二生成模块,被配置为生成配置信息;其中,所述配置信息包括以下至少之一:租户与业务的第二预设对应关系、业务与任务的第一预设对应关系和租户的配置参数;

存储模块,被配置为将所述配置信息存储在缓存中。

该可选的实现方式中,第二生成模块可以针对任一租户以及为该租户所拥有的业务生成配置信息。配置信息可以建立成数据库表的形式,也可以是xml文件或者配置文件的形式。每组租户和业务的对应关系,都可以生成一项配置信息。在为租户生成新的业务时,可以生成对应的配置信息。租户的配置参数可以包括与该租户具有第二预设对应关系的业务的业务参数、业务调度周期以及业务执行环境中的至少一项。业务参数可以包括与该业务具有第一预设对应关系的任务在执行过程中所需要的执行参数,例如任务的执行时间等。而业务调度周期可以包括该业务的调度时间,通过设置业务调度周期这一配置参数,可以实现不同业务的调度频率的设置。业务执行环境包括与租户对应的业务所执行的环境。执行环境可以包括但不限于预发执行环境和线上执行环境,预发执行环境为未提供给用户使用时的执行环境,在业务刚发布时,可以先进入预发执行环境进行测试;而线上执行环境为已经发布了业务,且处于用户使用的过程中。可以通过配置业务执行环境来限定业务的执行环境。存储模块可以将配置信息存储在缓存中,在任务调度过程中,可以随时从缓存获取配置信息,能够加快执行速度。

在本实施例的一个可选实现方式中,如图12所示,所述所述第一生成模块701,进一步还包括以下子模块:

第五确定子模块1201,被配置为确定具有所述第二预设对应关系的租户和业务对应的业务调度周期和/或业务执行环境;

第六确定子模块1202,被配置为根据所述业务调度周期和/或业务执行环境确定是否生成具有所述第二预设对应关系的租户和业务对应的所述租户关联信息。

在该可选的实现方式中,第一生成模块701生成租户关联信息时,首先获取租户标识列表,之后再根据租户标识列表中的每一租户确定与其具有第二预设对应关系的业务标识,可以从上文提到的配置信息中获取。在获取了有租户具有第二预设对应关系的业务标识后,可以通过第五确定子模块1201根据配置信息确定该业务调度周期和/或业务执行环境,而第六确定子模块1202如果通过配置信息中的业务参数确定当前时间不是该业务的业务调度周期,或者不是该业务的执行环境时,则不针对该租户和业务生成租户关联信息,也即不需要后续执行对该业务的请求。例如,租户1和业务1具有第二预设对应关系,而在接收到任务调度事件后,确定租户1和业务1的配置信息中的业务调度周期或者业务执行环境与当前时间或者执行环境不符,则不再针对租户1和业务1与用户进行匹配生成租户关联信息,在后续的步骤中,也就不存针对在租户1下的用户对业务1的请求的实现过程。通过这种方式,可以实现业务调度周期和/业务执行环境的可配置性,能够实现不同执行环境的隔离。

图13是适于用来实现根据本公开实施方式的任务执行方法的电子设备的结构示意图。

如图13所示,电子设备1300包括中央处理单元(cpu)1301,其可以根据存储在只读存储器(rom)1302中的程序或者从存储部分1308加载到随机访问存储器(ram)1303中的程序而执行上述图1所示的实施方式中的各种处理。在ram1303中,还存储有电子设备1300操作所需的各种程序和数据。cpu1301、rom1302以及ram1303通过总线1304彼此相连。输入/输出(i/o)接口1305也连接至总线1304。

以下部件连接至i/o接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至i/o接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。

特别地,根据本公开的实施方式,上文参考图1描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行图1的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。

附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1