在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    2036

    瀏覽量

    69350
  • MySQL
    +關注

    關注

    1

    文章

    849

    瀏覽量

    27607
  • MYSQL數據庫
    +關注

    關注

    0

    文章

    96

    瀏覽量

    9793

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    MySQL數據庫是什么

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

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

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

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

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

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

    ? 從 Delphi、C++ Builder 和 Lazarus 連接到 MySQL 數據MySQL 數據訪問組件(MyDAC)是一個組件庫,提供從 Delphi 和 C++ Bu
    的頭像 發表于 01-20 13:47 ?627次閱讀
    從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 ?539次閱讀
    使用插件將Excel連接到<b class='flag-5'>MySQL</b>/MariaDB

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

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

    MySQL數據庫的安裝

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

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

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

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

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

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

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

    Elasticsearch 再次開源

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

    適用于MySQL的dbForge架構比較

    dbForge Schema Compare for MySQL 是一種工具,用于輕松有效地比較和部署 MySQL 數據庫結構和腳本文件夾差異。該工具提供了 MySQL
    的頭像 發表于 10-28 09:41 ?520次閱讀
    適用于<b class='flag-5'>MySQL</b>的dbForge架構比較
    主站蜘蛛池模板: 久久国产精品99久久久久久牛牛 | 色尼玛亚洲综合 | 天天干天天操天天 | 国产操女 | 精品欧美一区二区三区在线观看 | 亚洲已满18点击进入在线观看 | 天天综合天天射 | 韩国三级精品 | 黄色免费看网站 | 亚洲国产精品va在线观看麻豆 | 国产人人艹 | 中文字幕在线观看一区 | 黄色地址 | 国产视频三区 | ts国产 | 亚洲精品影视 | 国产三级视频 | 天天色天天草 | 五月婷综合网 | 色系视频在线观看免费观看 | 国产精品久久久久影院色老大 | 黄色免费在线网站 | 亚洲国产精品自在现线让你爽 | 色天使色护士 | 中文字幕日本一区波多野不卡 | 亚洲精品国产美女在线观看 | 久久大尺度| 2020狠狠操 | 天天噜夜夜操 | 成人综合网站 | 人人干网站| 字幕网中文aⅴ资源站 | 色婷婷综合缴情综六月 | 男人午夜网站 | 久久精品1 | 狠狠狠色丁香婷婷综合久久88 | 亚洲成人免费 | 成年片色大黄全免费 | 亚洲视频在线播放 | 精品国产自在在线在线观看 | 国产三级在线看 |