欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java為何會(huì)產(chǎn)生臟數(shù)據(jù)

吉茹定2年前88瀏覽0評論
java為何會(huì)產(chǎn)生臟數(shù)據(jù)?

什么是臟數(shù)據(jù),臟數(shù)據(jù)就是過期的數(shù)據(jù);

為什么會(huì)出現(xiàn)臟數(shù)據(jù),根本原因還是數(shù)據(jù)沒有同步,歸根結(jié)底其實(shí)就是數(shù)據(jù)一致性問題,怎么保證數(shù)據(jù)的一致性這本身就是一個(gè)難題;我們平時(shí)會(huì)遇到哪些臟數(shù)據(jù)的情況,該如何解決;

1.多線程同時(shí)操作變量

比如多個(gè)線程同時(shí)操作一個(gè)變量,有線程set值,有線程get值;如果不用synchronized等關(guān)鍵字會(huì)出現(xiàn)臟數(shù)據(jù)的情況;這主要和java的內(nèi)存模型有關(guān);

2.操作數(shù)據(jù)庫導(dǎo)致臟數(shù)據(jù)

比如同時(shí)往數(shù)據(jù)庫插入兩條記錄,如果沒有事務(wù)來保證數(shù)據(jù)同時(shí)成功和同時(shí)失敗,就可能會(huì)出現(xiàn)臟數(shù)據(jù);

3.緩存臟數(shù)據(jù)

比如我們經(jīng)常會(huì)用到緩存,保存數(shù)據(jù)庫的時(shí)候保存一份到緩存中,更新數(shù)據(jù)庫的時(shí)候也同時(shí)更新緩存,這樣取數(shù)據(jù)的時(shí)候直接從緩存獲取數(shù)據(jù)即可;如果不能保證數(shù)據(jù)同步緩存和數(shù)據(jù)庫也會(huì)出現(xiàn)臟數(shù)據(jù);

4.分布式事務(wù)

比如最常見的跨行轉(zhuǎn)賬問題,如果沒有分布式事務(wù),就可能出現(xiàn)臟數(shù)據(jù);

5.數(shù)據(jù)同步

數(shù)據(jù)同步可以說是數(shù)據(jù)一致性問題最好的例子了,比如mysql主從同步,zk數(shù)據(jù)同步;這其實(shí)要牽扯出一個(gè)基礎(chǔ)理論CAP理論,主要內(nèi)容如下:

一個(gè)分布式系統(tǒng)不可能同時(shí)滿足一致性(Consistency)、可用性(Availability)和分區(qū)容錯(cuò)性(Partition tolerance),為什么這么說其實(shí)可以給出證明的:

這里可以做一個(gè)簡單的證明:

前提:對于一個(gè)分布式系統(tǒng)而言,分區(qū)容錯(cuò)性可以說是一個(gè)最基本的要求。因?yàn)榧热皇且粋€(gè)分布式系統(tǒng),那么分布式系統(tǒng)中的組件必然需要被部署到不同的節(jié)點(diǎn),否則也就無所謂分布式系統(tǒng)了;

假設(shè)網(wǎng)絡(luò)中有2個(gè)節(jié)點(diǎn)N1和N2,N1和N2上分別安裝了數(shù)據(jù)庫D1(主)和D2(備)形成主備模式,D1(主)負(fù)責(zé)寫并且讀,D2(備)分擔(dān)一部分讀

正常情況下:D1(主)寫完數(shù)據(jù),同步到D2(備),讀取D2可以讀到最新的數(shù)據(jù)

非正常情況下:作為一個(gè)分布式系統(tǒng),它和單機(jī)系統(tǒng)的最大區(qū)別,就在于網(wǎng)絡(luò),現(xiàn)在假設(shè)一種極端情況,N1和N2之間的網(wǎng)絡(luò)斷開了;D1(主)寫完數(shù)據(jù),D2(備)沒有更新到最新的數(shù)據(jù);這時(shí)候怎么辦,有2個(gè)選擇:第一,犧牲數(shù)據(jù)一致性,響應(yīng)舊的數(shù)據(jù)給用戶;第二,犧牲可用性,阻塞等待,直到網(wǎng)絡(luò)連接恢復(fù),數(shù)據(jù)更新操作完成之后,再給用戶響應(yīng)最新的數(shù)據(jù)。

所以可以看到主流的一些中間件在數(shù)據(jù)一致性問題上其實(shí)都是在AP和CP直接抉擇的,比如zk更傾向于CP,eruaka更傾向于AP;

更多可以關(guān)注本人的相關(guān)文章:

從ACID到CAP/BASE

https://www.toutiao.com/i6748644401506943499/

2PC/3PC到底是啥

https://www.toutiao.com/i6748710371780985348/

Paxos算法淺析

https://www.toutiao.com/i6748725707750244877/