作者:柳辰光 | 来源:互联网 | 2023-09-24 13:13
一、背景在一些工程中,从DB加载数据方式基本都是一样,但是各处分散,互不复用。所以,诞生了一个数据加载通用方案,旨在使用方便,提高开发效率和性能。二、框架简介语言:纯Java开发定
一、背景
在一些工程中,从DB加载数据方式基本都是一样,但是各处分散,互不复用。所以,诞生了一个数据加载通用方案,旨在使用方便,提高开发效率和性能。
二、框架简介
语言:纯Java开发
定位:应用在启动时全量加载DB数据,在运行中增量加载到内存做处理。 一个简单的数据加载框架。
三、工作原理
原理描述:
1、基于注解,以及Spring的 BeanPostProcessor完成对象实例化、配置、初始化之后放入内存缓存***第2步使用。
2、基于Spring 的 SmartLifecycle ,当Spring容器加载所有bean并完成初始化之后,会接着回调实现该接口中对应的方法,该方法中便实现了全量加载的逻辑。
四、多机房、多节点数据校验功能
原理描述:
1、在每个job数据加载完毕后会往record表中插入一条消息记录,消息内容就是数据加载的:应用ID(applicationID)+应用名(applicationName)+节点(IP)+数据加载类的全路径(classPath)、加载数据数目、加载类型、加载时间、耗时等信息。
2、用户在打开的页面刷新即可获取数据加载详情。
3、采用异步插入的方式是为了不影响应用正常启动的速度。
第三方工程接入系统要求:
应用的application.yml 或者application.properties需要有applicationID以及applicationName两个属性以便在portal系统查看。Pom加入依赖。
六、补充说明
1、关于全量定时加载
因为bean均为Elastic Job的Job实例,所以,在运行中可根据配置的cron表达式进行定时加载,此时前置依赖的关系已经变得不重要了,因为在启动的时候已经有加载过,如果有非常强的实时性依赖,业务中可自行根据业务条件来保证。
(增量定时加载同理)
解决方案:业务自行保证
2、关于全量前置依赖中的异步任务
因为框架设计要简单些,就不嵌入代码到业务类使用观察者模式通知依赖方的模式,所以这个框架无法保证你前置依赖任务中的异步任务是否执行完毕。
解决方案:如果前置依赖中有异步任务,请保证异步任务执行完毕后再return。