MetaQ 简单使用(数据同步框架)

数据同步通用框架说明

框架说明


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

框架结构

 

 

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

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

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

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

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

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

工具类,主要封装了一些经常使用的操做类,例如,文件处理类、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相关配置,包括主题和分组

打包格式

一、普通同步数据

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

二、文件同步数据

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

错误数据处理

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

一、  如今主要为经过SQL执行错误来判断数据的正确性

二、  后期能够考虑经过验证数据格式的正确性来判断


使用说明

MetaQ服务器部署

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


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



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


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


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

 

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

定时服务部署

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


定时服务使用

若是须要使用同步框架,用户须要将框架相关数据表导入系统(固然也能够采用其余方案),主要包含,业务参数配置表、数据同步配置表、数据标记池表和数据接收日志表

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

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

 

相关文章
相关标签/搜索