数据同步通用框架说明

框架说明

数据同步工具用来对两个系统或者多个系统的数据进行同步处理,框架能够实现项目开发人员只需配置两边系统需的业务数据,不需要关系数据是如何实现同步的,框架底层数据传输技术使用淘宝的开源框架metamorphosis简称metaQ,该框架是使用观察者的设计模式来处理数据的中间介,发送端只需将数据发送到服务器,接收端进行监听,一旦有新数据,就立刻可以接收到。

框架结构

系统常量中设置一些公用的常量,例如文件每次传输的大小,文件存放的路径,项目的路径等。

数据库工具类主要封装了一些基本的数据库操作。

业务枚举,主要包括数据传输方式,错误标记,业务类型,所属系统等等。

框架接口主要定义了一些针对框架配置进行处理的操作,例如获得标记池数据,打包数据等等。

MetaQ处理类,主要包含metaQ的实现方式-消息生产者、消息消费者。

定时服务程序,用来定时执行框架需要执行的操作。主要包括扫描标记池、监听服务端数据。
         业务线程,分为普通数据发送线程,文件发送线程,普通数据接收线程,文件接收线程

工具类,主要封装了一些常用的操作类,例如,文件处理类、json处理类,zip压缩解压处理类等。

详细说明

定时服务

用于定时执行需要实现的业务

分为数据发送线程、数据接收线程、文件发送线程、文件接收线程

数据发送线程

定时的从标记池中获取相应业务需要处理的数据,通过数据同步业务配置表中根据sql查出需要打包的数据,并根据规定打包格式进行打包发送数据,如果数据发送成功,更新标记池数据,该条记录设为已同步,否则,下次继续执行

数据接收线程

定时的从服务器中获取业务端发送成功的数据,进行解包处理,这里的接收线程属于监听线程,其中messge.getPartition().setAutoAck(false) 用来设置接收数据是否自动提交,如果自动提交,不论后面处理成功或者失败,都获取不到此条数据,如果为不自动提交,用户可以根据自己的需求来确定下次是否获取此条数据,这里准备设置为自动条件,错误数据进行日志记录。

文件发送线程

定时的从标记池中获取相应业务需要处理的数据,通过数据同步业务配置表中根据sql和模版配置查出需要传输的文件位置进行统一打包,并根据规定打包格式进行打包发送数据,数据发送采用已字节流的方式进行分块传输,如果数据发送成功,更新标记池数据,该条记录设为已同步,否则,下次继续执行

文件接收线程

定时的从服务器中获取业务端发送成功的数据,进行解包处理,这里的接收线程属于监听线程,其中messge.getPartition().setAutoAck(false) 用来设置接收数据是否自动提交,如果自动提交,不论后面处理成功或者失败,都获取不到此条数据,如果为不自动提交,用户可以根据自己的需求来确定下次是否获取此条数据,这里准备设置为自动条件,错误数据进行日志记录,文件接收采用追加写文件的方式,直至文件接收完毕再进行处理。

MetaQ 处理

普通生产者(Producer)

生产者可以向服务器中存在的任意topic中发送消息,供生产者使用,这里的sessionFactory和Producer建议使用单例,不然会出现问题

普通消费者(Consumer)

消费者可以从服务器上存在的topic中获取信息,这里使用的是异步获取,即获取完一条数据之后,如果客户端Consumer设置自动提交,下次获取,此条记录将获取不到,这里的sessionFactory和Consumer建议使用单例,不然会出现问题

文件生产者(FileProducer)

文件消费者(FileAsyncConsumer)

所需数据结构

标记池

存放业务端需同步的数据

日志表

记录接收错误数据

系统参数配置

用来通过业务端发送的业务ID来对业务端系统进行传输数据传输和处理,此表需对业务端数据库进行操作

业务参数配置

用来设置相应的系统业务是否需进行同步,并关联到metaQ相关配置

底层参数配置

用来配置metaQ相关配置,包括主题和分组

打包格式

1、普通同步数据

{sys:XXXX, type:XXXX, signId:XXXX,data[{XXX},{}…..]}

2、文件同步数据

{sys:XXXX, type:XXXX,signId:XXXX,data[{XXX},{}…..]}

错误数据处理

消费端接收的数据处理失败时,错误数据需进行日志记录,需要求发送端进行数据重传,具体操作为单独创建错误数据处理通道,进行错误信息的传输,实施类似普通消息的发送,接收。

1、  现在主要为通过SQL执行错误来判断数据的正确性

2、  后期可以考虑通过验证数据格式的正确性来判断

使用说明

MetaQ服务器部署

MetaQ是建立在zookeeper之上的中间介,所以要使用MetaQ,必须搭建zookeeper服务环境,从官网上下载安装程序包

直接解压文件到指定目录,执行bin目录下的zkServer.cmd,启动服务

MetaQ也一样,从官网上下载安装包

解压文件,执行bin目录下的metaServer.bat启动服务

