91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MySQL數(shù)據(jù)如何同步Elasticsearch

數(shù)據(jù)分析與開發(fā) ? 來源:三分惡 ? 2023-03-24 13:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天給大家分享一個(gè)電商中常見的場景——MySQL數(shù)據(jù)如何同步Elasticsearch。

商品檢索

大家應(yīng)該都在各種電商網(wǎng)站檢索過商品,檢索商品一般都是通過什么實(shí)現(xiàn)呢?搜索引擎Elasticsearch。

那么問題來了,商品上架,數(shù)據(jù)一般寫入到MySQL的數(shù)據(jù)庫中,那么用于檢索的數(shù)據(jù)又是怎么同步到Elasticsearch的呢?

dbbbef2c-c9fc-11ed-bfe3-dac502259ad0.png

MySQL同步ES

1.同步雙寫

這是能想到的最直接的方式,在寫入MySQL,直接也同步往ES里寫一份數(shù)據(jù)。

dbcee3fc-c9fc-11ed-bfe3-dac502259ad0.png

同步雙寫

對于這種方式:

優(yōu)點(diǎn):實(shí)現(xiàn)簡單

缺點(diǎn):

業(yè)務(wù)耦合,商品的管理中耦合大量數(shù)據(jù)同步代碼

影響性能,寫入兩個(gè)存儲,響應(yīng)時(shí)間變長

不便擴(kuò)展:搜索可能有一些個(gè)性化需求,需要對數(shù)據(jù)進(jìn)行聚合,這種方式不便實(shí)現(xiàn)

2.異步雙寫

我們也很容易想到異步雙寫的辦法,上架商品的時(shí)候,先把商品數(shù)據(jù)丟進(jìn)MQ,為了解耦合,我們一般會拆分一個(gè)搜索服務(wù),由搜索服務(wù)去訂閱商品變動(dòng)的消息,來完成同步。

dbe1035c-c9fc-11ed-bfe3-dac502259ad0.png

異步雙寫

前面說的,一些數(shù)據(jù)需要聚合處理成類似寬表的結(jié)構(gòu)怎么辦呢?例如商品庫的商品品類、spu、sku表是分開的,但是查詢是跨維度的,在ES里再聚合一次效率就低一些,最好就是把商品的數(shù)據(jù)給聚合起來,在ES里以類似大寬表的形式存儲,這樣一來查詢效率就高一些。

dbf10a4a-c9fc-11ed-bfe3-dac502259ad0.png

多維度多條件查詢

這種其實(shí)沒什么好辦法,基本上還是得搜索服務(wù)直接查庫,或者遠(yuǎn)程調(diào)用,再查詢一遍商品的數(shù)據(jù)庫,就是所謂的回查。

dc294ea0-c9fc-11ed-bfe3-dac502259ad0.png

回查完成聚合

這種方式:

優(yōu)點(diǎn):

解耦合,商品服務(wù)無需關(guān)注數(shù)據(jù)同步

實(shí)時(shí)性較好,使用MQ,正常情況下,同步完成在秒級

缺點(diǎn):

引入了新的組件和服務(wù),增加了復(fù)雜度

3.定時(shí)任務(wù)

假如我們要快速搞搞,數(shù)據(jù)量有沒那么大,怎么辦呢?定時(shí)任務(wù)也可以。

dc3c8eb6-c9fc-11ed-bfe3-dac502259ad0.png

定時(shí)任務(wù)

定時(shí)任務(wù),最麻煩的一點(diǎn)是頻率不好選,頻率高的話,會非自然地形成業(yè)務(wù)的波峰,導(dǎo)致存儲的CPU、內(nèi)存占用波峰式上升,頻率低的話實(shí)時(shí)性比較差,而且也有波峰的情況。

這種方式:

優(yōu)點(diǎn):實(shí)現(xiàn)比較簡單

缺點(diǎn):

實(shí)時(shí)性難以保證

對存儲壓力較大

4.數(shù)據(jù)訂閱

還有一種方式,就是最時(shí)興的數(shù)據(jù)訂閱。

MySQL通過binlog訂閱實(shí)現(xiàn)主從同步,各路數(shù)據(jù)訂閱框架比如canal就依據(jù)這個(gè)原理,將client組件偽裝成從庫,來實(shí)現(xiàn)數(shù)據(jù)訂閱。

dc4cad78-c9fc-11ed-bfe3-dac502259ad0.png

MySQL主從同步

我們以應(yīng)用最廣泛的canal為例,canal通過canal-adapter,支持多種適配器,其中就有ES適配器,通過一些配置,啟動(dòng)之后,就可以直接把MySQL數(shù)據(jù)同步到ES,這個(gè)過程是零代碼的。

dc61bd1c-c9fc-11ed-bfe3-dac502259ad0.png

canal同步數(shù)據(jù)

但是,和老板了解過,使用canal看起來很美好,幫我們把同步的事情都干了,但其實(shí),還是要寫代碼。為什么呢?

