多租户请求的处理方法及装置转让专利

申请号 : CN201711141728.6

文献号 : CN108093026B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 贾新禹

申请人 : 阿里巴巴集团控股有限公司

摘要 :

本说明书实施例提供一种多租户请求的处理方法及装置,在多租户请求的处理方法中,接收用户访问应用的请求,从用户与租户之间的对应关系中查找该用户对应的租户信息。根据请求中的请求数据,判断待访问应用的类型。根据应用的类型,从请求数据中提取该应用的唯一标识。根据租户信息,修改提取的唯一标识,从而得到修改后的请求。向上述应用转发该修改后的请求。

权利要求 :

1.一种多租户请求的处理方法,其特征在于,所述方法由网关执行,包括:接收用户访问应用的请求,所述请求包括所述用户的用户标识和请求数据;

根据用户与租户之间的对应关系,确定所述用户标识对应的租户信息;

根据所述请求数据,确定所述应用的类型;

根据所述类型,从所述请求数据中提取所述应用的第一标识;

根据所述租户信息,将所述第一标识修改为第二标识;

根据所述第二标识,确定新请求并发送;

所述根据所述类型,从所述请求数据中提取所述应用的第一标识,包括:根据应用的类型与标识字段之间的对应关系,确定所述类型的应用对应的标识字段;

根据所述标识字段,从所述请求数据中提取所述标识字段的字段值;

将所述字段值作为所述第一标识;或者,根据应用的类型与标识字段的字段值的提取方法之间的对应关系,确定所述类型的应用的标识字段的字段值的提取方法;

根据所述提取方法,从所述请求数据中提取所述标识字段的字段值;

将所述字段值作为所述第一标识。

2.根据权利要求1所述的方法,其特征在于,还包括:接收所述新请求的响应消息,所述响应消息包括所述第二标识;

根据所述租户信息,将所述第二标识修改为所述第一标识;

根据所述第一标识,确定新响应消息;

向所述用户返回所述新响应消息。

3.根据权利要求1所述的方法,其特征在于,所述应用的类型与标识字段之间的对应关系存储在二维关系表中或者存储在键值KV结构的存储系统中;或者,所述应用的类型与标识字段的字段值的提取方法之间的对应关系存储在二维关系表中或者存储在键值KV结构的存储系统中。

4.根据权利要求2所述的方法,其特征在于,所述根据所述租户信息,将所述第一标识修改为第二标识,包括:将所述租户信息追加到所述第一标识中,得到所述第二标识;

对应地,所述根据所述租户信息,将所述第二标识修改为所述第一标识,包括:从所述第二标识中剥离所述租户信息,得到所述第一标识。

5.一种多租户请求的处理装置,其特征在于,设置于网关,所述装置包括:接收单元,用于接收用户访问应用的请求,所述请求包括所述用户的用户标识和请求数据;

确定单元,用于根据用户与租户之间的对应关系,确定所述用户标识对应的租户信息;

所述确定单元,还用于根据所述请求数据,确定所述应用的类型;

提取单元,用于根据所述确定单元确定的所述类型,从所述请求数据中提取所述应用的第一标识;

修改单元,用于根据所述确定单元确定的所述租户信息,将所述提取单元提取的所述第一标识修改为第二标识;

所述确定单元,还用于根据所述修改单元修改的所述第二标识,确定新请求;

发送单元,用于发送所述新请求;

所述提取单元具体用于:

根据应用的类型与标识字段之间的对应关系,确定所述类型的应用对应的标识字段;

根据所述标识字段,从所述请求数据中提取所述标识字段的字段值;

将所述字段值作为所述第一标识;或者,根据应用的类型与标识字段的字段值的提取方法之间的对应关系,确定所述类型的应用的标识字段的字段值的提取方法;

根据所述提取方法,从所述请求数据中提取所述标识字段的字段值;

将所述字段值作为所述第一标识。

6.根据权利要求5所述的装置,其特征在于,所述接收单元,还用于接收所述新请求的响应消息,所述响应消息包括所述第二标识;

所述修改单元,还用于根据所述租户信息,将所述第二标识修改为所述第一标识;

所述确定单元,还用于根据所述修改单元修改的所述第一标识,确定新响应消息;

所述发送单元,还用于向所述用户返回所述确定单元确定的所述新响应消息。

7.根据权利要求5所述的装置,其特征在于,所述应用的类型与标识字段之间的对应关系存储在二维关系表中或者存储在键值KV结构的存储系统中;或者,所述应用的类型与标识字段的字段值的提取方法之间的对应关系存储在二维关系表中或者存储在键值KV结构的存储系统中。

8.根据权利要求6所述的装置,其特征在于,所述修改单元具体用于:将所述租户信息追加到所述第一标识中,得到所述第二标识;

对应地,

