1 数据同步接口--需求分析
业务场景:
一般系统,多数会与第三方系统的数据打交道,而第三方的生产库,并不允许我们直接操作。
在企业里面,一般都是通过中间表进行同步,即第三方系统将生产数据放入一张与其生产环境隔离的另一个独立的库中的独立的表,
再根据接口协议,增加相应的字段。而我方需要读取该中间表中的数据,并对数据进行同步操作。
此时就需要编写相应的程序进行数据同步。
数据同步一般分两种情况
全量同步:每天定时将当天的生产数据全部同步过来(优点:实现简单 缺点:数据同步不及时)
增量同步:每新增一条,便将该数据同步过来(优点:数据近实时同步 缺点:实现相对困难)
我方需要做的事情:
读取中间表的数据,并同步到业务系统中(可能需要调用我方相应的业务逻辑)
模型抽离
生产者消费者模型
生产者:读取中间表的数据
消费者:消费生产者生产的数据
接口协议的制定
1.取我方业务所需要的字段
2.需要有字段记录数据什么时候进入中间表
3.增加相应的数据标志位,用于标志数据的同步状态
4.记录数据的同步时间
技术选型:
mybatis、单一生产者多消费者、多线程并发操作
2、生产者代码实现
1:分批读取中间表(10I),并将读取到的数据状态修改为10D(处理中)
2:将相应的数据交付给消费者进行消费
1:把生产完的数据,直接放到队列里,由消费者去进行消费
2:把消费者放到队列里面,生产完数据,直接从队列里拿出消费者进行消费
项目结构:
busi ---生产者与消费者接口
busiImpl --实现类
consts --处理状态变量
datasource --数据源
main --启动线程池
middle --第三方表的mapper类与实体
our --后台的mapper类与实体
thread --生产者与消费者
util --获取session工具类