[發明專利]一種數據同步方法及系統在審
| 申請號: | 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.szxzyx.cn/pat/books/201810488892.2/2.html,轉載請聲明來源鉆瓜專利網。





