一种多租户的应用访问方法,装置、设备以及存储介质与流程

文档序号:35695149发布日期:2023-10-11 18:05阅读:29来源:国知局
一种多租户的应用访问方法,装置、设备以及存储介质与流程

本发明涉及通信,尤其涉及一种多租户的应用访问方法,装置、设备以及存储介质。


背景技术:

1、在saas云应用中常常会涉及到多租户的场景,在多租户、多应用的场景下,用户请求saas平台数据时,会带上租户和应用的编码标识,然后saas平台内部会根据不同的(租户、应用)编码区分租户和应用。在多租户saas平台中,通过java编程操作数据库,使用springboot框架在yml文件上配置数据库的链接信息(数据库地址、链接驱动、最大连接数等),将这些链接信息组合成为一个数据源;当有租户或者应用发起有关数据库操作的请求时,会通过与所述数据源进行链接达到操作数据库的效果。

2、但是在现有技术中,所有的服务都公用同一个数据源,无法限制指定租户或应用,举个例子,假设一个公用的数据源中只配置了3个最大链接,此时若应用a发起一个数据库查询请求,会占用一个数据源链接;若应用a需要执行30s,那么30s内任何租户或应用发起有关数据库操作的请求时,都会重新占用一个新的数据源链接;当数据库的3个链接数都被占用时,任何租户或应用的数据库请求就只能排队等待链接释放(例如最新的请求原本只需要执行1s,因为等待应用a执行(30s),导致实际耗时用了31s),导致应用或租户的访问效率不高。


技术实现思路

1、本发明提供了一种多租户的应用访问方法,装置、设备以及存储介质,给不同的租户或应用配置不同的数据源,实现不同租户或应用之间的数据源隔离,提高用户的访问效率。

2、为了解决上述技术问题,本发明实施例提供了一种多租户的应用访问方法,包括:

3、接收目标用户的应用访问请求,根据所述应用访问请求确定目标用户的租户身份、目标用户所访问的目标应用,以及目标用户所需执行的数据库操作;

4、判断所述目标应用是否配置有对应的应用级数据源,若是,则在预设的多数据源组件中获取所述目标应用所对应的应用级数据源,并根据所述应用级数据源,将所述目标应用的当前数据源切换至所述应用级数据源;

5、若否,则根据所述租户身份,在预设的多数据源组件中获取对应的租户级数据源,并根据所述租户级数据源,将所述目标应用的当前数据源切换至所述租户级数据源;

6、根据目标用户所需执行的数据库操作,在切换后的当前数据源中执行所述数据库操作。

7、作为优选方案,在所述接收目标用户的应用访问请求之前,还包括:

8、接收一数据源创建请求,根据所述数据源创建请求确定需要创建数据源的租户和应用、各租户对应的数据源配置,以及各应用对应的数据源配置;

9、根据各租户对应的数据源配置创建各租户的租户级数据源,根据各应用对应的数据源配置创建各应用的应用级数据源;

10、判断所述多数据源组件中是否已存在所创建的租户级数据源和应用级数据源,若不存在,则将所创建的租户级数据源和应用级数据源保存至所述多数据源组件中;若已存在,则不保存。

11、作为优选方案,所述在预设的多数据源组件中获取所述目标应用所对应的应用级数据源之后,还包括:

12、将所述应用级数据源的数据源信息存放至所述应用级数据源的上下文中。

13、作为优选方案,所述在预设的多数据源组件中获取对应的租户级数据源之后,还包括:

14、将所述租户级数据源的数据源信息存放至所述租户级数据源的上下文中。

15、作为优选方案,所述应用级数据源的数据源配置包括:最大请求连接数;

16、所述根据所述应用级数据源,将所述目标应用的当前数据源切换至所述应用级数据源,包括:

17、判断所述应用级数据源的当前请求连接数是否小于所述应用级数据源所对应的最大请求连接数;

