日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
數(shù)據(jù)庫(kù)主從不一致,怎么解?

在聊數(shù)據(jù)庫(kù)與緩存一致性問(wèn)題之前,先聊聊數(shù)據(jù)庫(kù)主庫(kù)與從庫(kù)的一致性問(wèn)題。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供鐘樓企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為鐘樓眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

問(wèn):常見(jiàn)的數(shù)據(jù)庫(kù)集群架構(gòu)如何?

答:一主多從,主從同步,讀寫分離。

如上圖:

  • 一個(gè)主庫(kù)提供寫服務(wù)
  • 多個(gè)從庫(kù)提供讀服務(wù),可以增加從庫(kù)提升讀性能
  • 主從之間同步數(shù)據(jù)

畫外音:任何方案不要忘了本心,加從庫(kù)的本心,是提升讀性能。

問(wèn):為什么會(huì)出現(xiàn)不一致?

答:主從同步有時(shí)延,這個(gè)時(shí)延期間讀從庫(kù),可能讀到不一致的數(shù)據(jù)。

如上圖:

  • 服務(wù)發(fā)起了一個(gè)寫請(qǐng)求
  • 服務(wù)又發(fā)起了一個(gè)讀請(qǐng)求,此時(shí)同步未完成,讀到一個(gè)不一致的臟數(shù)據(jù)
  • 數(shù)據(jù)庫(kù)主從同步***才完成

畫外音:任何數(shù)據(jù)冗余,必將引發(fā)一致性問(wèn)題。

問(wèn):如何避免這種主從延時(shí)導(dǎo)致的不一致?

答:常見(jiàn)的方法有這么幾種。

方案一:忽略

任何脫離業(yè)務(wù)的架構(gòu)設(shè)計(jì)都是耍流氓,絕大部分業(yè)務(wù),例如:百度搜索,淘寶訂單,QQ消息,58帖子都允許短時(shí)間不一致。

畫外音:如果業(yè)務(wù)能接受,最推崇此法。

如果業(yè)務(wù)能夠接受,別把系統(tǒng)架構(gòu)搞得太復(fù)雜。

方案二:強(qiáng)制讀主

如上圖:

  • 使用一個(gè)高可用主庫(kù)提供數(shù)據(jù)庫(kù)服務(wù)
  • 讀和寫都落到主庫(kù)上
  • 采用緩存來(lái)提升系統(tǒng)讀性能

這是很常見(jiàn)的微服務(wù)架構(gòu),可以避免數(shù)據(jù)庫(kù)主從一致性問(wèn)題。

方案三:選擇性讀主

強(qiáng)制讀主過(guò)于粗暴,畢竟只有少量寫請(qǐng)求,很短時(shí)間,可能讀取到臟數(shù)據(jù)。

有沒(méi)有可能實(shí)現(xiàn),只有這一段時(shí)間,可能讀到從庫(kù)臟數(shù)據(jù)的讀請(qǐng)求讀主,平時(shí)讀從呢?

可以利用一個(gè)緩存記錄必須讀主的數(shù)據(jù)。

如上圖,當(dāng)寫請(qǐng)求發(fā)生時(shí):

  • 寫主庫(kù)
  • 將哪個(gè)庫(kù),哪個(gè)表,哪個(gè)主鍵三個(gè)信息拼裝一個(gè)key設(shè)置到cache里,這條記錄的超時(shí)時(shí)間,設(shè)置為“主從同步時(shí)延”

畫外音:key的格式為“db:table:PK”,假設(shè)主從延時(shí)為1s,這個(gè)key的cache超時(shí)時(shí)間也為1s。

如上圖,當(dāng)讀請(qǐng)求發(fā)生時(shí):

這是要讀哪個(gè)庫(kù),哪個(gè)表,哪個(gè)主鍵的數(shù)據(jù)呢,也將這三個(gè)信息拼裝一個(gè)key,到cache里去查詢,如果,

  • cache里有這個(gè)key,說(shuō)明1s內(nèi)剛發(fā)生過(guò)寫請(qǐng)求,數(shù)據(jù)庫(kù)主從同步可能還沒(méi)有完成,此時(shí)就應(yīng)該去主庫(kù)查詢
  • cache里沒(méi)有這個(gè)key,說(shuō)明最近沒(méi)有發(fā)生過(guò)寫請(qǐng)求,此時(shí)就可以去從庫(kù)查詢

以此,保證讀到的一定不是不一致的臟數(shù)據(jù)。

總結(jié)

數(shù)據(jù)庫(kù)主庫(kù)和從庫(kù)不一致,常見(jiàn)有這么幾種優(yōu)化方案:

  • 業(yè)務(wù)可以接受,系統(tǒng)不優(yōu)化
  • 強(qiáng)制讀主,高可用主庫(kù),用緩存提高讀性能
  • 在cache里記錄哪些記錄發(fā)生過(guò)寫請(qǐng)求,來(lái)路由讀主還是讀從

文字很短,不能解決所有問(wèn)題,但希望能給大家一些啟示。

【本文為專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】


網(wǎng)頁(yè)名稱:數(shù)據(jù)庫(kù)主從不一致,怎么解?
本文地址:http://www.5511xx.com/article/djdgoie.html