MetaQ和zookeeper都包含windows和Linux的两个版本,目前最新版本必须使用JDK1.6版本。

具体的MetaQ 和zookeeper的相关配置需要参照官方文档

定时服务部署

系统完成后,将系统工程打包成相应的jar 文件,并使用bat文件进行项目的自动启用

定时服务使用

如果需要使用同步框架,用户需要将框架相关数据表导入系统(当然也可以采用其他方案),主要包含,业务参数配置表、数据同步配置表、数据标记池表和数据接收日志表

用户需配置业务参数配置表和数据同步配置表,并将需要传输的数据安装格式存入数据同步标记池中。业务参数配置中消息主题需要在服务端有相应的配置。

另外要根据MetaQ服务器存放的位置,相应的修改客户端的IP和端口

MetaQ 简单使用(数据同步框架)相关推荐

  1. 数据同步框架MS Sync Framework-不同场景使用例子和简要分析

    上一篇http://www.cnblogs.com/2018/archive/2011/02/22/1961654.html 对这个框架一个总体介绍,这篇通过SDK内带的例子和一个综合的例子描述一下这 ...

  2. 离线数据同步神器:DataX,支持几乎所有异构数据源的离线同步到MaxCompute

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 概述 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlSer ...

  3. datax 导入数据中文乱码_浅谈数据同步之道

    数据同步,顾名思义就是不同系统的数据进行同步处理.而业务系统所涉及的数据库同步是重中之重,虽然大部分数据库都提供了导入导出的工具,但是数据存储到各个地方,Hive.Hbase.MySQL.Oracle ...

  4. datax 定时执行多个job_数据同步神器Datax源码重构

    每日一句永远不要认为我们可以逃避, 我们的每一步都决定着最后的结局, 我们的脚步正在走向我们自己选定的终点.Do not ever think about that we can escape , o ...

  5. 离线数据同步平台datax+报表可视化平台metabase

    datax DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.TableS ...

  6. MYSQL数据同步到ES7

    ** 概述 ** 现在的项目数据量越来越大,全文检索功能使用场景也越来越普遍. 而我们一般的生产数据是在mysql,或其它一些数据库, 我们的产品数据就是mysql,而又要使用全文检索, 所以要把my ...

  7. 如何利用DTS数据同步功能,快速创建数据同步作业

    数据传输服务DTS(Data Transmission Service)提供的数据同步功能简单易用,您只需在控制台上进行简单操作,即可完成整个数据同步作业的配置. 注意事项 本文仅简单介绍数据同步作业 ...

  8. datax实现mysql数据同步

    前言 DataX 是阿里内部广泛使用的离线数据同步工具/平台,可以实现包括 MySQL.Oracle.HDFS.Hive.OceanBase.HBase.OTS.ODPS 等各种异构数据源之间高效的数 ...

  9. 异构数据库数据同步工具DataX教程,安装、数据同步、java执行

    前言 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.TableStor ...

最新文章

  1. python 回溯法 01背包问题_Python回溯法解决01背包问题
  2. Altium Designer09解决局域网冲突问题
  3. SQL_由创建表引出
  4. 【视频课】言有三每天答疑,38课深度学习+超60小时分类检测分割数据算法+超15个Pytorch框架使用与实践案例助你攻略CV...
  5. gorm一对一 一对多 多对多查询案例
  6. 父亲节python代码_python 计算 父亲节
  7. pythonasyncio并发编程实战_python异步编程之asyncio(百万并发)
  8. Element ui select同时获取value和label的值
  9. pycharm中的settings没有latest version_k8s集群中pod镜像版本检查
  10. php+mysql+apache 环境搭建
  11. cygwin内子目录及其文件删除不掉,出现access deny错误
  12. mysql-笔记-命名、索引规范
  13. No module named scrapy 成功安装scrapy,却无法import的解决方法
  14. 王者荣耀ai视频战报ai剪辑生成方法
  15. 大学excel题库含答案_2017excel试题库附答案.doc
  16. Linux 挂载 IP SAN
  17. web开源FlowPlayer视频播放器
  18. Layui页面元素之导航
  19. 广东理工学院计算机组成原理,20年广东理工学院成人高考期末考试 计算机组成原理 复习资料(7页)-原创力文档...
  20. MySQL中的各种查询

热门文章

  1. Luogu P2751 [USACO4.2]工序安排Job Processing
  2. VBA小模板:一个普通随机抽奖,需要模拟多轮用VBA怎么做?
  3. python字符串截取规则_Python字符串截取
  4. 孤独和寂寞也是一种美
  5. 你只会用 split?试试 StringTokenizer,性能可以快 4 倍!!
  6. Intellij Idea创建maven项目,App.java代码编辑区没有run选项
  7. 虚拟机克隆 将虚拟机导出为 OVF 格式
  8. 为什么大家都说别去外包?外包公司到底能不能去?
  9. csdn首篇笔记——关于笔记本身
  10. 企业微信寄件审批教程