18、若小于,则将所述应用访问请求连接至所述应用级数据源中,继而将所述目标应用的当前数据源切换至所述应用级数据源,并在所述应用级数据源的上下文中提取所述所述应用级数据源的数据源信息;

19、若不小于,则将所述应用访问请求加入至所述应用级数据源的等待连接队列中,并对所述应用级数据源的当前请求连接数进行实时监测。

20、作为优选方案,所述租户级数据源的数据源配置包括:最大应用连接数;

21、所述根据所述租户级数据源,将所述目标应用的当前数据源切换至所述租户级数据源,包括:

22、判断所述租户级数据源的当前应用连接数是否小于所述租户级数据源所对应的最大应用连接数;

23、若小于,则将所述目标应用连接至所述租户级数据源中,继而将所述目标应用的当前数据源切换至所述租户级数据源,并在所述租户级数据源的上下文中提取所述所述租户级数据源的数据源信息;

24、若不小于,则将所述应用访问请求加入至所述应用级数据源的等待连接队列中,并对所述租户级数据源的当前应用连接数进行实时监测。

25、作为优选方案,所述根据目标用户所需执行的数据库操作,在切换后的当前数据源中执行所述数据库操作,包括:

26、根据目标用户所需执行的数据库操作,在所述数据源信息中提取执行所述数据库操作所需的信息,继而根据所述信息在切换后的当前数据源中执行所述数据库操作。

27、在上述实施例的基础上,本发明另一实施例提供了多租户的应用访问装置,包括:应用访问请求接收模块、数据源切换模块以及数据库操作执行模块;

28、所述应用访问请求接收模块,用于接收目标用户的应用访问请求,根据所述应用访问请求确定目标用户的租户身份、目标用户所访问的目标应用,以及目标用户所需执行的数据库操作;

29、所述数据源切换模块,用于判断所述目标应用是否配置有对应的应用级数据源,若是,则在预设的多数据源组件中获取所述目标应用所对应的应用级数据源,并根据所述应用级数据源,将所述目标应用的当前数据源切换至所述应用级数据源;若否,则根据所述租户身份,在预设的多数据源组件中获取对应的租户级数据源,并根据所述租户级数据源,将所述目标应用的当前数据源切换至所述租户级数据源;

30、所述数据库操作执行模块,用于根据目标用户所需执行的数据库操作,在切换后的当前数据源中执行所述数据库操作。

31、在上述实施例的基础上,本发明又一实施例提供了一种多租户的应用访问设备,所述设备包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述发明实施例所述的多租户的应用访问方法。

32、在上述实施例的基础上,本发明又一实施例提供了一种存储介质,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行上述发明实施例所述的多租户的应用访问方法。

33、相比于现有技术,本发明实施例具有如下有益效果:

34、在本发明中,首先确定目标用户的租户身份、目标用户所访问的目标应用,以及目标用户所需执行的数据库操作;然后判断所述目标应用是否配置有对应的应用级数据源,若是,则在预设的多数据源组件中获取所述目标应用所对应的应用级数据源,并将所述目标应用的当前数据源切换至所述应用级数据源;若否,则根据所述租户身份,在预设的多数据源组件中获取对应的租户级数据源,并将所述目标应用的当前数据源切换至所述租户级数据源;根据目标用户所需执行的数据库操作,在切换后的当前数据源中执行所述数据库操作。

35、通过本发明,给各租户配置不同的租户级数据源,给指定的应用配置应用级数据源,所述租户级数据源可供对应的租户下的所有应用使用,所述应用级数据源仅供所指定的应用使用。当接收到目标用户的应用访问请求时,确定所述应用访问请求的目标应用,然后判断所述目标应用是否配置有对应的应用级数据源,若是,则根据所述目标应用所对应的应用级数据源执行后续的数据库操作;若否,则根据所述目标用户的租户身份所对应的租户级数据源执行后续的数据库操作,由此实现了不同租户或应用之间的数据源隔离,提高用户的访问效率。

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