从所述第二标识中剥离所述租户信息,得到所述第一标识。

说明书 :

多租户请求的处理方法及装置

技术领域

[0001] 本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种多租户请求的处理方法及装置。

背景技术

[0002] 随着对系统资源利用率的要求不断提高,普通的独占性应用逐渐无法满足资源利用率要求,共享型应用应运而生。
[0003] 而共享型应用一般通过多租户技术来实现。多租户技术的思路是:让多个租户共用一个应用。因此,如何快速而准确地让多个租户共享应用就成为要解决的问题。

发明内容

[0004] 本说明书一个或多个实施例描述了一种多租户请求的处理方法及装置,可以快速而准确地在多个租户之间共享应用。
[0005] 第一方面,提供了一种多租户请求的处理方法,包括:
[0006] 接收用户访问应用的请求,所述请求包括所述用户的用户标识和请求数据;
[0007] 根据用户与租户之间的对应关系,确定所述用户标识对应的租户信息;
[0008] 根据所述请求数据,确定所述应用的类型;
[0009] 根据所述类型,从所述请求数据中提取所述应用的第一标识;
[0010] 根据所述租户信息,将所述第一标识修改为第二标识;
[0011] 根据所述第二标识,确定新请求并发送。
[0012] 第二方面,提供了一种多租户请求的处理装置,包括:
[0013] 接收单元,用于接收用户访问应用的请求,所述请求包括所述用户的用户标识和请求数据;
[0014] 确定单元,用于根据用户与租户之间的对应关系,确定所述用户标识对应的租户信息;
[0015] 所述确定单元,还用于根据所述请求数据,确定所述应用的类型;
[0016] 提取单元,用于根据所述确定单元确定的所述类型,从所述请求数据中提取所述应用的第一标识;
[0017] 修改单元,用于根据所述确定单元确定的所述租户信息,将所述提取单元提取的所述第一标识修改为第二标识;
[0018] 所述确定单元,还用于根据所述修改单元修改的所述第二标识,确定新请求;
[0019] 发送单元,用于发送所述新请求。
[0020] 本说明书一个或多个实施例提供的多租户请求的处理方法及装置,接收用户访问应用的请求,从用户与租户之间的对应关系中查找该用户对应的租户信息。根据请求中的请求数据,判断待访问应用的类型。根据应用的类型,从请求数据中提取该应用的唯一标识。根据租户信息,修改提取的唯一标识,从而得到修改后的请求。向上述应用转发该修改后的请求。由此,可以快速而准确地在多个租户之间共享应用。

附图说明

[0021] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0022] 图1为本说明书一个实施例提供的多租户请求的处理方法的应用场景示意图;
[0023] 图2为本说明书一个实施例提供的多租户请求的处理方法流程图;
[0024] 图3为本说明另一个实施例提供的多租户请求的处理方法信息交互图;
[0025] 图4为本说明书一个实施例提供的多租户请求的处理装置示意图。

具体实施方式

