一种支持多数据中心的可伸缩多租户路由系统技术方案

技术编号:34919034 阅读:14 留言:0更新日期:2022-09-15 07:10
本发明专利技术公开了一种支持多数据中心的可伸缩多租户路由系统,所述支持多数据中心的可伸缩多租户路由系统包括租户ID生成流程,所述租户ID生成流程用于生成租户唯一标识,所述租户唯一标识包括数据中心编号、分区编号和数据库编号;租户创建流程,所述租户创建流程用于根据系统设计时每个分区,每个数据库可以容纳的租户容量注册表,按照注册表内规约的顺序,将租户分配到相应分区的相应数据里;租户路由流程,所述租户路由流程用于将每一个租户的业务请求路由到正确的租户所在数据库;租户释放流程,所述租户释放流程用于对租户数据注销时产生的数据进行清理和容量释放;具有实现自解释,不依赖其他组件,路由稳定高效,资源充分利用等优点。用等优点。用等优点。

【技术实现步骤摘要】
一种支持多数据中心的可伸缩多租户路由系统


[0001]本专利技术多应用于SaaS,特别是企业级SaaS多租户ID生成和路由
,本专利技术涉及一种支持多数据中心的可伸缩多租户路由系统。

技术介绍

[0002]现有数据库系统普遍采用自增数据或者uuid作为id生成策略,这两种策略都无法标识自描述租户特征,需要额外提供持久化存储来记录每个租户和应用路由的映射关系或者采用基于范围/一致性哈希的路由算法。
[0003]如果采用映射关系方案需要额外提供持久化存储来记录租户和数据库的映射关系,这些记录会随着租户的增长呈线性增长,进而对路由的效率产生影响。因需要人为参与维护租户的路由映射,也容易出现映射不准确,进而导致数据落错数据库的情况出现。如果采用一致性哈希的路由算法,虽然可以减少路由映射,但是对于租户按业务属性隔离、多租户分片扩容、基于业务租户分片的灰度升级等场景存在不足,需要进行数据迁移、合并等繁杂操作。基于数值范围和一致性哈希的路由实现,还容易在租户退租后导致租户分片资源冷热不均,无法做到资源有效利用,造成资源不均衡。
[0004]所以提供一种支持多数据中心的可伸缩多租户路由系统,能够解决上述问题。

技术实现思路

[0005]本专利技术所要解决的技术问题在于,现有技术一般采用三种方法实现多租户的路由系统,第一种方法一般采用的一致性哈希算法,通过将请求对象和数据分片分布在哈希圆环上,然后通过顺时针算法决定访问对象需要的数据节点;此方案在产生数据节点增加和减少时需要进行数据迁移,数据迁移带来的人工工作量和网络消耗都很大,另外当集群中的节点数量较少时,可能会出现节点在哈希空间中分布不平衡的问题,虽然虚拟节点可以解决此问题,但是采用虚拟节点,在增加和减少数据节点时会增加需要迁移的数据;
[0006]第二种现有技术采用的方法则是根据数值范围进行分片路由,数据范围一般采用顺序号生成,租户ID为连续数值类型,因为容易被猜测和枚举,作为租户的唯一标识存在安全隐患;因为数值是只增不减,因此,存在当数据分片出现冷热不均时,无法向冷分片内分配租户请求的问题;
[0007]第三种现有技术采用的方法则是根据租户ID和数据分片的映射关系,因为需要维护每个租户ID和数据分片的映射关系,此映射关系随着租户的增加而增加,映射关系的增加会降低程序的请求效率;另外在分布式系统环境下,该映射关系如果存在中心节点,会增加请求时间,如果分发到每个路由应用,则不能保证分发的及时性和稳定性;
[0008]综上,基于以上三种现有方案的不足,本专利技术提供一种支持多数据中心的可伸缩多租户路由系统,所述支持多数据中心的可伸缩多租户路由系统包括:
[0009]租户ID生成流程,所述租户ID生成流程用于生成租户唯一标识,所述租户唯一标识包括数据中心编号、分区编号和数据库编号;
[0010]租户创建流程,所述租户创建流程用于根据系统设计时每个分区,每个数据库可以容纳的租户容量注册表,按照注册表内规约的顺序,将租户分配到相应分区的相应数据里;
[0011]租户路由流程,所述租户路由流程用于将每一个租户的业务请求路由到正确的租户所在数据库;
[0012]租户释放流程,所述租户释放流程用于对租户数据注销时产生的数据进行清理和容量释放。
[0013]进一步地,所述租户ID生成流程包括:
[0014]新建租户申请;
[0015]调用程序传入数据中心编号dcno、分区号drno,数据库顺序号dbno;
[0016]将数值型dcno、drno和dbno分别转为16进制字符串;
[0017]按照中心编号、分区号和数据库顺序号的顺序构建租户前缀;
[0018]将租户前缀和根据算法生成的哈希值字符串做拼接后得到租户ID;
[0019]将租户ID返回给租户创建者。
[0020]进一步地,所述租户创建流程包括:
[0021]新建租户申请;
[0022]获取当集群数据中心编号dcno;
[0023]获取当前分区号drno;
[0024]判断分区容量是否已满,若是则获取下一可用分区号drno后转回判断分区容量是否已满操作,若否,则获取当前数据库顺序号dbno;
[0025]判断当前数据库租户容量是否已满,若是,则获取下一可用数据库序号dbno后转回判断当前数据库租户容量是否已满操作,若否,则调用租户ID生成流程,传入dcno、drno、dbno;
[0026]租户ID生成流程;
[0027]更新当前数据中心、当前分区、当前数据库的容量信息;
[0028]分发租户创建事件,做业务初始化;
[0029]进入租户再平衡流程。
[0030]进一步地,所述租户再平衡流程包括:
[0031]租户再平衡请求;
[0032]获取当前数据中心,各分区租户容量信息;
[0033]检测已分配租户容量是否小于可用租户容量的分区,若是,则按照可用租户容量