前面提到的多張表數(shù)據(jù)聚合,canal的支持沒那么好,所以還是得回查。這時(shí)候用canal-adapter就不合適了,需要自己實(shí)現(xiàn)canal-client,監(jiān)聽和聚合數(shù)據(jù),寫入ES:

dc75472e-c9fc-11ed-bfe3-dac502259ad0.png

數(shù)據(jù)訂閱+回查

這種看起來和異步雙寫比較像,但是第一降低了商品服務(wù)的耦合,第二數(shù)據(jù)的實(shí)時(shí)性更好。

所以使用數(shù)據(jù)訂閱:

優(yōu)點(diǎn):

業(yè)務(wù)入侵較少

實(shí)時(shí)性較好

至于數(shù)據(jù)訂閱框架的選型,主流的大體上是這些:

Cancal Maxwell Python-Mysql-Rplication
開源方 阿里巴巴 Zendesk 社區(qū)
開發(fā)語言 Java Java Python
活躍度 活躍 活躍 活躍
高可用 支持 支持 不支持
客戶端 Java/Go/PHP/Python/Rust Python
消息落地 Kafka/RocketMQ 等 Kafka/RabbitNQ/Redis 等 自定義
消息格式 自定義 JSON 自定義
文檔詳略 詳細(xì) 詳細(xì) 詳細(xì)
Boostrap 不支持 支持 不支持

除了MySQL同步ES,MySQL同步到其它的數(shù)據(jù)存儲,例如HBase,其實(shí)大體上都是類似的幾種方法。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 適配器
    +關(guān)注

    關(guān)注

    9

    文章

    2129

    瀏覽量

    71298
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    906

    瀏覽量

    29536
  • MYSQL數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    0

    文章

    97

    瀏覽量

    10265

