數據庫中同步數據到elastic search的方案比較

#方案1,利用logstash定時向數據庫讀取數據然後寫入到elastic search中

架構:數據庫+logstash+elastic search

缺點:1)因為是定時讀取數據庫,存在一定的時延

2)若同步時間間隔調的比較短,比如每秒定時同步一次數據,此時會增大業務數據庫的壓力

3)若一次同步數據量比較大的話,網絡傳輸成本會增大

相關鏈接:https://www.cnblogs.com/csts/p/6120644.html

#為了解決時延的問題,採用同步雙寫方案,實時同步數據,於是引入方案2:

方案2:同步雙寫,即在業務應用系統寫數據到數據庫時,同時插入一條數據到elastic search中

架構:業務應用 elastic search

缺點:硬編碼,強業務耦合,性能差等

#為了解決同步雙寫性能差的問題,那麼引入mq來實現異步雙寫,於是引入方案3:

方案3:異步雙寫,即引入mq並開發一個數據同步系統,在業務系統應用(生產者)中每做一筆交易,然後將數據發送到mq,數據同步系統(消費者)訂閲mq消息,

完成數據同步到elastic search中

架構:業務應用 mq 同步系統 elastic search

缺點:1)數據同步邏輯與業務應用系統強耦合在一起

相關鏈接:https://blog.csdn.net/lp2388163/article/details/80633190

#為了解決數據同步邏輯與業務應用系統強耦合的問題,為了解耦且解決logstash定時同步時延的問題,於是引入阿里的canal來同步數據,引入方案3:

方案4,利用canal訂閲數據庫的binlog日誌文件,然後實時發送數據到elastic search中

架構:mysql canal elastic search

缺點:1)若在高併發場景下,對canal服務器及客户端可能會造成性能壓力

2)若canal同步binlog日誌過程中,canal客户端宕機可能導致數據丟失

相關鏈接:https://www.jianshu.com/p/9677ca6ca34e

#為了解決方案3中高併發的性能壓力及canal客户端宕機數據丟失的問題,此時也引入mq,既做到限流削峯又起到數據緩存存儲的作用

方案5:利用canal訂閲數據庫的binlog日誌文件,然後實時發送數據到mq中,然後利用數據同步系統訂閲mq的消息完成數據同步到elastic search中

架構:mysql canal mq 數據同步系統 elastic search

缺點:增加了系統架構複雜性

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 1056 字。

轉載請註明: 數據庫中同步數據到elastic search的方案比較 - 楠木軒