吴忠躺衫网络科技有限公司

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,其實大體上都是類似的幾種方法。






審核編輯:劉清

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

    關注

    8

    文章

    1972

    瀏覽量

    68261
  • MySQL
    +關注

    關注

    1

    文章

    829

    瀏覽量

    26743
  • MYSQL數據庫
    +關注

    關注

    0

    文章

    96

    瀏覽量

    9453

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

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

收藏 人收藏

    評論

    相關推薦

    從Delphi、C++ Builder和Lazarus連接到MySQL數據

    ? 從 Delphi、C++ Builder 和 Lazarus 連接到 MySQL 數據MySQL 數據訪問組件(MyDAC)是一個組件庫,提供從 Delphi 和 C++ Bu
    的頭像 發表于 01-20 13:47 ?121次閱讀
    從Delphi、C++ Builder和Lazarus連接到<b class='flag-5'>MySQL</b><b class='flag-5'>數據</b>庫

    使用插件將Excel連接到MySQL/MariaDB

    ,可以快速地將數據MySQL 或 MariaDB 加載到 Excel,立即從數據庫刷新 Excel 工作簿中的數據,編輯這些數據,并將它
    的頭像 發表于 01-20 12:38 ?120次閱讀
    使用插件將Excel連接到<b class='flag-5'>MySQL</b>/MariaDB

    適用于MySQL和MariaDB的Python連接器:可靠的MySQL數據連接器和數據

    和 Linux 的 wheel 包分發。 直接連接 該解決方案使您能夠通過 TCP/IP 建立與 MySQL 或者 MariaDB 數據庫服務器的直接連接,而無需數據庫客戶端庫。另外直接連接可以提高 Python 應用程
    的頭像 發表于 01-17 12:18 ?122次閱讀
    適用于<b class='flag-5'>MySQL</b>和MariaDB的Python連接器:可靠的<b class='flag-5'>MySQL</b><b class='flag-5'>數據</b>連接器和<b class='flag-5'>數據</b>庫

    如何在Linux環境下高效安裝部署和配置Elasticsearch

    /CentOS-7-x86_64-DVD-2009.iso elasticsearch-7.10.0-linux-x86_64.tar.gz https://www.elastic.co/cn/downloads/past-releases
    的頭像 發表于 01-16 11:49 ?258次閱讀

    MySQL數據庫的安裝

    MySQL數據庫的安裝 【一】各種數據庫的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】
    的頭像 發表于 01-14 11:25 ?131次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>數據</b>庫的安裝

    在華為云上通過 Docker 容器部署 Elasticsearch 并進行性能評測

    運行 Elasticsearch 查詢評測 ? 5.2 查看評測結果 ? 5.3 調整并發請求和請求數 ? 6. 總結 ? 前言 隨著數據量的
    的頭像 發表于 01-13 13:36 ?110次閱讀
    在華為云上通過 Docker 容器部署 <b class='flag-5'>Elasticsearch</b> 并進行性能評測

    構建數據庫解決方案,基于華為云 Flexus X 實例容器化 MySQL 主從同步架構

    前言**** 華為云 Flexus X 實例,融合柔性算力與智能調度,為數據庫解決方案帶來全新突破。采用容器化 MySQL 主從同步架構,實現數據高效備份與讀寫分離,保障業務連續性與
    的頭像 發表于 01-07 17:22 ?200次閱讀
    構建<b class='flag-5'>數據</b>庫解決方案,基于華為云 Flexus X 實例容器化 <b class='flag-5'>MySQL</b> 主從<b class='flag-5'>同步</b>架構

    數據數據恢復—Mysql數據庫表記錄丟失的數據恢復流程

    Mysql數據庫故障: Mysql數據庫表記錄丟失。 Mysql數據庫故障表現: 1、
    的頭像 發表于 12-16 11:05 ?223次閱讀
    <b class='flag-5'>數據</b>庫<b class='flag-5'>數據</b>恢復—<b class='flag-5'>Mysql</b><b class='flag-5'>數據</b>庫表記錄丟失的<b class='flag-5'>數據</b>恢復流程

    數據數據恢復—MYSQL數據庫ibdata1文件損壞的數據恢復案例

    mysql數據庫故障: mysql數據庫文件ibdata1、MYI、MYD損壞。 故障表現:1、數據庫無法進行查詢等操作;2、使用my
    的頭像 發表于 12-09 11:05 ?222次閱讀

    MySQL還能跟上PostgreSQL的步伐嗎

    Can MySQL Catch Up with PostgreSQL’s Momentum?[2] 譯者:馮若航[3],Vonng,Pigsty[4]?作者,PostgreSQL 大法師,數據庫老司機,云計算泥石流。 MySQL
    的頭像 發表于 11-18 10:16 ?272次閱讀
    <b class='flag-5'>MySQL</b>還能跟上PostgreSQL的步伐嗎

    香港云服務器怎么部署MySQL數據庫?

    在香港云服務器上部署MySQL數據庫的步驟如下: 步驟 1: 更新軟件包列表 首先,確保軟件包列表是最新的。在終端中執行以下命令: sudo apt update 步驟 2: 安裝 MySQL
    的頭像 發表于 11-14 16:15 ?229次閱讀

    Elasticsearch 再次開源

    Elasticsearch 和 Kibana 又可以被稱為開源了。很難表達這句話讓我有多高興。我激動得簡直要跳起來了。我們 Elastic 的所有人都是如此。開源是我的 DNA。這也是Elastic的DNA。能夠再次將 Elasticsearch 稱為開源,我感到非常高興
    的頭像 發表于 11-13 12:14 ?182次閱讀
    <b class='flag-5'>Elasticsearch</b> 再次開源

    適用于MySQL的dbForge架構比較

    dbForge Schema Compare for MySQL 是一種工具,用于輕松有效地比較和部署 MySQL 數據庫結構和腳本文件夾差異。該工具提供了 MySQL
    的頭像 發表于 10-28 09:41 ?258次閱讀
    適用于<b class='flag-5'>MySQL</b>的dbForge架構比較

    全量+增量秒級更新!NineData輕松完成MySQL同步到StarRocks #數據庫#MySQL

    MYSQL數據
    數據庫小組
    發布于 :2024年08月09日 14:58:43

    MySQL的整體邏輯架構

    支持多種存儲引擎是眾所周知的MySQL特性,也是MySQL架構的關鍵優勢之一。如果能夠理解MySQL Server與存儲引擎之間是怎樣通過API交互的,將大大有利于理解MySQL的核心
    的頭像 發表于 04-30 11:14 ?495次閱讀
    <b class='flag-5'>MySQL</b>的整體邏輯架構
    怎样看百家乐官网路纸| 博彩百家乐官网字谜总汇二丹东| 百家乐分析软件骗人| 沙雅县| 信誉好百家乐平台| 百家乐官网真钱棋牌| 百家乐时时彩网站| 百家乐官网为什么庄5| 蓝盾百家乐代理| 百家乐官网玩揽法的论坛| 百家乐透视牌靴| 百家乐官网偷码| 安徽棋牌游戏中心| 百家乐要怎么玩啊| 松原市| 百家乐现金网最好的系统哪里有可靠吗| 百家乐官网技巧-百家乐官网开户指定代理网址 | 百家乐官网发牌靴遥控| 大发888手机版亚洲城| 属虎属鼠合伙做生意吗| 百家乐官网天上人间| 新濠峰百家乐的玩法技巧和规则| 博发百家乐官网的玩法技巧和规则 | 百家乐官网对子赔率| 威尼斯人娱乐城怎么样| 网上百家乐优博| 太阳百家乐官网3d博彩通| 皇冠开户投注网| 百家乐开户| 太阳城百家乐口诀| 百家乐官网和| 百家乐官网视频表演| 大发888官网多少| 免佣百家乐规则| 1月24进房子风水好吗| 百家乐官网赌博机怎么玩| 牌9娱乐| 大发888游戏平台103| 澳门档百家乐的玩法技巧和规则| 百家乐官网博彩吧| 玛沁县|