原文標(biāo)題:MySQL數(shù)據(jù)同步ES的4種解決方案!

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    恒訊科技解析:如何安裝MySQL并創(chuàng)建數(shù)據(jù)

    安裝和管理MySQL不必復(fù)雜。只需幾分鐘,你就能在Linux服務(wù)器上搭建MySQL,創(chuàng)建第一個(gè)數(shù)據(jù)庫,甚至自動(dòng)化備份——同時(shí)確保數(shù)據(jù)安全有序。 什么是
    的頭像 發(fā)表于 01-14 14:25 ?179次閱讀

    從0到1搭建實(shí)時(shí)日志監(jiān)控系統(tǒng):基于WebSocket + Elasticsearch的實(shí)戰(zhàn)方案

    低成本、實(shí)時(shí)性高的日志監(jiān)控系統(tǒng)。 2. 技術(shù)選型 數(shù)據(jù)存儲 :Elasticsearch(高效檢索與聚合) 實(shí)時(shí)推送 :WebSocket(全雙工通信,避免HTTP輪詢) 后端服務(wù) :Node.js
    發(fā)表于 01-09 16:43

    工業(yè)數(shù)據(jù)中臺支持接入MySQL數(shù)據(jù)庫嗎

    工業(yè)數(shù)據(jù)中臺完全支持接入MySQL數(shù)據(jù)庫 ,且通過數(shù)據(jù)同步、集成與治理等技術(shù)手段,能夠充分發(fā)揮MySQL
    的頭像 發(fā)表于 12-04 11:23 ?379次閱讀
    工業(yè)<b class='flag-5'>數(shù)據(jù)</b>中臺支持接入<b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)</b>庫嗎

    Mysql數(shù)據(jù)恢復(fù)—Windows Server下MySQL(InnoDB)全表誤刪數(shù)據(jù)恢復(fù)案例

    本地服務(wù)器,操作系統(tǒng)為windows server。服務(wù)器上部署mysql單實(shí)例,innodb引擎,獨(dú)立表空間。未進(jìn)行數(shù)據(jù)庫備份,未開啟binlog。 人為誤操作使用Delete命令刪除數(shù)據(jù)時(shí)未添加where子句,導(dǎo)致全表
    的頭像 發(fā)表于 09-23 15:56 ?738次閱讀
    <b class='flag-5'>Mysql</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—Windows Server下<b class='flag-5'>MySQL</b>(InnoDB)全表誤刪<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    mysql數(shù)據(jù)恢復(fù)—mysql數(shù)據(jù)庫表被truncate的數(shù)據(jù)恢復(fù)案例

    某云ECS網(wǎng)站服務(wù)器,linux操作系統(tǒng),部署了mysql數(shù)據(jù)庫。工作人員在執(zhí)行數(shù)據(jù)庫版本更新測試時(shí),錯(cuò)誤地將本應(yīng)在測試庫執(zhí)行的sql腳本在生產(chǎn)庫上執(zhí)行了,導(dǎo)致部分表被truncate,部分表內(nèi)
    的頭像 發(fā)表于 09-11 09:28 ?877次閱讀
    <b class='flag-5'>mysql</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>mysql</b><b class='flag-5'>數(shù)據(jù)</b>庫表被truncate的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    CentOS 7下MySQL 8雙主熱備高可用架構(gòu)全解

    MySQL主節(jié)點(diǎn)2 核心邏輯: 通過Keepalived實(shí)現(xiàn)VIP漂移 雙向GTID同步保證數(shù)據(jù)一致性 雙寫模式需配合應(yīng)用層沖突解決機(jī)制 MySQL 8部署流程 ? 步驟1:官方源配
    的頭像 發(fā)表于 08-12 17:08 ?831次閱讀

    MySQL 8.0性能優(yōu)化實(shí)戰(zhàn)指南

    作為一名運(yùn)維工程師,MySQL數(shù)據(jù)庫優(yōu)化是我們?nèi)粘9ぷ髦凶罹咛魬?zhàn)性的任務(wù)之一。MySQL 8.0作為當(dāng)前主流版本,在性能、安全性和功能上都有了顯著提升,但如何充分發(fā)揮其潛力,仍需要我們掌握正確的優(yōu)化策略。
    的頭像 發(fā)表于 07-24 11:48 ?856次閱讀

    MySQL數(shù)據(jù)備份與恢復(fù)策略

    數(shù)據(jù)是企業(yè)的核心資產(chǎn),MySQL作為主流的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其數(shù)據(jù)的安全性和可靠性至關(guān)重要。本文將深入探討MySQL
    的頭像 發(fā)表于 07-14 11:11 ?736次閱讀

    企業(yè)級MySQL數(shù)據(jù)庫管理指南

    在當(dāng)今數(shù)字化時(shí)代,MySQL作為全球最受歡迎的開源關(guān)系型數(shù)據(jù)庫,承載著企業(yè)核心業(yè)務(wù)數(shù)據(jù)的存儲與處理。作為數(shù)據(jù)庫管理員(DBA),掌握MySQL
    的頭像 發(fā)表于 07-09 09:50 ?725次閱讀

    MYSQL集群高可用和數(shù)據(jù)監(jiān)控平臺實(shí)現(xiàn)方案

    該項(xiàng)目共分為2個(gè)子項(xiàng)目,由MYSQL集群高可用和數(shù)據(jù)監(jiān)控平臺兩部分組成。
    的頭像 發(fā)表于 05-28 10:10 ?1314次閱讀
    <b class='flag-5'>MYSQL</b>集群高可用和<b class='flag-5'>數(shù)據(jù)</b>監(jiān)控平臺實(shí)現(xiàn)方案

    MySQL數(shù)據(jù)庫采集網(wǎng)關(guān)是什么?有什么功能?

    MySQL數(shù)據(jù)庫采集網(wǎng)關(guān)是一種用于連接、采集、處理并傳輸數(shù)據(jù)MySQL數(shù)據(jù)庫的中間設(shè)備或軟件系統(tǒng),通常部署在
    的頭像 發(fā)表于 05-26 15:20 ?666次閱讀

    MySQL數(shù)據(jù)庫是什么

    MySQL數(shù)據(jù)庫是一種 開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS) ,由瑞典MySQL AB公司開發(fā),后被Oracle公司收購。它通過結(jié)構(gòu)化查詢語言(SQL)進(jìn)行
    的頭像 發(fā)表于 05-23 09:18 ?1218次閱讀

    單節(jié)點(diǎn)Elasticsearch+Filebeat+Kibana安裝指南

    單節(jié)點(diǎn)Elasticsearch+Filebeat+Kibana安裝指南
    的頭像 發(fā)表于 05-21 11:06 ?1198次閱讀
    單節(jié)點(diǎn)<b class='flag-5'>Elasticsearch</b>+Filebeat+Kibana安裝指南

    利用dockerfile搭建mysql主從集群和redis集群

    ==MySQL主從同步(Replication)是一種實(shí)現(xiàn)數(shù)據(jù)冗余和高可用性的技術(shù),通過將主數(shù)據(jù)庫(Master)的變更操作同步到一個(gè)或多個(gè)
    的頭像 發(fā)表于 05-14 11:38 ?2031次閱讀
    利用dockerfile搭建<b class='flag-5'>mysql</b>主從集群和redis集群

    數(shù)據(jù)采集到MYSQL和SQLSERVER數(shù)據(jù)庫可以實(shí)現(xiàn)哪些功能

    將工業(yè)設(shè)備數(shù)據(jù)采集到MySQL和SQLServer數(shù)據(jù)庫后,可實(shí)現(xiàn)生產(chǎn)管理、設(shè)備運(yùn)維、決策支持等多維度功能。對此,數(shù)之能提供多種工業(yè)設(shè)備數(shù)據(jù)采集到數(shù)
    的頭像 發(fā)表于 05-07 15:32 ?590次閱讀