一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种跨应用多租户数据自动初始化处理系统的制作方法

2022-09-08 01:01:29 来源:中国专利 TAG:


1.本发明涉及数据处理技术领域,具体为一种跨应用多租户数据自动初始化处理系统。


背景技术:

2.第一种:jpa applicationrunner/commandlinerunner接口
3.jpa可以根据我们定义的@entity实体类,来自动生成表结构。在springboot jpa项目中,通过定义属性spring.jpa.generate-ddl的值来控制行为,通过定义属性spring.jpa.hibernate.ddl-auto来控制开关。
4.applicationrunner和commandlinerunner接口类似,接口表示当一个bean被加入一个容器中时执行其run方法。而spring会在项目启动时扫描并加载所有的bean,以此达到启动时触发我们的操作,在操作中可以进行一些初始化操作,例如初始化数据库、读取数据库加入缓存等;第二种:initializingbean接口
5.当一个bean在被beanfactory设置完全部属性后需要做出某种动作时,可以实现这个接口。比如执行自定义的初始化操作。
6.在致远当前业务场景,项目分设计态和发布态两种状态,在设计态进行项目的动态设计与生成,在发布态直接发布运行并使用,以上两种方案在单纯的项目运行发布可行,但致远多环境迁移、多租户个性初始化数据场景则不兼容。
7.第一个问题,设计态存在表结构频繁变更升级问题,每个snapshot版本都可能添加字段,修改字段,删除字段等ddl操作。
8.第二个问题,发布态的生产环境禁止直接执行ddl操作,必须导出ddl执行语句进行dba审核,审核通过后才可以执行。
9.第三个问题,租户数据存在跨应用关联情况,在a应用初始化一条租户数据,数据中外键可能指向另外一个微服务应用的另一条初始化记录,并且两个微服务的数据都是在一次初始化操作时同时进行,id都是运行时才能确认。
10.第四个问题,初始化数据包含一些前端静态文件,需要上传obs/oss等共享存储,之后把storagekey作为初始化数据的字段内容进行初始化,storagekey也是运行时上传之后才能确认。
11.第五个问题,初始化操作前后需要提供一些扩展点,在完成初始化之前或之后可以触发其他操作。
12.第六个问题,每个微服务都需要进行初始化操作,因此需要做成一个通用组件,避免每个微服务应用重复造轮子。


技术实现要素:

13.本发明的目的在于提供一种跨应用多租户数据自动初始化处理系统,以解决上述背景技术中提出的问题。
14.为实现上述目的,本发明提供如下技术方案:一种跨应用多租户数据自动初始化处理系统,包括数据初始化组件,数据初始化组件包括触发模式模块、初始化功能模块和扩展功能模块。
15.优选的,所述触发模式模块包括启动触发单元和调用触发单元。
16.优选的,所述初始化功能模块包括ddl初始化单元、dml初始化单元、obs/oss初始化单元、entity数据初始化单元。
17.优选的,所述扩展功能模块包括ddl前置钩子、ddl后置钩子、entity前置钩子和entity后置钩子。
18.优选的,一种跨应用多租户数据自动初始化处理系统的方法,包括如下步骤:自动生成ddl和dml语句,非生产环境自动执行表的创建与修改,生产环境则发送给dms系统进行ddl和dml语句审核与数据库备份,之后定时执行。
19.与现有技术相比,本发明的有益效果是:本发明的核心业务在boot-start-datainit的run()中执行,而触发run操作的扩展点可以是任意扩展点,比如我们可以使用mq的方式通知a微服务执行租户id为339的数据初始化操作,也可以使用dubbo调用的方式触发,甚至可以把本组件嵌入其他语言开发的项目,使用jar-jar的方式调用main方法触发,现多租户初始化使用相同数据模型,并且可做到跨微服务的id映射关系保留的能力。
附图说明
20.图1为本发明数据初始化组件的技术架构图;
21.图2为本发明数据初始化组件定义的功能原理图;
22.图3为本发明初始化操作的时序图。
具体实施方式
23.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“前端”、“后端”、“两端”、“一端”、“另一端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
25.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
26.请参阅图1-3,本发明提供一种技术方案:一种跨应用多租户数据自动初始化处理系统,包括数据初始化组件,数据初始化组件包括触发模式模块、初始化功能模块和扩展功
能模块。
27.本发明中,所述触发模式模块包括启动触发单元和调用触发单元。
28.本发明中,所述初始化功能模块包括ddl初始化单元、dml初始化单元、obs/oss初始化单元、entity数据初始化单元。
29.本发明中,所述扩展功能模块包括ddl前置钩子、ddl后置钩子、entity前置钩子和entity后置钩子。
30.本发明中,一种跨应用多租户数据自动初始化处理系统的方法,包括如下步骤:自动生成ddl和dml语句,非生产环境自动执行表的创建与修改,生产环境则发送给dms系统进行ddl和dml语句审核与数据库备份,之后定时执行。
31.本发明基于springboot的initializingbean接口扩展点,触发run操作,在操作中完全由自己实现数据的自定义初始化操作:比如entity初始化文件的依赖排序,比如跨微服务外键统一映射更新,比如预置文件先上传,返回storagekey后再初始化到entity具体字段等能力。
32.综上所述,本发明的核心业务在run中执行,而触发run操作的扩展点可以是任意扩展点,比如我们可以使用mq的方式通知a微服务执行租户id为339的数据初始化操作,也可以使用dubbo调用的方式触发,甚至可以把本组件嵌入其他语言开发的项目,使用jar-jar的方式调用main方法触发,现多租户初始化使用相同数据模型,并且可做到跨微服务的id映射关系保留的能力。
33.需要说明的是,在本文中,诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
34.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献