放松時(shí)序約束

2021-11-18    分類: 網(wǎng)站建設(shè)

盡可能減少系統(tǒng)中的時(shí)序約束。當(dāng)你想添加一個(gè)約東,使某個(gè)物品或?qū)ο笤谟脩舻膬蓚€(gè)動(dòng)作之間維持某個(gè)狀態(tài)時(shí),放松業(yè)務(wù)原則中的約束。由于大多數(shù)RDBMS的ACID屬性,擴(kuò)展具有時(shí)序約束的系統(tǒng)非常因難。
在需要添加約東時(shí),例例如讓物品從用戶看到它們直到用戶購買它們都存在,要認(rèn)真考慮。雖然某些特殊情況可能會(huì)令客戶失望,但是彌補(bǔ)客戶比起不能擴(kuò)展來說容易得多。
在數(shù)學(xué)和機(jī)器學(xué)習(xí)(人工智能)領(lǐng)域,有一套約東滿足問題(CSP),其中的對(duì)象必須滿足某些約束。CSP通常復(fù)雜度很高,需要啟發(fā)式搜索和組合式搜索方法結(jié)合才能解決的。兩個(gè)經(jīng)典的CSP難題是數(shù)獨(dú)游戲和地圖著色問題。數(shù)獨(dú)游戲的目標(biāo)是填寫一個(gè)大九宮格,每行每列都有9個(gè)單元格,大九宮格可以分為小九宮格,要在每個(gè)小九宮格中填入1到9的數(shù)字,使得大九宮格每一行和每一列的數(shù)字都不重復(fù)。地圖著色問題是對(duì)地圖進(jìn)行著色,使相鄰的地區(qū)具有不同的顏色。