[0026] 下面结合附图,对本说明书提供的方案进行描述。
[0027] 本说明书一个实施例提供的多租户请求的处理方法可以应用于如图1所示的场景中,图1中,一个用户可以唯一地归属于一个租户,而一个租户可以对应多个用户。网关(也称中间人)用于接收用户发送的访问应用的请求,并将该请求转发给对应的应用;还用于接收应用返回的响应消息,并将该响应消息转发给用户。需要说明的是,在本说明书中,网关可以对接收的请求或者返回的响应消息进行修改,具体修改方法后续进行说明。图1中的应用一(或者应用二)例如可以为数据库(database,DB)或者ElasticSearch(一种搜索服务器)等。
[0028] 需要说明的是,图1中的网关可以以独立的形态出现,也可以以应用插件的形态出现。
[0029] 图2为本说明书一个实施例提供的多租户请求的处理方法流程图。所述方法的执行主体可以为具有处理能力的设备:服务器或者系统或者装置,如,图1中的网关。如图2所示,所述方法具体可以包括:
[0030] 步骤210,接收用户访问应用的请求。
[0031] 该请求可以包括用户的用户标识和请求数据,该请求数据可以包括协议类型等信息。
[0032] 在实施例中,以访问应用的请求为:“http://hostname:port/Index=indexName&×××”为例来说。
[0033] 步骤220,根据用户与租户之间的对应关系,确定用户标识对应的租户信息。
[0034] 此处,用户与租户之间的对应关系可以存储在二维关系表中。上述租户信息可以是指租户的唯一标识等。以租户信息为租户的唯一标识为例来说,用户与租户之间的对应关系可以如表1所示。
[0035] 表1
[0036]用户标识 租户的唯一标识
[0037] 步骤230,根据请求数据,确定应用的类型。
[0038] 在一种实现方式中,可以通过分析请求数据中的协议类型,来确定应用的类型。当然,在实际应用中,也可以通过其它方式来确定应用的类型。如,通过判断请求数据中是否包含预设字符或者字符串,来确定应用的类型,其中,该预设字符或者字符串与特定类型的应用相对应。本说明书对此不复赘述。
[0039] 步骤240,根据类型,从请求数据中提取应用的第一标识。
[0040] 此处的第一标识可以是指任一能唯一地标识一个应用的标识。
[0041] 在一种实现方式中,步骤240可以包括如下步骤:
[0042] 步骤A,根据应用的类型与标识字段之间的对应关系,确定该类型的应用对应的标识字段。
[0043] 此处,标识字段可以是指代表应用中的唯一键的字段,该标识字段的字段值可以唯一地标识一个应用。应用的类型与标识字段之间的对应关系可以存储在二维关系表中;或者,也可以存储在键值(key value,KV)结构的存储系统中。当存储在KV结构的存储系统中时,K可以为应用的类型。在本说明书中,上述对应关系可以由人为预先设定。
[0044] 步骤A中,对不同类型的应用,其对应的标识字段通常是不一致的。如,在应用为:“DB”时,其对应的标识字段可以为:“DataBase”;而在应用为:“ElasticSearch”时,其对应的标识字段可以为“Index”。需要说明的是,上述只是为了便于理解本实施例而给出的示例性说明,并不作为对本说明书给出的方案的限定。在实际应用中,“DB”或者
“ElasticSearch”对应的标识字段也可以为其它。
[0045] 步骤B,根据标识字段,从请求数据中提取标识字段的字段值。
[0046] 以上述请求:“http://hostname:port/Index=indexName&×××”为例来说,当该应用对应的标识字段为:“Index”时,提取的标识字段的字段值为:“indexName”。
[0047] 步骤C,将字段值作为第一标识。
[0048] 如前述例子,第一标识即为:“indexName”。
[0049] 在另一种实现方式中,步骤240也可以包括如下步骤:
[0050] 步骤a,根据应用的类型与标识字段的字段值的提取方法之间的对应关系,确定该类型的应用的标识字段的字段值的提取方法。
[0051] 其中,应用的类型与标识字段的字段值的提取方法之间的对应关系可以存储在二维关系表中;或者,也可以存储在键值(key value,KV)结构的存储系统中。当存储在KV结构的存储系统中时,K可以为应用的类型。在本说明书中,上述对应关系可以由人为预先设定。在本说明书的其它实施方式中,上述二维关系表或者KV结构的存储系统中还可以包括其它内容,如标识字段等,本说明书对此不作限定。
[0052] 在本说明书中,不同类型的应用,其对应的标识字段的字段值的提取方法是不一致的。在一种具体实现方式中,上述提取方法可以是指正则规则。举例来说,该提取方法可以包括:取统一资源定位符(Uniform Resource Locator,URL)中路径(path)的第几位或者取JSON格式的内容等等。以应用:“ElasticSearch”为例来说,其对应的提取方法可以为:取URL中路径的第一位。
[0053] 步骤b,根据提取方法,从请求数据中提取标识字段的字段值。
[0054] 以请求的应用为:“ElasticSearch”,且请求为:“http://hostname:port/{indexName}/×××”为例来说,当取URL中路径的第一位时,从请求数据中提取的标识字段的字段值为:“indexName”。
[0055] 步骤c,将字段值作为第一标识。
[0056] 步骤250,根据租户信息,将第一标识修改为第二标识。
[0057] 在一种实现方式中,根据租户信息将第一标识修改为第二标识可以包括:将租户信息追加到第一标识中,从而得到第二标识。如前述例子,假设租户信息为:“A”,则第二标识可以为:“indexName_A”。需要说明的是,此处的第二标识只是一种示例性说明。在实际应用中,其可以为任一指既能体现租户信息又能唯一地标识一个应用的标识,本说明书对此不作限定。
[0058] 步骤260,根据第二标识,确定新请求并发送。
[0059] 可以理解的是,在将原请求中的第一标识修改为第二标识之后,该请求就成为新请求。也即新请求与原请求的区别就是两者所包含的应用的标识发生了变化。在得到新请求之后,由对应的应用对该新请求进行对应的处理并返回响应消息(response)。
[0060] 在接收到响应消息之后,可以参照第一标识的提取方法,从响应消息中提取第二标识。之后,根据租户信息,将第二标识修改为第一标识。具体地,可以从第二标识中剥离租户信息,从而得到第一标识。如前述例子,将第二标识“indexName_A”中的租户信息:“A”剥离,得到“indexName”。在将响应消息中的第二标识修改为第一标识之后,该响应消息就成为新响应消息。也即新响应消息与原响应消息的区别就是两者所包含的应用的标识发生了变化。在得到新响应消息之后,将该响应消息返回给用户。
[0061] 综上,本说明书上述实施例中将请求中的第一标识修改为第二标识,之后再将响应消息中的第二标识修改为第一标识的方法达到了对用户和应用都透明的多租户实现。
[0062] 此外,本说明书上述实施例,将多租户从应用级提前到网关,也就是利用前置网关实现多租户。无需对应用做修改,独占型和共享型保持同样源码,方便日后版本迭代。多个应用也仅需在网关处进行配置即可,使用方便。即使是闭源应用也可以轻松实现多租户。
[0063] 图3为本说明书另一个实施例提供的多租户请求的处理方法的信息交互图。如图3所示,所述方法具体可以包括:
[0064] 步骤310,用户向网关发送访问应用的请求。
[0065] 该请求可以包括用户的用户标识和请求数据。
[0066] 步骤320,根据用户标识,从租户信息表中读取对应的租户信息。
[0067] 其中,租户信息表可以用于记录用户与租户之间的对应关系。
[0068] 步骤330,根据请求数据,确定应用的类型。
[0069] 步骤340,根据应用的类型,从对应的应用信息表中读取该应用的标识字段和该标识字段的字段值的提取方法。
[0070] 其中,应用信息表用于记录应用的类型、标识字段与标识字段的字段值的提取方法之间的对应关系。
[0071] 步骤350,根据提取方法,从请求数据中提取标识字段的字段值。
[0072] 步骤360,在字段值中追加租户信息,得到新请求。
[0073] 步骤370,网关向应用发送新请求。
[0074] 步骤380,应用处理新请求。
[0075] 步骤390,应用向网关返回新请求的响应消息。
[0076] 步骤3100,从响应消息的标识字段对应的字段值中剥离租户信息,得到新响应消息。
[0077] 步骤3110,向用户返回新响应消息。
[0078] 通过本说明书上述一个或多个实施例提供的多租户请求的处理方法,可以实现快速而准确地在多个租户之间共享应用。
[0079] 与上述多租户请求的处理方法对应地,本说明书一个实施例还提供的一种多租户请求的处理装置,如图4所示,该装置包括:
[0080] 接收单元401,用于接收用户访问应用的请求,该请求包括用户的用户标识和请求数据。
[0081] 确定单元402,用于根据用户与租户之间的对应关系,确定用户标识对应的租户信息。
[0082] 确定单元402,还用于根据请求数据,确定应用的类型。
[0083] 提取单元403,用于根据确定单元402确定的类型,从请求数据中提取应用的第一标识。
[0084] 可选地,提取单元403具体可以用于:
[0085] 根据应用的类型与标识字段之间的对应关系,确定该类型的应用对应的标识字段。根据标识字段,从请求数据中提取标识字段的字段值。将字段值作为第一标识。或者,根据应用的类型与标识字段的字段值的提取方法之间的对应关系,确定该类型的应用的标识字段的字段值的提取方法。根据提取方法,从请求数据中提取标识字段的字段值。将字段值作为第一标识。
[0086] 其中,应用的类型与标识字段之间的对应关系可以存储在二维关系表中或者可以存储在键值KV结构的存储系统中。应用的类型与标识字段的字段值的提取方法之间的对应关系也可以存储在二维关系表中或者可以存储在键值KV结构的存储系统中。
[0087] 修改单元404,用于根据确定单元402确定的租户信息,将提取单元403提取的第一标识修改为第二标识。
[0088] 确定单元402,还用于根据修改单元404修改的第二标识,确定新请求。
[0089] 发送单元405,用于发送新请求。
[0090] 可选地,接收单元401,还用于接收新请求的响应消息,该响应消息包括第二标识。
[0091] 修改单元404,还用于根据租户信息,将第二标识修改为第一标识。
[0092] 确定单元402,还用于根据修改单元404修改的第一标识,确定新响应消息。
[0093] 发送单元405,还用于向用户返回确定单元402确定的新响应消息。
[0094] 可选地,修改单元404具体可以用于:
[0095] 将租户信息追加到第一标识中,得到第二标识。
[0096] 对应地,
[0097] 从第二标识中剥离租户信息,得到第一标识。
[0098] 本说明书上述实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本说明书一个实施例提供的装置的具体工作过程,在此不复赘述。
[0099] 本说明书一个实施例提供的多租户请求的处理装置,接收单元401接收用户访问应用的请求,该请求包括用户的用户标识和请求数据。确定单元402根据用户与租户之间的对应关系,确定用户标识对应的租户信息。确定单元402根据请求数据,确定应用的类型。提取单元403根据类型,从请求数据中提取应用的第一标识。修改单元404根据租户信息,将第一标识修改为第二标识。确定单元402根据第二标识,确定新请求。发送单元405发送新请求。由此,可以实现快速而准确地在多个租户之间共享应用。
[0100] 本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
[0101] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。