国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL數據如何同步Elasticsearch

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

掃碼添加小助手

加入工程師交流群

今天給大家分享一個電商中常見的場景——MySQL數據如何同步Elasticsearch。

商品檢索

大家應該都在各種電商網站檢索過商品,檢索商品一般都是通過什么實現呢?搜索引擎Elasticsearch。

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

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

MySQL同步ES

1.同步雙寫

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

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

同步雙寫

對于這種方式:

優點:實現簡單

缺點:

業務耦合,商品的管理中耦合大量數據同步代碼

影響性能,寫入兩個存儲,響應時間變長

不便擴展:搜索可能有一些個性化需求,需要對數據進行聚合,這種方式不便實現

2.異步雙寫

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

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

異步雙寫

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

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

多維度多條件查詢

這種其實沒什么好辦法,基本上還是得搜索服務直接查庫,或者遠程調用,再查詢一遍商品的數據庫,就是所謂的回查。

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

回查完成聚合

這種方式:

優點:

解耦合,商品服務無需關注數據同步

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

缺點:

引入了新的組件和服務,增加了復雜度

3.定時任務

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

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

定時任務

定時任務,最麻煩的一點是頻率不好選,頻率高的話,會非自然地形成業務的波峰,導致存儲的CPU、內存占用波峰式上升,頻率低的話實時性比較差,而且也有波峰的情況。

這種方式:

優點:實現比較簡單

缺點:

實時性難以保證

對存儲壓力較大

4.數據訂閱

還有一種方式,就是最時興的數據訂閱。

MySQL通過binlog訂閱實現主從同步,各路數據訂閱框架比如canal就依據這個原理,將client組件偽裝成從庫,來實現數據訂閱。

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

MySQL主從同步

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

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

canal同步數據

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

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

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

數據訂閱+回查

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

所以使用數據訂閱:

優點:

業務入侵較少

實時性較好

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

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

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






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 適配器
    +關注

    關注

    9

    文章

    2129

    瀏覽量

    71290
  • MySQL
    +關注

    關注

    1

    文章

    906

    瀏覽量

    29530
  • MYSQL數據庫
    +關注

    關注

    0

    文章

    97

    瀏覽量

    10265

原文標題:MySQL數據同步ES的4種解決方案!

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    恒訊科技解析:如何安裝MySQL并創建數據

    安裝和管理MySQL不必復雜。只需幾分鐘,你就能在Linux服務器上搭建MySQL,創建第一個數據庫,甚至自動化備份——同時確保數據安全有序。 什么是
    的頭像 發表于 01-14 14:25 ?177次閱讀

    從0到1搭建實時日志監控系統:基于WebSocket + Elasticsearch的實戰方案

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

    工業數據中臺支持接入MySQL數據庫嗎

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

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

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

    mysql數據恢復—mysql數據庫表被truncate的數據恢復案例

    某云ECS網站服務器,linux操作系統,部署了mysql數據庫。工作人員在執行數據庫版本更新測試時,錯誤地將本應在測試庫執行的sql腳本在生產庫上執行了,導致部分表被truncate,部分表內
    的頭像 發表于 09-11 09:28 ?874次閱讀
    <b class='flag-5'>mysql</b><b class='flag-5'>數據</b>恢復—<b class='flag-5'>mysql</b><b class='flag-5'>數據</b>庫表被truncate的<b class='flag-5'>數據</b>恢復案例

    CentOS 7下MySQL 8雙主熱備高可用架構全解

    MySQL主節點2 核心邏輯: 通過Keepalived實現VIP漂移 雙向GTID同步保證數據一致性 雙寫模式需配合應用層沖突解決機制 MySQL 8部署流程 ? 步驟1:官方源配
    的頭像 發表于 08-12 17:08 ?830次閱讀

    MySQL 8.0性能優化實戰指南

    作為一名運維工程師,MySQL數據庫優化是我們日常工作中最具挑戰性的任務之一。MySQL 8.0作為當前主流版本,在性能、安全性和功能上都有了顯著提升,但如何充分發揮其潛力,仍需要我們掌握正確的優化策略。
    的頭像 發表于 07-24 11:48 ?854次閱讀

    MySQL數據備份與恢復策略

    數據是企業的核心資產,MySQL作為主流的關系型數據庫管理系統,其數據的安全性和可靠性至關重要。本文將深入探討MySQL
    的頭像 發表于 07-14 11:11 ?728次閱讀

    企業級MySQL數據庫管理指南

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

    MYSQL集群高可用和數據監控平臺實現方案

    該項目共分為2個子項目,由MYSQL集群高可用和數據監控平臺兩部分組成。
    的頭像 發表于 05-28 10:10 ?1311次閱讀
    <b class='flag-5'>MYSQL</b>集群高可用和<b class='flag-5'>數據</b>監控平臺實現方案

    MySQL數據庫采集網關是什么?有什么功能?

    MySQL數據庫采集網關是一種用于連接、采集、處理并傳輸數據MySQL數據庫的中間設備或軟件系統,通常部署在
    的頭像 發表于 05-26 15:20 ?664次閱讀

    MySQL數據庫是什么

    MySQL數據庫是一種 開源的關系型數據庫管理系統(RDBMS) ,由瑞典MySQL AB公司開發,后被Oracle公司收購。它通過結構化查詢語言(SQL)進行
    的頭像 發表于 05-23 09:18 ?1209次閱讀

    單節點Elasticsearch+Filebeat+Kibana安裝指南

    單節點Elasticsearch+Filebeat+Kibana安裝指南
    的頭像 發表于 05-21 11:06 ?1190次閱讀
    單節點<b class='flag-5'>Elasticsearch</b>+Filebeat+Kibana安裝指南

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

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

    數據采集到MYSQL和SQLSERVER數據庫可以實現哪些功能

    將工業設備數據采集到MySQL和SQLServer數據庫后,可實現生產管理、設備運維、決策支持等多維度功能。對此,數之能提供多種工業設備數據采集到
    的頭像 發表于 05-07 15:32 ?587次閱讀