前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于spring boot注解的mysql通用数据加载方案的简单实现

基于spring boot注解的mysql通用数据加载方案的简单实现

作者头像
MickyInvQ
发布2020-09-27 10:52:05
3110
发布2020-09-27 10:52:05
举报
文章被收录于专栏:InvQ的专栏InvQ的专栏
一、背景

在一些工程中,从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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、框架简介
  • 三、工作原理
    • 原理描述:
    • 四、多机房、多节点数据校验功能
      • 原理描述:
      • 六、补充说明
        • 1、关于全量定时加载
          • 2、关于全量前置依赖中的异步任务
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档