已分配租户容量的值从大到小的顺序排列,若否,则结束租户再平衡请求;
[0034]在按照可用租户容量

已分配租户容量的值从大到小的顺序排列后,按照排列顺序,标记可用分区和剩余租户容量,并重新编辑当前分区和当前数据库。
[0035]进一步地,所述检测已分配租户容量包括:
[0036]租户容量统计请求;
[0037]按照数据中心、数据分区和数据库为分组统计各分区/各数据库可用租户容量和已用租户容量。
[0038]进一步地,所述租户路由流程包括:
[0039]租户路由申请;
[0040]获取当前租户ID;
[0041]根据租户ID组成规则解析当前租户ID,,获取数据中心序号、数据分区序号和数据库序号;
[0042]通过数据中心序号、数据分区序号和数据库序号和业务数据库前缀得到真是路由数据库名称;
[0043]数据访问带路服务将请求路由至数据库。
[0044]进一步地,所述租户释放流程包括:
[0045]租户释放申请;
[0046]获取当前租户ID;
[0047]根据租户ID组成规则,解析租户ID,获取数据中心序号、数据分区信号和数据库序号;
[0048]通过数据中心序号、数据分区信号、数据库信号和业务数据库前缀,得到真实路由数据库名称;
[0049]获取真实路由数据库名称下所有表;
[0050]遍历每个表删除租户ID是当前租户ID的数据;
[0051]更新租户对应数据中心、数据分区、数据库序号的租户实际容量;
[0052]进入租户再平衡流程。
[0053]进一步地,所述根据算法生成的哈希值字符串中的算法为一致性哈希算法。
[0054]实施本专利技术,具有如下有益效果:
[0055]1.本专利技术将现行方案中的随机字符串或者顺序数值租户ID变更为由数据中心+数据分区+数据租户索引本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种支持多数据中心的可伸缩多租户路由系统,其特征在于,包括:租户ID生成流程,所述租户ID生成流程用于生成租户唯一标识,所述租户唯一标识包括数据中心编号、分区编号和数据库编号;租户创建流程,所述租户创建流程用于根据系统设计时每个分区,每个数据库可以容纳的租户容量注册表,按照注册表内规约的顺序,将租户分配到相应分区的相应数据里;租户路由流程,所述租户路由流程用于将每一个租户的业务请求路由到正确的租户所在数据库;租户释放流程,所述租户释放流程用于对租户数据注销时产生的数据进行清理和容量释放。2.根据权利要求1所述的支持多数据中心的可伸缩多租户路由系统,其特征在于,所述租户ID生成流程包括:新建租户申请;调用程序传入数据中心编号dcno、分区号drno,数据库顺序号dbno;将数值型dcno、drno和dbno分别转为16进制字符串;按照中心编号、分区号和数据库顺序号的顺序构建租户前缀;将租户前缀和根据算法生成的哈希值字符串做拼接后得到租户ID;将租户ID返回给租户创建者。3.根据权利要求2所述的支持多数据中心的可伸缩多租户路由系统,其特征在于,所述租户创建流程包括:新建租户申请;获取当集群数据中心编号dcno;获取当前分区号drno;判断分区容量是否已满,若是则获取下一可用分区号drno后转回判断分区容量是否已满操作,若否,则获取当前数据库顺序号dbno;判断当前数据库租户容量是否已满,若是,则获取下一可用数据库序号dbno后转回判断当前数据库租户容量是否已满操作,若否,则调用租户ID生成流程,传入dcno、drno、dbno;租户ID生成流程;更新当前数据中心、当前分区、当前数据库的容量信息;分发租户创建事件,做业务初始化;进入租户再平衡流程。4.根据权利要求3所述的支持多数据中心的可伸缩多租户路由系统,其特征在于,...

【专利技术属性】
技术研发人员:朱德权
申请(专利权)人:上海利唐信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1