一种跨应用多租户数据自动初始化处理系统技术方案

技术编号:34853051 阅读:47 留言:0更新日期:2022-09-08 07:53
本发明专利技术公开了一种跨应用多租户数据自动初始化处理系统,包括数据初始化组件,数据初始化组件包括触发模式模块、初始化功能模块和扩展功能模块。本发明专利技术的核心业务在boot

【技术实现步骤摘要】
一种跨应用多租户数据自动初始化处理系统


[0001]本专利技术涉及数据处理
,具体为一种跨应用多租户数据自动初始化处理系统。

技术介绍

[0002]第一种:JPA+ApplicationRunner/CommandLineRunner接口
[0003]JPA可以根据我们定义的@Entity实体类,来自动生成表结构。在SpringBoot+JPA项目中,通过定义属性spring.jpa.generate

ddl的值来控制行为,通过定义属性spring.jpa.hibernate.ddl

auto来控制开关。
[0004]ApplicationRunner和CommandLineRunner接口类似,接口表示当一个bean被加入一个容器中时执行其run方法。而Spring会在项目启动时扫描并加载所有的bean,以此达到启动时触发我们的操作,在操作中可以进行一些初始化操作,例如初始化数据库、读取数据库加入缓存等;第二种:InitializingBean接口
[0005]当一个Bean在被BeanFactory设置完全部属性后需要做出某种动作时,可以实现这个接口。比如执行自定义的初始化操作。
[0006]在致远当前业务场景,项目分设计态和发布态两种状态,在设计态进行项目的动态设计与生成,在发布态直接发布运行并使用,以上两种方案在单纯的项目运行发布可行,但致远多环境迁移、多租户个性初始化数据场景则不兼容。
[0007]第一个问题,设计态存在表结构频繁变更升级问题,每个SNAPSHOT版本都可能添加字段,修改字段,删除字段等DDL操作。
[0008]第二个问题,发布态的生产环境禁止直接执行DDL操作,必须导出DDL执行语句进行DBA审核,审核通过后才可以执行。
[0009]第三个问题,租户数据存在跨应用关联情况,在A应用初始化一条租户数据,数据中外键可能指向另外一个微服务应用的另一条初始化记录,并且两个微服务的数据都是在一次初始化操作时同时进行,ID都是运行时才能确认。
[0010]第四个问题,初始化数据包含一些前端静态文件,需要上传OBS/OSS等共享存储,之后把storageKey作为初始化数据的字段内容进行初始化,storageKey也是运行时上传之后才能确认。
[0011]第五个问题,初始化操作前后需要提供一些扩展点,在完成初始化之前或之后可以触发其他操作。
[0012]第六个问题,每个微服务都需要进行初始化操作,因此需要做成一个通用组件,避免每个微服务应用重复造轮子。

技术实现思路

[0013]本专利技术的目的在于提供一种跨应用多租户数据自动初始化处理系统,以解决上述
技术介绍
中提出的问题。
[0014]为实现上述目的,本专利技术提供如下技术方案:一种跨应用多租户数据自动初始化处理系统,包括数据初始化组件,数据初始化组件包括触发模式模块、初始化功能模块和扩展功能模块。
[0015]优选的,所述触发模式模块包括启动触发单元和调用触发单元。
[0016]优选的,所述初始化功能模块包括DDL初始化单元、DML初始化单元、OBS/OSS初始化单元、Entity数据初始化单元。
[0017]优选的,所述扩展功能模块包括DDL前置钩子、DDL后置钩子、Entity前置钩子和Entity后置钩子。
[0018]优选的,一种跨应用多租户数据自动初始化处理系统的方法,包括如下步骤:自动生成DDL和DML语句,非生产环境自动执行表的创建与修改,生产环境则发送给DMS系统进行DDL和DML语句审核与数据库备份,之后定时执行。
[0019]与现有技术相比,本专利技术的有益效果是:本专利技术的核心业务在boot

start

datainit的run()中执行,而触发run操作的扩展点可以是任意扩展点,比如我们可以使用MQ的方式通知A微服务执行租户ID为339的数据初始化操作,也可以使用dubbo调用的方式触发,甚至可以把本组件嵌入其他语言开发的项目,使用jar

jar的方式调用main方法触发,现多租户初始化使用相同数据模型,并且可做到跨微服务的ID映射关系保留的能力。
附图说明
[0020]图1为本专利技术数据初始化组件的技术架构图;
[0021]图2为本专利技术数据初始化组件定义的功能原理图;
[0022]图3为本专利技术初始化操作的时序图。
具体实施方式
[0023]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0024]在本专利技术的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“前端”、“后端”、“两端”、“一端”、“另一端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本专利技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本专利技术的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0025]在本专利技术的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本专利技术中的具体含义。
[0026]请参阅图1

3,本专利技术提供一种技术方案:一种跨应用多租户数据自动初始化处理系统,包括数据初始化组件,数据初始化组件包括触发模式模块、初始化功能模块和扩展功
能模块。
[0027]本专利技术中,所述触发模式模块包括启动触发单元和调用触发单元。
[0028]本专利技术中,所述初始化功能模块包括DDL初始化单元、DML初始化单元、OBS/OSS初始化单元、Entity数据初始化单元。
[0029]本专利技术中,所述扩展功能模块包括DDL前置钩子、DDL后置钩子、Entity前置钩子和Entity后置钩子。
[0030]本专利技术中,一种跨应用多租户数据自动初始化处理系统的方法,包括如下步骤:自动生成DDL和DML语句,非生产环境自动执行表的创建与修改,生产环境则发送给DMS系统进行DDL和DML语句审核与数据库备份,之后定时执行。
[0031]本专利技术基于Springboot的InitializingBean接口扩展点,触发run操作,在操作中完全由自己实现数据的自定义初始化操作:比如Entity初始化文件的依赖排序,比如跨微服务外键统一映射更新,比如预置文件本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种跨应用多租户数据自动初始化处理系统,其特征在于:包括数据初始化组件,数据初始化组件包括触发模式模块、初始化功能模块和扩展功能模块。2.根据权利要求1所述的一种跨应用多租户数据自动初始化处理系统,其特征在于:所述触发模式模块包括启动触发单元和调用触发单元。3.根据权利要求1所述的一种跨应用多租户数据自动初始化处理系统,其特征在于:所述初始化功能模块包括DDL初始化单元、DML初始化单元、OBS/OSS初始化单元、Entity数...

【专利技术属性】
技术研发人员:李进庄谭敏锋
申请(专利权)人:北京致远互联软件股份有限公司
类型:发明
国别省市:

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

1