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

如何保證ES和數(shù)據(jù)庫的數(shù)據(jù)一致性?

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

在業(yè)務(wù)中,我們通常需要把數(shù)據(jù)庫中的數(shù)據(jù)變更同步到ES中,那么如何保證數(shù)據(jù)庫和ES的一致性呢?通常有以下幾種做法:

雙寫

在代碼中,對數(shù)據(jù)庫和ES進(jìn)行雙寫,并且先操作本地?cái)?shù)據(jù)庫,后操作ES,而且還需要把兩個(gè)操作放到一個(gè)事務(wù)中:

es如何保證與數(shù)據(jù)庫的一致性,ElasticSearch,數(shù)據(jù)庫,elasticsearch,大數(shù)據(jù)

?在以上邏輯中,如果寫數(shù)據(jù)庫成功,寫ES失敗,那么事務(wù)會(huì)回滾。

如果寫數(shù)據(jù)庫成功,寫ES超時(shí),實(shí)際上ES操作成功,這時(shí)候數(shù)據(jù)庫會(huì)回滾,導(dǎo)致數(shù)據(jù)不一致。這時(shí)候需要重試保證最終一致性。

這個(gè)方案的好處就是簡單,容易實(shí)現(xiàn)。并且實(shí)時(shí)性比較高。

缺點(diǎn)首先是需要改代碼,有入侵性,還有就是存在不一致的情況。并且在本地事務(wù)中發(fā)生了外調(diào)ES,大大拖長了事務(wù),白白占用數(shù)據(jù)庫連接,影響整體的吞吐量。

MQ異步消費(fèi)

在應(yīng)用中,如果我要更新數(shù)據(jù)庫了,那么久拋出一個(gè)消息出去,然后數(shù)據(jù)庫和ES各自有一個(gè)監(jiān)聽者,監(jiān)聽消息之后自去做數(shù)據(jù)變更,如果失敗了就基于消息的重試在重新執(zhí)行。

或者像之前那個(gè)方案一樣,先操作數(shù)據(jù)庫,然后異步通知ES去更新,這時(shí)候就可以借助本地消息表的方式來保證最終一致性了。

這個(gè)方案的好處是用了MQ,起到了解耦的的作用,而且還做到了異步,提升了整體性能。

缺點(diǎn)就是MQ可能存在延遲,并且需要引入新的中間件,復(fù)雜度有所提升。

掃表定時(shí)同步

如果是ES中的數(shù)據(jù)變更的實(shí)時(shí)性要求不高,可以考慮定時(shí)任務(wù)掃表,然后批量更新ES

這個(gè)方案優(yōu)點(diǎn)沒有侵入性,數(shù)據(jù)庫的寫操作處不需要改代碼。

缺點(diǎn)是實(shí)時(shí)性很差,并且輪詢可能存在性能問題,效率問題以及給數(shù)據(jù)庫帶來壓力。

監(jiān)聽binlog同步

還有一種方案,就是可以利用數(shù)據(jù)庫變更時(shí)產(chǎn)生的binlog來更新ES。通過監(jiān)聽binlog來更新ES中的數(shù)據(jù),也有成熟的框架可以做這樣的事情。

好處就是對業(yè)務(wù)代碼完全沒有侵入性,業(yè)務(wù)也非常解耦,不需要關(guān)系這個(gè)ES的更新操作。

缺點(diǎn)就是需要基于binlog監(jiān)聽,需要引入第三方框架。存在一定的延遲。

