一种多大厅租户动态扩展系统及实现方法技术方案

技术编号:36290514 阅读:18 留言:0更新日期:2023-01-13 10:03
本发明专利技术特别涉及一种多大厅租户动态扩展系统及实现方法。该多大厅租户动态扩展系统及实现方法,采用分布式架构,存储数据的数据层不限制数据源类型,维持一个公共数据源,采用dynamicDataSource分库方式为基础分库原理,实现数据库加载所有数据源;所有微服务极其负载均在配置文件中读取公共数据源中的数据源信息和大厅路由信息,大厅和数据源之间保持多对一映射,使请求能最终到达对应的节点数据源;采用AOP技术实现多数据源时本地事务的管理和回滚。该多大厅租户动态扩展系统及实现方法,实现了多租户的快速扩展,能够适配更大的部署规模,为运维工作提供了便利,提高了系统的整体承载能力,不仅适用于政务领域的大厅租户,还适用于其他需要多租户的应用模式。还适用于其他需要多租户的应用模式。还适用于其他需要多租户的应用模式。

【技术实现步骤摘要】
一种多大厅租户动态扩展系统及实现方法


[0001]本专利技术涉及政务服务
,特别涉及一种多大厅租户动态扩展系统及实现方法。

技术介绍

[0002]在政务服务领域,各类应用系统的基本粒度大致基于政务大厅进行划分。在这些系统的数据存储结构中,各个数据表一般会存在大厅ID这个字段来进行数据区分,并且所有的数据都存在于一个数据库中。当应用系统服务的应用规模有限,管理的大厅数量层级不高时,各种类型的数据库都可以承载其不停增长的大厅数据。当某些表的数据量超过数据库的单表承载能力时,才会对其进行水平分表的优化,这在一定程度上可以缓解数据量巨大对系统承载能力的压力。
[0003]但是随着近几年政务服务治理范围不断延伸,特别是向街道和社区延伸时,所需要管理的大厅数量呈级数增长,大厅的层级涵盖了省、市、区/县、街道/镇、社区/村五级,尤其是最后一级包括的大厅数量超过万级。例如,某省目前的规模下五级大厅数量超过6万多。这种现状下,各类应用系统的数据规模会非常庞大,各个数据表的数据量很轻易的就超过数据库单表性能上限,迫切的需要对数据进行切分,此时一般情况下开发者会对数据库进行分库分表或者切分应用为多个区域单独部署。
[0004]传统的分库方式有shardingjdbc、myCat、dynamicDatasource等,但是其只规定了分库模式使用方法。简易配置后Spring程序可以连接管理多个数据源,但是基于配置文件的方式非常笨重,且只有数据源的管理方式,数据的分片格式比较简易,不太适用于政务领域大厅相互隔离的情况。r/>[0005]基于上述情况,本专利技术提出了一种多大厅租户动态扩展系统及实现方法。

技术实现思路

[0006]本专利技术为了弥补现有技术的缺陷,提供了一种简单高效的多大厅租户动态扩展系统及实现方法。
[0007]本专利技术是通过如下技术方案实现的:
[0008]一种多大厅租户动态扩展系统,其特征在于:系统平台采用分布式架构,存储数据的数据层不限制数据源类型,同时系统维持一个公共数据源,采用dynamicDataSource分库方式为基础分库原理,实现数据库加载所有数据源,以便于扩容数据源;
[0009]所有的微服务极其负载均在配置文件中读取公共数据源中的数据源信息和大厅路由信息,大厅和数据源之间保持多对一的映射,使请求能够最终到达对应的节点数据源;
[0010]采用消息订阅机制,实现各个微服务及其各负载之间数据源增删改信息时的实时同步;
[0011]采用AOP(Aspect Oriented Programming,面向切面编程)切面和代码块,实现请求进入时数据源的切换,采用AOP技术实现多数据源时本地事务的管理和回滚。
[0012]该多大厅租户动态扩展系统,在整体结构上,采用1个公共库管理N个节点库,公共库中的数据源表持久化N个节点库的连接信息,支持节点库实现动态扩展,根据部署规模计算数据表的承载能力决定使用数据源的个数;
[0013]路由表持久化大厅和数据源的映射关系,支持大厅租户实现动态扩展,新入驻的大厅自行按照规则或者采用完全随机模式被分配到数据源中;
[0014]系统平台采用分布式架构,支持实现任意规模大小的部署模式。
[0015]该多大厅租户动态扩展系统,数据源管理上,抽象DataSourceProvider类作为数据源信息和路由信息的提供方,系统启动阶段初始化DataSourceHolder类时读取全部已入驻数据,放入Map集合中进行管理,后续数据源新增、移除以及修改均使用DataSourceHolder类对Map集合进行操作,后台管理平台提供数据源的基础维护功能。
[0016]使用Hikari作为数据源的连接池,信息维护包括连接池和驱动程序类。
[0017]路由策略上,采用大厅ID和数据源ID关联关系作为路由信息,初始化入驻大厅租户时将路由信息提交至平台管理员进行审核,并分配数据所属节点库;数据结构上,采用大厅ID作为路由主键,因而支持乱序分配大厅。
[0018]路由切换时,使用Spring框架的AOP技术对使用@DSR注解的方法体和类编织入切面处理方法;在编织入切面处理方法执行之前,解析读取路由请求携带的大厅ID信息,提供AbstractRoutingParamResolve接口作为参数解析器。
[0019]获取到大厅ID信息后,执行以下步骤:
[0020]步骤S1、根据大厅ID信息先从分布式缓存Redis中读取是否存在该大厅的路由信息,若不存在,则读取数据库中的路由信息表,若数据库中存在该大厅的路由信息,则缓存入Redis,并得到对应的数据源节点库编码;
[0021]步骤S2、根据得到的数据源节点库编码查询当前JVM虚拟机中是否已存在对应的数据源,如果不存在,则继续从分布式缓存Redis中读取数据源配置信息,如果分布式缓存Redis中也不存在对应的数据源配置信息,则读取数据库中的数据并缓存入Redis;
[0022]如果存在数据源配置,但本地没有管理,则先初始化数据源,切换至对应数据源并执行方法体,方法体执行结束后或者出现异常时,切回至原数据源;切换和切出对应的方法分别为push和poll方法,底层逻辑是Dqueue双端队列的出栈和入栈操作。
[0023]如果程序的执行过程中没有请求,或者定时任务执行时需要切换数据源,则使用Java中Resource接口实现,使用try包裹执行体,执行开始阶段new DsResource(String routerId)切换至目标数据源,在try

