国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL數(shù)據(jù)同步到ES的4種解決方案

這篇具有很好參考價(jià)值的文章主要介紹了MySQL數(shù)據(jù)同步到ES的4種解決方案。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、背景

大家應(yīng)該都在各種電商網(wǎng)站檢索過商品,檢索商品一般都是通過什么實(shí)現(xiàn)呢?搜索引擎Elasticsearch。那么問題來了,商品上架,數(shù)據(jù)一般寫入到MySQL的數(shù)據(jù)庫中,那么用于檢索的數(shù)據(jù)又是怎么同步到Elasticsearch的呢?

MySQL數(shù)據(jù)同步到ES的4種解決方案

MySQL同步ES

二、同步雙寫

2.1 概念

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

MySQL數(shù)據(jù)同步到ES的4種解決方案

同步雙寫

2.2 優(yōu)缺點(diǎn)

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

  • 缺點(diǎn):
    1、業(yè)務(wù)耦合,商品的管理中耦合大量數(shù)據(jù)同步代碼。
    2、影響性能,寫入兩個(gè)存儲,響應(yīng)時(shí)間變長。
    3、不便擴(kuò)展:搜索可能有一些個(gè)性化需求,需要對數(shù)據(jù)進(jìn)行聚合,這種方式不便實(shí)現(xiàn)。

三、異步雙寫

3.1 概念

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

MySQL數(shù)據(jù)同步到ES的4種解決方案

異步雙寫

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

MySQL數(shù)據(jù)同步到ES的4種解決方案

多維度多條件查詢

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

MySQL數(shù)據(jù)同步到ES的4種解決方案

回查完成聚合

3.2 優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):
    1、解耦合,商品服務(wù)無需關(guān)注數(shù)據(jù)同步。
    2、實(shí)時(shí)性較好,使用MQ,正常情況下,同步完成在秒級。

  • 缺點(diǎn):
    1、引入了新的組件和服務(wù),增加了復(fù)雜度。

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

4.1 概念

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

MySQL數(shù)據(jù)同步到ES的4種解決方案

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

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

4.2 優(yōu)缺點(diǎn)

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

  • 缺點(diǎn):
    1、實(shí)時(shí)性難以保證。
    2、對存儲壓力較大。

五、數(shù)據(jù)訂閱

5.1 概念

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

MySQL數(shù)據(jù)同步到ES的4種解決方案

MySQL主從同步

5.2 canal

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

MySQL數(shù)據(jù)同步到ES的4種解決方案

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

但是,使用canal看起來很美好,幫我們把同步的事情都干了,但其實(shí),還是要寫代碼。為什么呢?前面提到的多張表數(shù)據(jù)聚合,canal的支持沒那么好,所以還是得回查。這時(shí)候用canal-adapter就不合適了,需要自己實(shí)現(xiàn)canal-client,監(jiān)聽和聚合數(shù)據(jù),寫入ES:

MySQL數(shù)據(jù)同步到ES的4種解決方案

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

5.3 優(yōu)缺點(diǎn)

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

  • 優(yōu)點(diǎn):
    1、業(yè)務(wù)入侵較少
    2、實(shí)時(shí)性較好

5.4 數(shù)據(jù)訂閱框架

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

MySQL數(shù)據(jù)同步到ES的4種解決方案

數(shù)據(jù)訂閱框架

除了MySQL同步ES,MySQL同步到其它的數(shù)據(jù)存儲,例如HBase,其實(shí)大體上都是類似的幾種方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-479147.html