CSP問題還會(huì)衍生出時(shí)序約束滿足問題(TCSP),其中變量表示的是事件,約束表示兩個(gè)事件之間可能的時(shí)序關(guān)系。這類問題的目標(biāo)是確保變量間的約束,決定滿足約束的各種場景。對(duì)變量強(qiáng)制實(shí)行本地一致性,可以確保問題中的所有節(jié)點(diǎn)、弧和路徑都滿足約東。機(jī)器學(xué)習(xí)領(lǐng)域和計(jì)算機(jī)科學(xué)中的很多問題都可以建模為TCSP,如機(jī)器視覺、調(diào)度、平面布局設(shè)計(jì)、SaS系統(tǒng)中的用例等,都可以看作是TCSP。
常見的SaS應(yīng)用中的時(shí)序約束的例子是用戶購買一個(gè)物品。用戶瀏覽該物品,把它放入購物車并結(jié)算,這些操作都需要一些時(shí)間。有人認(rèn)為,考慮到絕對(duì)的好用戶體驗(yàn),無論這個(gè)物品是否存在,都要在整個(gè)過程中使它保持統(tǒng)一的狀態(tài)。要實(shí)現(xiàn)這一點(diǎn),就需要在用戶關(guān)掉該頁面,或者放棄了購物車,或者結(jié)算之前,把該物品在數(shù)據(jù)庫中標(biāo)識(shí)為“扣押”的狀態(tài)。如果我們站點(diǎn)的用戶數(shù)不多,這種方法簡單實(shí)用。對(duì)用戶來說,在把物品加入購物車之前,瀏覽了100個(gè)或更多的物品是很常見的。我們的一個(gè)客戶聲稱,他們的用戶在把一個(gè)物品加入購物車之前,要瀏覽500多個(gè)檢索結(jié)果。對(duì)于這種情況,我們的應(yīng)用可能需要幾個(gè)數(shù)據(jù)庫的讀副本,使得更多的人能夠檢索和瀏覽物品,而不是購買物品。這樣就產(chǎn)生了問題,大多數(shù)RDBMS難以保持節(jié)點(diǎn)間的所有數(shù)據(jù)完全一致。即使數(shù)據(jù)庫的讀副本或者從數(shù)據(jù)庫在數(shù)據(jù)一致性上只有幾秒鐘的差別,還是會(huì)產(chǎn)生特殊情況,例如兩個(gè)用戶都想查看某個(gè)物品,而它只剩下最后一個(gè)。后面我們會(huì)來解決這個(gè)問題,但是首先讓我們看看為什么數(shù)據(jù)庫會(huì)造成這個(gè)問題。
造成RDBMS難以進(jìn)行分布式擴(kuò)展的屬性是一致性。CAP定理,又稱為布魯爾定理,是以計(jì)算機(jī)科學(xué)家EricBrewer的名字命名的,它描述了在分布式環(huán)境中設(shè)計(jì)應(yīng)用的三點(diǎn)核心要求,但這三點(diǎn)要求不可能同時(shí)滿足。這三點(diǎn)要求用縮寫CAP表示。
一致性(Consistency)--客戶端發(fā)現(xiàn)一組操作同時(shí)發(fā)生了
可用性(Avalability)一一在收到計(jì)劃中的響應(yīng)后,任何操作都要終止。
分區(qū)容忍性(PartitionTolerance)-即使個(gè)別組件不可用,操作也會(huì)完成。
這個(gè)問題的解決方案叫做BASE,是解決CAP的架構(gòu)的縮寫,代表基本可用(BasicAvailable)、軟狀態(tài)(SoftState)和最終一致性(EventuallyConsisten)通過放松、一致性的ACID屬性,在擴(kuò)展性方面可以得到更大的靈活性。采用BASE架構(gòu)可以使數(shù)據(jù)庫最終達(dá)到一致。這可能只需要幾分鐘,甚至幾秒鐘,但在前面的例子中我們看到了,如果應(yīng)用程序希望能夠“鎖定”數(shù)據(jù),那么即使幾毫秒的不一致也會(huì)造成問題。
放松時(shí)序約束可以重新設(shè)計(jì)我們的系統(tǒng)、從而使它能夠達(dá)到最終致性。用戶剛瀏覽過一個(gè)物品,不能確保該物品還存在。只有把該物品放入購物車,應(yīng)用才會(huì)鎖定數(shù)據(jù),鎖定操作會(huì)在主寫入副本或主數(shù)據(jù)庫中執(zhí)行。由于我們具有ACID屬性、所以可以確保如果交易完成了,就可以把該物品的記錄標(biāo)志為“鎖定的”、然后用戶就可以繼續(xù)放心購買了因?yàn)樵撐锲芬呀?jīng)為他們保留了。而對(duì)其他瀏覽該物品的用戶來說,它則可能還有,也可能沒有了。
另一個(gè)常常發(fā)現(xiàn)時(shí)序約束的應(yīng)用領(lǐng)域是轉(zhuǎn)移物品(錢)或在用戶間通信。在單一數(shù)據(jù)庫中,很容易確保用戶A把錢、消息或物品轉(zhuǎn)移到了用戶B的賬戶。把數(shù)據(jù)分布到多個(gè)數(shù)據(jù)副本上,使得保持這種一致性變得很困難。解決這種問題的方法是不要希望對(duì)即時(shí)轉(zhuǎn)移操作有時(shí)序約東。讓用戶A在看到用戶B轉(zhuǎn)給他的錢之前等待幾分鐘,是完全可以接受的原因很簡單,轉(zhuǎn)移物晶的雙方通通常不會(huì)在系統(tǒng)中同步轉(zhuǎn)移物品。顯然與同步通信不同,如聊天。你很容易在網(wǎng)站設(shè)計(jì)系統(tǒng)中加人時(shí)序約束,因?yàn)榭磥?,這能提供最好的客戶體驗(yàn)。但是,在添加時(shí)序約東前,最好考慮一下這樣做產(chǎn)生的長期問題,因?yàn)檫@種約東有可能使得系統(tǒng)擴(kuò)展變得很困難。

網(wǎng)站標(biāo)題:放松時(shí)序約束
網(wǎng)址分享:http://muchs.cn/news/136470.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、動(dòng)態(tài)網(wǎng)站、小程序開發(fā)、微信公眾號(hào)網(wǎng)站設(shè)計(jì)企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)