總結(jié)一下,目前業(yè)內(nèi)比較流行的方案是基于binlog監(jiān)聽的這種,首先一般業(yè)務(wù)量小的業(yè)務(wù)也不太需要用ES,所以用了ES的團(tuán)隊(duì),一般并不太會(huì)關(guān)系引入新框架的復(fù)雜度問題,而且ES這種搜索,一般來說,毫秒級的延遲都可以接受的,所以,綜合來講,基于canal做數(shù)據(jù)同步的方案,比較合適的文章來源地址http://www.zghlxwxcb.cn/news/detail-861244.html

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

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(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)文章

  • 如何保證數(shù)據(jù)庫和緩存雙寫一致性?

    如何保證數(shù)據(jù)庫和緩存雙寫一致性?

    如何保證數(shù)據(jù)庫和緩存雙寫一致性,是面試中經(jīng)常被問的一個(gè)技術(shù)問題,程序汪推薦大家有必要好好研究一波 數(shù)據(jù)庫和緩存(比如:redis)雙寫數(shù)據(jù)一致性問題,是一個(gè)跟開發(fā)語言無關(guān)的公共問題。尤其在高并發(fā)的場景下,這個(gè)問題變得更加嚴(yán)重。 我很負(fù)責(zé)的告訴大家,該問

    2024年01月18日
    瀏覽(41)
  • 如何保證Redis緩存和數(shù)據(jù)庫的一致性問題

    熟練掌握Redis緩存技術(shù)? 那么請問Redis緩存中有幾種讀寫策略,又是如何保證與數(shù)據(jù)庫的一致性問題 今天來聊一聊常用的三種緩存讀寫策略 首先我們來思考一個(gè)問題 寫 先更新緩存 再更新數(shù)據(jù)庫 首先如果緩存更新成功但數(shù)據(jù)庫更新失敗,會(huì)導(dǎo)致數(shù)據(jù)不一致的問題 其次當(dāng)請求

    2024年02月14日
    瀏覽(23)
  • Redis緩存MySQL數(shù)據(jù)庫存儲(chǔ)二者如何保證數(shù)據(jù)一致性

    在大型互聯(lián)網(wǎng)應(yīng)用中,由于數(shù)據(jù)庫讀寫頻繁、壓力大等原因,我們通常會(huì)使用緩存來減少數(shù)據(jù)庫的訪問次數(shù),提高系統(tǒng)的性能。而Redis作為一個(gè)高性能的內(nèi)存數(shù)據(jù)庫,成為了緩存的首選方案之一。但是,緩存和數(shù)據(jù)庫之間存在數(shù)據(jù)一致性的問題,如何解決這個(gè)問題呢?本文將

    2023年04月19日
    瀏覽(27)
  • 如何保證緩存與數(shù)據(jù)庫雙寫時(shí)的數(shù)據(jù)一致性?

    如何保證緩存與數(shù)據(jù)庫雙寫時(shí)的數(shù)據(jù)一致性?

    背景:使用到緩存,無論是本地內(nèi)存做緩存還是使用?Redis?做緩存,那么就會(huì)存在數(shù)據(jù)同步的問題,因?yàn)榕渲眯畔⒕彺嬖趦?nèi)存中,而內(nèi)存時(shí)無法感知到數(shù)據(jù)在數(shù)據(jù)庫的修改。這樣就會(huì)造成數(shù)據(jù)庫中的數(shù)據(jù)與緩存中數(shù)據(jù)不一致的問題。 共有四種方案: 先更新數(shù)據(jù)庫,后更新緩

    2024年01月24日
    瀏覽(25)
  • redis面試題目-如何保證數(shù)據(jù)庫與緩存的數(shù)據(jù)一致性

    原視頻:https://www.bilibili.com/video/BV1Km4y1r75f?p=62vd_source=fa75329ae3880aa55609265a0e9f5d34 由于緩存和數(shù)據(jù)庫是分開的,無法做到原子性的同時(shí)進(jìn)行數(shù)據(jù)修改,可能出現(xiàn)緩存更新失敗,或者數(shù)據(jù)庫更新失敗的情況,這時(shí)候會(huì)出現(xiàn)數(shù)據(jù)不一致,影響前端業(yè)務(wù) 先更新數(shù)據(jù)庫,再更新緩存。緩

    2024年02月05日
    瀏覽(27)
  • 126、高頻Redis面試題:如何保證Redis和數(shù)據(jù)庫數(shù)據(jù)一致性

    126、高頻Redis面試題:如何保證Redis和數(shù)據(jù)庫數(shù)據(jù)一致性

    問題:如果數(shù)據(jù)庫中的某條數(shù)據(jù)放入緩存后,又馬上被更新了,那我們應(yīng)該如何更新緩存 缺點(diǎn): 如果先更新緩存成功,在更新數(shù)據(jù)庫的時(shí)候失敗,這時(shí)候會(huì)導(dǎo)致數(shù)據(jù)不一致;緩存的作用是不是臨時(shí)將我們數(shù)據(jù)保存在內(nèi)存,便于提高查詢速度;但是如果某條數(shù)據(jù)在數(shù)據(jù)庫中都

    2024年02月13日
    瀏覽(27)
  • redis的緩存更新策略以及如何保證redis與數(shù)據(jù)庫的數(shù)據(jù)一致性

    redis的緩存更新策略有這么幾種: 1、由應(yīng)用直接和redis以及數(shù)據(jù)庫相連接: ?? ??? ?查詢數(shù)據(jù)時(shí),應(yīng)用去redis中查詢,查不到的話再由應(yīng)用去數(shù)據(jù)庫中查詢,并將查詢結(jié)果放在redis; ?? ??? ?更新數(shù)據(jù)時(shí),由應(yīng)用去觸發(fā)redis數(shù)據(jù)的刪除以及數(shù)據(jù)庫的update。 2、應(yīng)用只跟redi

    2024年02月13日
    瀏覽(25)
  • 怎么保證緩存與數(shù)據(jù)庫的最終一致性?

    怎么保證緩存與數(shù)據(jù)庫的最終一致性?

    目錄 零.讀數(shù)據(jù)的標(biāo)準(zhǔn)操作 一.Cache aside Patten--旁路模式 二.Read/Write Through Pattern--讀寫穿透 三.Write Back?Pattern--寫回 四.運(yùn)用canal監(jiān)聽mysql的binlog實(shí)現(xiàn)緩存同步 這里想說的是不管哪種模式讀操作都是一樣的,這是一種統(tǒng)一的規(guī)范: 但寫操作和同步策略卻有不同。 這個(gè)是最常見的

    2024年04月08日
    瀏覽(26)
  • 怎樣保證數(shù)據(jù)庫和redis里的數(shù)據(jù)一致性

    使用緩存更新策略:在更新數(shù)據(jù)庫時(shí),同時(shí)更新Redis中相應(yīng)的數(shù)據(jù)。這可以通過編寫代碼來實(shí)現(xiàn),在數(shù)據(jù)庫更新操作完成后,同步更新Redis中對應(yīng)的數(shù)據(jù)。這可以通過在代碼中使用事務(wù)來保證更新的原子性,確保數(shù)據(jù)庫和Redis中的數(shù)據(jù)保持一致。 使用消息隊(duì)列:可以將數(shù)據(jù)庫更

    2024年02月19日
    瀏覽(26)
  • MySQL高級第十七篇:數(shù)據(jù)庫主從復(fù)制原理及保證數(shù)據(jù)一致性

    MySQL高級第十七篇:數(shù)據(jù)庫主從復(fù)制原理及保證數(shù)據(jù)一致性

    在實(shí)際工作中,我們常常將Redis作為緩存與MySQL來配合使用,當(dāng)有請求的時(shí)候,首先會(huì)從緩存中進(jìn)行查找,如果存在就直接取出,如果不存在再訪問數(shù)據(jù)庫。 這樣就提升了讀取的效率,也減少了對后端數(shù)據(jù)庫的訪問壓力。 此外,對于一般數(shù)據(jù)庫應(yīng)用而言,都是 讀多寫少 的,

    2023年04月25日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包