亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 2811 | 回復(fù): 5
打印 上一主題 下一主題

[其他] 關(guān)于數(shù)據(jù)庫(kù)設(shè)計(jì)種遇到的分布式事務(wù)的設(shè)計(jì)經(jīng)驗(yàn) [復(fù)制鏈接]

論壇徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46處女座
日期:2013-10-24 14:25:01酉雞
日期:2014-04-07 11:54:15
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-04-28 15:16 |只看該作者 |倒序?yàn)g覽
設(shè)計(jì)一個(gè)分布式數(shù)據(jù)庫(kù)總是會(huì)遇到這種問(wèn)題,也就是進(jìn)行了分表設(shè)計(jì),同時(shí)希望保證多維度的一致性。

例如做一個(gè)訂單系統(tǒng),包含2個(gè)維度:

1,用戶(hù)維度:用戶(hù)向特定商家下單,查看自己的所有訂單。(uid分表)
2,商家維度:查看自己收到的訂單,確認(rèn)用戶(hù)的訂單。(bid分表)

典型操作1:用戶(hù)下單。
      流程:生成order id(oid),根據(jù)uid寫(xiě)入用戶(hù)訂單表,根據(jù)bid寫(xiě)入商家訂單表。  
      初衷:向2個(gè)維度都寫(xiě)入同樣的數(shù)據(jù),在分布式數(shù)據(jù)庫(kù)設(shè)計(jì)下保證用戶(hù)維度和商家維度都可以高效的完成訂單的查詢(xún)。
      問(wèn)題:寫(xiě)用戶(hù)訂單表成功,寫(xiě)商家訂單表失敗,導(dǎo)致商家無(wú)法看到訂單,用戶(hù)空等訂單。
      折衷:在用戶(hù)查看訂單的流程中,對(duì)商家訂單表進(jìn)行重查,如果記錄不存在則重試插入。

典型操作2:商家接單。
      流程:根據(jù)bid篩選該商家訂單表,選中一個(gè)訂單(包含uid,oid信息),根據(jù)uid更新用戶(hù)訂單表的oid訂單狀態(tài)為已接單,接單商家為bid,最終更新商家訂單表中該oid的狀態(tài)為已接單。
      問(wèn)題:更新用戶(hù)訂單表成功,更新商家訂單表失敗,導(dǎo)致用戶(hù)認(rèn)為預(yù)定成功,而商家查看訂單狀態(tài)沒(méi)有改變。
      折衷:在商家查看訂單的流程中,對(duì)用戶(hù)訂單表進(jìn)行重查,如果訂單已被該商家接單,那么更新商家訂單表狀態(tài)。


上面就是舉一個(gè)典型的場(chǎng)景,對(duì)于分布式數(shù)據(jù)庫(kù),沒(méi)法通過(guò)單機(jī)事務(wù)保障多表修改的一致性,準(zhǔn)確的說(shuō)是沒(méi)法保障不同維度間的一致性,同一個(gè)維度是可以通過(guò)相同的分表算法保證可以做到單機(jī)事務(wù)。在業(yè)務(wù)場(chǎng)景上,業(yè)務(wù)可以容忍不一致,有的場(chǎng)景業(yè)務(wù)沒(méi)法忍受。

各位大神們對(duì)這種問(wèn)題是否有什么經(jīng)驗(yàn)可以分享一下,謝謝。

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
2 [報(bào)告]
發(fā)表于 2015-04-28 15:21 |只看該作者
分布式事務(wù)可以做,但效率低,所以一般避免這種設(shè)計(jì)

論壇徽章:
44
15-16賽季CBA聯(lián)賽之浙江
日期:2021-10-11 02:03:59程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-02 06:20:0015-16賽季CBA聯(lián)賽之新疆
日期:2016-04-25 10:55:452016科比退役紀(jì)念章
日期:2016-04-23 00:51:2315-16賽季CBA聯(lián)賽之山東
日期:2016-04-17 12:00:2815-16賽季CBA聯(lián)賽之福建
日期:2016-04-12 15:21:2915-16賽季CBA聯(lián)賽之遼寧
日期:2016-03-24 21:38:2715-16賽季CBA聯(lián)賽之福建
日期:2016-03-18 12:13:4015-16賽季CBA聯(lián)賽之佛山
日期:2016-02-05 00:55:2015-16賽季CBA聯(lián)賽之佛山
日期:2016-02-04 21:11:3615-16賽季CBA聯(lián)賽之天津
日期:2016-11-02 00:33:1215-16賽季CBA聯(lián)賽之浙江
日期:2017-01-13 01:31:49
3 [報(bào)告]
發(fā)表于 2015-04-28 15:43 |只看該作者
本帖最后由 windoze 于 2015-04-28 15:44 編輯

