[发明专利]一种数据同步方法及系统在审
申请号: | 201810488892.2 | 申请日: | 2018-05-21 |
公开(公告)号: | CN108769172A | 公开(公告)日: | 2018-11-06 |
发明(设计)人: | 袁奎 | 申请(专利权)人: | 杭州有赞科技有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;G06F17/30 |
代理公司: | 杭州裕阳联合专利代理有限公司 33289 | 代理人: | 姚宇吉 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据同步 操作日志 时间信息 递增 监听数据库 递增序列 公用组件 生成数据 数据变更 消息队列 消息投递 序列信息 周期更新 存储 变更 记录 保证 维护 | ||
本发明公开了一种数据同步方法及系统,其中方法包括:利用公用组件监听数据库的操作日志,进而对监听到的操作日志增加包含时间信息和序列信息的版本号,以生成数据变更消息;最后将生成的所述数据变更消息投递到消息队列中,进行存储。本发明利用时间信息和周期更新的递增序列来维护一个递增的版本号,从而保证同一条记录的多个操作的版本号是递增的,实现数据同步的一致性。
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据同步方法及系统。
背景技术
计算机系统中,传统的数据同步方法主要有以下两种:一种是通过定时任务以及数据库的update_time字段定时把最近时段的更新数据同步到指定存储中。这种方式的数据同步在分钟级,实时性较差。另一种是通过接受数据库的binlog,将每条数据直接写入到目标存储。这种方式数据写入性能太差,因为每一个mysql(关系型数据库管理系统)实例,仅有一个消费程序,如果一条记录写入需要50ms,那么一秒钟最多只能写入20条数据。对于mysql数据,一秒钟大于20条更新,那么消费方的数据就会慢慢延迟。而实际在大部分应运场景下,1秒钟更新条数都是远远大于20条的。
采用多线程可以提升数据写入性能,但是多线程同时又会带来数据并发,导致数据不一致的问题。比如两个线程同时写入同一条记录的两次更新,虽然产生的时候有先后顺序,但是在写入的时候,经常会出现后产生的数据先写入目标存储,导致数据与mysql的数据不一致。
发明内容
基于此,本发明提供了一种数据同步方法及系统,该发明能够解决数据快速消费情况下,使得更新的数据与数据库中的数据保持一致,不需要后续频繁的数据订单操作。
本发明提供的一种数据同步方法,包括以下步骤:
利用公用组件监听数据库的操作日志;
对监听到的操作日志增加包含时间信息和序列信息的版本号,以生成数据变更消息;
将生成的所述数据变更消息投递到消息队列中,进行存储。
作为一种可实施方式,所述利用公用组件监听数据库的操作日志,包括:
利用公用组件监听mysql的binlog。
作为一种可实施方式,所述公用组件为canal。
作为一种可实施方式,所述对监听到的操作日志增加包含时间信息和序列信息的版本号,以生成数据变更消息,包括以下步骤:
获取当前的系统时间戳,并生成当前操作日志的序列号;
根据所述时间戳和所述序列号,生成所述版本号;
将所述版本号添加至所述操作日志,生成数据变更消息。
作为一种可实施方式,根据所述时间戳和所述序列号,生成所述版本号,包括以下步骤:
将所述时间戳放在高位,将所述序列号放在低位,生成所述版本号。
相应地,本发明提供了一种数据同步系统,包括监听模块、处理模块以及投递模块;
所述监听模块,用于利用公用组件监听数据库的操作日志;
所述处理模块,用于对监听到的操作日志增加包含时间信息和序列信息的版本号,以生成数据变更消息;
所述投递模块,用于将生成的所述数据变更消息投递到消息队列中,进行存储。
作为一种可实施方式,所述监听模块包括监听单元;
所述监听单元,用于利用公用组件监听mysql的binlog。
作为一种可实施方式,所述公用组件为canal。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州有赞科技有限公司,未经杭州有赞科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810488892.2/2.html,转载请声明来源钻瓜专利网。