resource的自动完成阶段完成数据源的切出功能。
[0024]一种多大厅租户动态扩展系统的实现方法,其特征在于:包括以下步骤:
[0025]步骤S1、根据项目实际部署规模选择建设n个数据库,分布在不同的服务器上以减轻单一服务器上数据库的负载压力;
[0026]步骤S2、在运维阶段,梳理大厅信息进行入驻,入驻大厅信息存储在公共库中等待分配其所属的数据源;
[0027]步骤S3、分配未处理大厅的数据源支持数据正常流转进入,当需要变更存储的数据源时,重新配置所属数据源,对应的各个表中的数据将自动迁移至新数据源中,此事对应的大厅处于停止运行阶段;
[0028]步骤S4、应用平台建设完成后,用户触发的请求根据各个应用平台实际使用情况
以及携带的大厅ID,查询路由信息,根据路由信息切换至对应数据源处理数据。
[0029]该多大厅租户动态扩展系统的实现方法,使用开源的dynamicDataSource作为动态数据源的管理底层框架,其原理上依赖于Spring框架的AbstractRoutingDataSource类;作为实现动态数据源的核心类,DynamicRoutingDataSource类中使用Map集合模式维持所有数据源的连接信息,切换数据源就是在获取连接之前从Map集合中选择对应的数据源使用;
[0030]为了保证线程安全,本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种多大厅租户动态扩展系统,其特征在于:系统平台采用分布式架构,存储数据的数据层不限制数据源类型,同时系统维持一个公共数据源,采用dynamicDataSource分库方式为基础分库原理,实现数据库加载所有数据源,以便于扩容数据源;所有的微服务极其负载均在配置文件中读取公共数据源中的数据源信息和大厅路由信息,大厅和数据源之间保持多对一的映射,使请求能够最终到达对应的节点数据源;采用消息订阅机制,实现各个微服务及其各负载之间数据源增删改信息时的实时同步;采用AOP切面和代码块,实现请求进入时数据源的切换,采用AOP技术实现多数据源时本地事务的管理和回滚。2.根据权利要求1所述的多大厅租户动态扩展系统,其特征在于:在整体结构上,采用1个公共库管理N个节点库,公共库中的数据源表持久化N个节点库的连接信息,支持节点库实现动态扩展,根据部署规模计算数据表的承载能力决定使用数据源的个数;路由表持久化大厅和数据源的映射关系,支持大厅租户实现动态扩展,新入驻的大厅自行按照规则或者采用完全随机模式被分配到数据源中。3.根据权利要求2所述的多大厅租户动态扩展系统,其特征在于:数据源管理上,抽象DataSourceProvider类作为数据源信息和路由信息的提供方,系统启动阶段初始化DataSourceHolder类时读取全部已入驻数据,放入Map集合中进行管理,后续数据源新增、移除以及修改均使用DataSourceHolder类对Map集合进行操作;使用Hikari作为数据源的连接池,信息维护包括连接池和驱动程序类。4.根据权利要求3所述的多大厅租户动态扩展系统,其特征在于:路由策略上,采用大厅ID和数据源ID关联关系作为路由信息,初始化入驻大厅租户时将路由信息提交至平台管理员进行审核,并分配数据所属节点库;数据结构上,采用大厅ID作为路由主键,因而支持乱序分配大厅。5.根据权利要求4所述的多大厅租户动态扩展系统,其特征在于:路由切换时,使用Spring框架的AOP技术对使用@DSR注解的方法体和类编织入切面处理方法;在编织入切面处理方法执行之前,解析读取路由请求携带的大厅ID信息,提供AbstractRoutingParamResolve接口作为参数解析器。6.根据权利要求5所述的多大厅租户动态扩展系统,其特征在于:获取到大厅ID信息后,执行以下步骤:步骤S1、根据大厅ID信息先从分布式缓存Redis中读取是否存在该大厅的路由信息,若不存在,则读取数据库中的路由信息表...

【专利技术属性】
技术研发人员:张超赵绍祥陈兆亮迟钰沛
申请(专利权)人:浪潮软件股份有限公司
类型:发明
国别省市:

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

1