這實(shí)際上是個(gè)master/detail表結(jié)構(gòu),master表是訂單,買(mǎi)家賣(mài)家是detail表或者說(shuō)輔助表。一個(gè)類(lèi)似的場(chǎng)景是銀行轉(zhuǎn)賬,交易流水是master表,帳戶(hù)表是detail表。
這種結(jié)構(gòu)的分解有很多種做法,一個(gè)典型方案是:
1、在訂單表里維護(hù)所有核心狀態(tài),比如訂單狀態(tài)、金額、付款狀態(tài)等。訂單表本身不要顯示的join其它表,而且訂單之間沒(méi)有關(guān)聯(lián),所以可以簡(jiǎn)單分區(qū)。
2、在生成訂單時(shí)維護(hù)一組“回退”的數(shù)據(jù),即撤銷(xiāo)這一定單所需的操作和數(shù)據(jù),這組數(shù)據(jù)隨著訂單狀態(tài)變化需要更新。這組數(shù)據(jù)可以保存在訂單表里,如果業(yè)務(wù)規(guī)則夠簡(jiǎn)單也可以直接從訂單數(shù)據(jù)里臨時(shí)生成
有了上面兩組數(shù)據(jù),你就可以放心的更新訂單了,反向的關(guān)聯(lián)不是關(guān)鍵事務(wù)數(shù)據(jù),可以獨(dú)立更新,比如用戶(hù)查詢(xún)自己所有的訂單,這一類(lèi)操作可以通過(guò)更新訂單狀態(tài)時(shí)附加更新獨(dú)立的“用戶(hù)訂單”數(shù)據(jù)來(lái)完成,這組數(shù)據(jù)可以定期重建,以免偶發(fā)的數(shù)據(jù)不一致。
商戶(hù)端數(shù)據(jù)可以通過(guò)消息隊(duì)列之類(lèi)的東西更新,使用持久化的消息隊(duì)列外加一個(gè)超時(shí)撤銷(xiāo)或重試就可以避免丟失訂單,加點(diǎn)dedup邏輯就可以避免重復(fù)訂單。

總之,你只要降低你的SLA就幾乎可以避免所有問(wèn)題,話(huà)說(shuō)即使你用TPC一樣不能保證百分百可靠。

論壇徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46處女座
日期:2013-10-24 14:25:01酉雞
日期:2014-04-07 11:54:15
4 [報(bào)告]
發(fā)表于 2015-04-28 15:53 |只看該作者
回復(fù) 3# windoze


的確, 我理解類(lèi)似問(wèn)題是無(wú)法避免的, 我認(rèn)為設(shè)計(jì)時(shí)可以抱著幾個(gè)核心原則:

1,接口冪等性:簡(jiǎn)單說(shuō)一筆錢(qián)從一個(gè)賬戶(hù)里扣過(guò)一次,不能再扣。
2,業(yè)務(wù)容忍性:技術(shù)故障,對(duì)業(yè)務(wù)方不造成或者盡量減少利益損失。
3,自動(dòng)化回滾:在接口冪等前提下,一些業(yè)務(wù)可以通過(guò)消息隊(duì)列實(shí)現(xiàn)自動(dòng)回滾。

論壇徽章:
44
15-16賽季CBA聯(lián)賽之浙江
日期:2021-10-11 02:03:59程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-02 06:20:0015-16賽季CBA聯(lián)賽之新疆
日期:2016-04-25 10:55:452016科比退役紀(jì)念章
日期:2016-04-23 00:51:2315-16賽季CBA聯(lián)賽之山東
日期:2016-04-17 12:00:2815-16賽季CBA聯(lián)賽之福建
日期:2016-04-12 15:21:2915-16賽季CBA聯(lián)賽之遼寧
日期:2016-03-24 21:38:2715-16賽季CBA聯(lián)賽之福建
日期:2016-03-18 12:13:4015-16賽季CBA聯(lián)賽之佛山
日期:2016-02-05 00:55:2015-16賽季CBA聯(lián)賽之佛山
日期:2016-02-04 21:11:3615-16賽季CBA聯(lián)賽之天津
日期:2016-11-02 00:33:1215-16賽季CBA聯(lián)賽之浙江
日期:2017-01-13 01:31:49
5 [報(bào)告]
發(fā)表于 2015-04-28 16:05 |只看該作者
回復(fù) 4# linux_c_py_php

接口不一定總能做到冪等,只要能回滾就行,問(wèn)題不大。
就算銀行也是發(fā)現(xiàn)問(wèn)題就回沖賬目的。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
6 [報(bào)告]
發(fā)表于 2015-04-28 18:08 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP