数据交换平台的需求总结与初步设计
一、 需求总结
功能性需求:
1、 从某时刻开始,转储某些特定的表。开始时间、时间频率、表字段、源表和目的表执行前后sql语句等数据可配置。
2、 转储频率可以自由设定,时间精确到秒级,任务精确到表。
3、 满足多个表捆绑在一起,按既定的先后顺序执行。避免由于数据不一致性给后续工作带来的影响。
4、 实时控制每一个表是否转储,暂停或开始。并且不影响其他数据表转储。
5、 转储过程中,可以按照既定的配置,对某个或某些字段进行加密或解密。
6、 各个表的转储要求互相独立,互不影响。
7、 源数据库和目的数据库均支持mysql和oracle,留接口扩展其他数据源。
8、 添加一个表的转储工作,要求只修改配置数据,不修改软件代码,或重启软件。(测试手段 配置数据是否完整,执行测试结果)
9、 对各个数据库的操作,只使用链接,保证db账号密码的安全不泄露。
10、 支持程序参数,只执行某个任务号下的某个或某些表的转储工作。
11、 转储表结束后,记录日志到配置数据库proc_use_times表,方便开展后续工作。(添加为可配置)
12、 实时监控表转储情况,并且,需要向技术人员下发每日提醒短信。(转储程序生成转储提醒日志,监控程序解析日志,并下发短信)
13、 软件日志记录全面准确,方便维护人员查阅和排错。
性能需求:
14、 数据实时交换平台的定位,是业务流转的一部分。对业务来讲,是承上启下的一部分,以数据准确为根本原则。数据定时转储的定位,是数据备份、数据统计分析的一部分。
15、 对实时转储工作的完成,要求准时、准确、高效、稳定,容错性能高。
16、 错误处理机制完备,尽可能减少对业务的影响。
# 上线前,完成大数据量测试和各种功能测试,尽可能减少上线后问题的出现。
# 实时转储过程中,如果某任务转储失败,则保留处理现场,并立刻通知相关人员处理。当前任务不再继续执行。
二、数据库设计
源表要求:
字段1 |
。。。 |
字段N |
sync_status |
扩展一个控制字段sync_status,协助实时转储使用。
sync_status:默认值为0。
0表示未转储,1表示转储中,2表示转储成功,3表示转储失败。
三、软件设计
A. 各模块功能简单介绍:
控制进程 -- 取配置数据,初始化共享内存,管理多个任务进程。
任务进程 – 通过共享内存与控制进程通信。ssync2o、ssync2m(控制进程fork出任务进程)
写入进程 – 由任务进程fork产生。写入目的库完成后退出(最多10个)。
共享内存 – 执行时动态数据、任务详细参数
配置数据库 – 配置数据所在数据库
源数据库 – 源数据表所在数据库
目的数据库 – 目的数据库所在数据库
进程守护脚本 – 守护控制进程。在控制进程异常时,将其启动,并报警。1分钟检查一次。
日志打包脚本– 每天凌晨打包昨天日志并转移。打包后的日志只保存最近3个月。
任务监控进程– 通过读取共享内存,整理每天转储简报,通知相关同事。
任务实时数据展示程序– 通过共享内存,实时展示任务执行情况,或查看历史任务执行情况。
退出程序 – 控制信号灯,达到退出控制进程的目的。
数据库连接池维护进程– 以启动进程的方式,为本操作系统的应用进程提供连接数据库服务。达到统一管理,最优化分配资源的目的。(先期考虑使用lib文件,后续在升级为服务)
lib文件 – libPassWord.a、libxxtencrypt.a(已实现)
数据库配置过程 – 修改现有的过程,完成对实时转储任务的添加。后续考虑用可视化界面实现。
B. 主进程操作步骤:
1、 启动控制进程,读取以上8张配置表,将数据组织到共享内存中。此后,定时每小时读取T_EXTRACTION_TASK表中IS_ADD_DEL=1或2的任务,添加或删除到调度队列,并更新IS_ADD_DEL=0。
2、 为每一个调度添加一个属性:下次执行时间和执行状态。初始值为当前时间加上时间频率。
3、 遍历调度队列。遍历结束后,sleep(1)。
4、 当某调度的下次执行时间大于当前时间时,fork任务进程执行任务的实时转储。(fork两次,避免生成僵尸进程。任务进程执行任务结束后,通过共享内存返回执行结果。)
5、 任务进程按照配置信息,执行任务,完成之后退出。
6、 控制进程更新调度下次执行时间为+=时间频率。
7、 执行操作3。
备注:
# 当前时间、下次执行时间、时间频率:单位为秒。
# 程序初次启动:指程序自启动后,未读取配置数据。
# 控制进程和任务进程,通过共享内存通信。
# 调度的下次执行时间严格按照时间频率向后推移。
# 调度与任务是一对多的关系。一个调度下的任务,顺序执行。不同调度下的任务,异步执行。
# 调度的关键属性:下次执行时间、时间频率
# 任务的关键属性:任务状态(0未执行,1执行中,2执行完毕),任务类型(1--ssync2o、2--ssync2m)
C. 子任务转储步骤:
1、 当任务信号灯打开,从共享内存中获取任务数据。校验数据是否合理有效。
2、 初始化任务执行环境,如:创建配置数据库连接、源数据库连接、目的数据库连接等。
3、 更新配置数据库task_detail表中子任务锁。如果已锁,则停止转储。
4、 执行子任务前sql,包括源数据库和目的数据库。(将源表sync_status=0的数据更改为1)
5、 读取源表中sync_status=1的行数据,合理组织源表数据。
6、 根据配置要求,对源表数据分批写入目的库。通过Fork子进程实现。
7、 根据配置要求,子进程对数据做相应特殊加工处理,如:加解密。处理完成之后,写入目的数据库。
8、 父进程继续操作6.
9、父进程通过共享内存获得子进程转储执行情况,更新源表数据:sync_status=2(成功)或3(失败)。
10、执行子任务后sql,包括源数据库和目的数据库。
11、更新配置数据库子任务锁。
12、打扫现场,释放资源。继续操作1。
目的表不包含这控制字段:sync_status。
D. 共享内存
任务详细参数的共享内存结构:
要需包含:配置表的数据,即任务的详细信息,包含源库id、目的库id,源表名称和表结构,目的表名称和表结构,执行前后sql,等。
数据交换平台的需求总结与初步设计相关推荐
- 数据交换平台的双内存设计
一.数据交换平台 数据交换平台的项目目的,就是为了解决异构数据库之间的数据交换问题. 这个平台的设计,参考了淘宝开源的DataX.大众点评的Wormhole,等,受到的启发很大. 项目由小到大,逐步形 ...
- (神州优车)数据交换平台架构分享
一.数据交换平台定义(百度百科) 数据交换平台是指将分散建设的若干应用信息系统进行整合,通过计算机网络构建的信息交换平台,它使若干个应用子系统进行信息/数据的传输及共享,提高信息资源的利用率,成为进行 ...
- 协同数据交换平台详细设计方案(word)
本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 1 架构设计 1.1 总体架构 协同数据交换平台利用企业服务总线.数据抽取ETL.消息中间件.大文件传输等相关技术,包括文件适配器.数据 ...
- 达梦数据交换平台软件DMETL部署
一.DMETL介绍 达梦数据交换平台(简称DMETL)是在总结了众多大数据项目经验和需求并结合最新大数据发展趋势和技术的基础上,自主研发的通用的大数据处理与集成平台. DMETL创新地将传统的ETL工 ...
- (13)达梦DMETL数据交换平台技术原理及应用介绍
在上一篇博客里,我们对达梦DMHS进行了动手部署实践.本篇文章主要是对达梦DMETL数据交换平台系统框架及核心功能组件等技术方面的学习分享. 一.数据实时同步软件(DMETL)简介 达梦数据交换平台( ...
- Z平台-数据交换平台应用
各位同学,大家好.经常有朋友问我如何利用Z平台快速对接其它系统平台,并完成数据交换方面的相关任务,因此,今天我就为大家讲解一下利用Z平台是如何完成这种需求开发的. 当前中小企业IT系统建设的现状是,大 ...
- 数据交换平台的架构设计
序言 说到架构设计,不敢妄自牛逼.只能默默地向Linux致敬,没有强大的linux系统,我们做的架构设计,做的程序一天说不定挂几次.(windows系统就不说了,呵呵) 数据交换平台的架构发展 架构不 ...
- 利用数据交换平台打通数据治理脉络
11月1日,Informatica举办了网络会议<Informatica数据交换平台主要特性及案例分享>,本文根据Informatica 资深技术顾问续岩演讲内容整理而来. 续岩 Info ...
- 数据交换平台_从零开始理解大数据架构之数据交换平台
项目简介 Exchangis是一个轻量级的.高扩展性的数据交换平台,支持对结构化及无结构化的异构数据源之间的数据传输,在应用层上具有数据权限管控.节点服务高可用和多租户资源隔离等业务特性,而在数据层上 ...
最新文章
- PreTranslateMessage作用和使用方法
- 软件质量测试计划,软件质量管理之测试计划(上)
- 如何更合理地选择图表形式
- .netcore 2.0 mysql_搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi
- 微信小程序 购物车代码
- 并行程序设计导论pdf电子书_并行程序设计导论
- Xshell+Xftp 下载安装步骤
- 数据介绍 | 长序列归一化植被指数NDVI
- 逻辑或( || )和逻辑与( )的关系
- TortoiseSVN汉化教程
- 电源过冲怎么测试软件,【经验】以DL3000电子负载为例,3分钟学会一个电源动态响应测试技巧...
- ios云信不能全屏_网易云信-新增自定义消息(iOS版)
- 数字签名、电子签名与电子合同
- proxy 状态代码503_HTTP状态503错误代码及其解决方法?
- Linux中的ko怎么玩?
- Android读ipconfig.txt配置文件乱码
- Velo项目评级:BB,展望稳定 | TokenInsight
- 什么是看门狗(watchdog)
- Direct3D 10系统(一)
- 点击图片放大预览,遮罩屏幕放大展示