到了這里,關(guān)于MySQL數(shù)據(jù)同步到ES的4種解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Mysql 數(shù)據(jù)同步到 ES 的技術(shù)方案選型和思考

    Mysql 數(shù)據(jù)同步到 ES 的技術(shù)方案選型和思考

    ES 的幾個(gè)顯著特點(diǎn),能有效補(bǔ)足 MySQL 在企業(yè)級數(shù)據(jù)操作場景的缺陷 文本搜索能力 :ES 是基于倒排索引實(shí)現(xiàn)的搜索系統(tǒng),配合多樣的分詞器,在文本模糊匹配搜索上表現(xiàn)得比較好,業(yè)務(wù)場景廣泛。 多維篩選性能好 :億級規(guī)模數(shù)據(jù)使用寬表預(yù)構(gòu)建(消除 join),配合全字段索引

    2024年04月09日
    瀏覽(34)
  • 【ElasticSearch】ES與MySQL數(shù)據(jù)同步方案及Java實(shí)現(xiàn)

    【ElasticSearch】ES與MySQL數(shù)據(jù)同步方案及Java實(shí)現(xiàn)

    elasticsearch中的酒店數(shù)據(jù)來自于mysql數(shù)據(jù)庫,當(dāng)mysql中的數(shù)據(jù)發(fā)生改變時(shí),es中的數(shù)據(jù)也要跟著改變,即es與mysql之間的數(shù)據(jù)同步。 操作mysql的微服務(wù)hotel-admin不能直接更新es的索引庫,那就由操作es索引庫的微服務(wù)hotel-demo來暴露一個(gè)更新索引庫的接口給hotel-admin調(diào)用 同步調(diào)用方式

    2024年02月15日
    瀏覽(26)
  • MySQL與ES數(shù)據(jù)同步的四種方案及實(shí)踐演示

    MySQL與ES數(shù)據(jù)同步的四種方案及實(shí)踐演示

    也就是同步調(diào)用,這是一種最為簡單的方式,在將數(shù)據(jù)寫到mysql時(shí),同時(shí)將數(shù)據(jù)寫到ES。 1.業(yè)務(wù)邏輯簡單 2實(shí)時(shí)性高 1.硬編碼,有需要寫入mysql的地方都需要添加寫入ES的代碼 2.業(yè)務(wù)強(qiáng)耦合 3.存在雙寫失敗丟數(shù)據(jù)風(fēng)險(xiǎn) 4.性能較差:本來mysql的性能不是很高,再加一個(gè)ES,系統(tǒng)的性

    2024年02月09日
    瀏覽(38)
  • 成集云 | 旺店通多包裹數(shù)據(jù)同步釘釘 | 解決方案

    成集云 | 旺店通多包裹數(shù)據(jù)同步釘釘 | 解決方案

    源系統(tǒng) 成集云 目標(biāo)系統(tǒng) ??????? 隨著品牌電商興起,線上線下開始逐漸融為一體,成集云以旺店通ERP系統(tǒng)為例,通過成集云-旺店通連接器,將旺店通ERP系統(tǒng)多包裹數(shù)據(jù)同步至釘釘實(shí)現(xiàn)數(shù)據(jù)互通,幫助企業(yè)解決了電商發(fā)貨存在的錯(cuò)誤率和客服咨詢率攀升、投資率及退

    2024年02月11日
    瀏覽(78)
  • es解決只能默認(rèn)查詢10000條數(shù)據(jù)方案

    在使用es進(jìn)行數(shù)據(jù)查詢時(shí),由于es官方默認(rèn)限制了索引一次性最多只能查詢10000條數(shù)據(jù),這其實(shí)是es的一種保護(hù)機(jī)制,那么很多時(shí)候我們需要突破這種限制,例如需要進(jìn)入數(shù)據(jù)同步的場景,則需要查詢?nèi)康臄?shù)據(jù),如何處理呢? 方案1:在設(shè)置索引屬性時(shí)解除索引最大查詢數(shù)的限

    2024年02月11日
    瀏覽(16)
  • ES查詢時(shí)只能查詢10000條數(shù)據(jù)解決方案

    ES查詢時(shí)只能查詢10000條數(shù)據(jù)解決方案

    方法1: 在restful請求時(shí),解除索引最大查詢數(shù)的限制 _all表示所有索引,如果針對單個(gè)索引的話修改成索引名稱即可?。?! 此時(shí)變可以查詢300萬條數(shù)據(jù)了,數(shù)據(jù)量太大可能存在超時(shí)問題,查詢數(shù)據(jù)時(shí)加上超時(shí)參數(shù)。? 方法2: 在創(chuàng)建索引的時(shí)候加上 方法3: ????????在查詢時(shí)

    2024年02月11日
    瀏覽(15)
  • 成集云 | 抖店連接器客戶靜默下單催付數(shù)據(jù)同步釘釘 | 解決方案

    成集云 | 抖店連接器客戶靜默下單催付數(shù)據(jù)同步釘釘 | 解決方案

    源系統(tǒng) 成集云 目標(biāo)系統(tǒng) 隨著各品牌全渠道鋪貨,主播在平臺上直播時(shí)客戶下了訂單后不能及時(shí)付款,第一時(shí)間客戶收不到提醒,不僅造成了客戶付款率下降,更大量消耗了企業(yè)的人力成本和經(jīng)濟(jì)。而成集云與釘釘深度合作,企業(yè)可以通過成集云-抖店連接器將電商平臺的數(shù)據(jù)

    2024年02月11日
    瀏覽(14)
  • 簡單講講ES在大數(shù)據(jù)規(guī)模下的性能問題與解決方案(一)

    ? ? ? ? 眾所周知,在處理大規(guī)模數(shù)據(jù)量的時(shí)候,我們的傳統(tǒng)關(guān)系型數(shù)據(jù)庫,例如MySQL,Oracle等...它們對于這些大規(guī)模數(shù)據(jù)的處理與計(jì)算是非常吃力的,甚至于在內(nèi)存資源不足的情況下導(dǎo)致在mysql中查詢數(shù)據(jù)失敗的情況,甚至由于數(shù)據(jù)的規(guī)模較大,會消耗更多的磁盤空間,得不

    2024年02月04日
    瀏覽(22)
  • MySQL同步ES方案

    MySQL同步ES方案

    在項(xiàng)目開發(fā)中,我們經(jīng)常將 MySQL 作為業(yè)務(wù)數(shù)據(jù)庫,ES 作為查詢數(shù)據(jù)庫,用來實(shí)現(xiàn)讀寫分離,緩解 MySQL 數(shù)據(jù)庫的查詢壓力,應(yīng)對海量數(shù)據(jù)的復(fù)雜查詢。 這其中有一個(gè)很重要的問題,就是如何實(shí)現(xiàn) MySQL 數(shù)據(jù)庫和 ES 的數(shù)據(jù)同步,今天和大家聊聊 MySQL 和 ES 數(shù)據(jù)同步的各種方案。

    2024年04月11日
    瀏覽(24)
  • 4種 MySQL 同步 ES 方案

    4種 MySQL 同步 ES 方案

    數(shù)據(jù)同步是一個(gè)很常見的業(yè)務(wù)場景。本文會講述數(shù)據(jù)同步的 4 種方案,并給出常用數(shù)據(jù)遷移工具,干貨滿滿! 在實(shí)際項(xiàng)目開發(fā)中,我們經(jīng)常將 MySQL 作為業(yè)務(wù)數(shù)據(jù)庫,ES 作為查詢數(shù)據(jù)庫,用來實(shí)現(xiàn)讀寫分離,緩解 MySQL 數(shù)據(jù)庫的查詢壓力,應(yīng)對海量數(shù)據(jù)的復(fù)雜查詢。 這其中有一

    2024年02月08日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包