精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊分布式數(shù)據(jù)庫對2PC的優(yōu)化

運維 數(shù)據(jù)庫運維 分布式
在單體數(shù)據(jù)庫時代,數(shù)據(jù)庫本身就支持ACID事務(wù),開發(fā)人員甚至只要在方法上加一個@Transactional注解就可以搞定事務(wù)了,非常簡單。

[[375525]]

本文轉(zhuǎn)載自微信公眾號「jinjunzhu」,作者jinjunzhu。轉(zhuǎn)載本文請聯(lián)系jinjunzhu公眾號。

在單體數(shù)據(jù)庫時代,數(shù)據(jù)庫本身就支持ACID事務(wù),開發(fā)人員甚至只要在方法上加一個@Transactional注解就可以搞定事務(wù)了,非常簡單。但是到了分庫分表和分布式數(shù)據(jù)庫時代,傳統(tǒng)數(shù)據(jù)庫的ACID屬性只能在單節(jié)點上起作用,全局事務(wù)需要一個全局的事務(wù)管理器來維護,復(fù)雜性很高。

而在分布式事務(wù)領(lǐng)域,全局事務(wù)使用的最多的指導(dǎo)方案就是2PC,也叫兩階段提交,但是2PC也有一些缺陷,今天我們就來看看分布式數(shù)據(jù)庫是怎么對這些缺陷做優(yōu)化的。

兩階段提交(2PC)

兩階段提交協(xié)議主要有2種,一種是應(yīng)用層的TCC,比如阿里巴巴的seata就實現(xiàn)了TCC模式,這種模式的特點是每個服務(wù)都需要提供try/confirm/cancel這3個實現(xiàn),這3個實現(xiàn)需要在業(yè)務(wù)代碼中實現(xiàn),對業(yè)務(wù)侵入高。

今天我分享的是面向資源的2PC協(xié)議,最早由Jim Gray提出,整個事務(wù)分為2個階段,prepare階段和commit階段,這2個階段由協(xié)調(diào)節(jié)點和DB資源管理器協(xié)作完成。

這里我們還是以經(jīng)典的電商系統(tǒng)為例,整個系統(tǒng)分為訂單、賬戶和庫存3個服務(wù),我們收到客戶的購買請求后,協(xié)調(diào)節(jié)點需要協(xié)調(diào)訂單服務(wù)生成訂單,賬戶服務(wù)扣減商品款,庫存服務(wù)扣減商品庫存,假如這3個服務(wù)的數(shù)據(jù)庫在不同切片上,這個協(xié)調(diào)過程具體如下:

1.prepare階段

協(xié)調(diào)節(jié)點向所有服務(wù)發(fā)送prepare請求,每個服務(wù)收到prepare請求后會嘗試執(zhí)行本地事務(wù),但不會真正提交本地事務(wù)。這個嘗試執(zhí)行的過程會檢查到是否具備執(zhí)行事務(wù)的條件,比如資源是否被鎖定等,當(dāng)所有服務(wù)都嘗試執(zhí)行成功后會給協(xié)調(diào)節(jié)點返回一個yes,如下圖:

2.commit/rollback階段

如果prepare階段所有服務(wù)有返回了yes,那么協(xié)調(diào)節(jié)點就會通知各個服務(wù)執(zhí)行commit操作,這時各個服務(wù)就會真正的提交本地事務(wù)。如下圖:

如果prepare階段有服務(wù)返回了no,協(xié)調(diào)節(jié)點就需要通知所有服務(wù)進行本地事務(wù)回滾。

2PC存在問題

上面我們簡單地分析了2PC協(xié)議的執(zhí)行過程,那么2PC有什么問題呢?

1.性能問題

本地事務(wù)在prepare階段鎖定資源,比如賬戶服務(wù)要扣減xiaoming這個賬戶的金額100元,那必須把xiaoming這個賬戶先鎖定。這樣如果有其他事務(wù)也要修改xiaoming這個賬戶,就必須等待前面的事務(wù)完成。這樣就造成了延遲和性能下降。

2.協(xié)調(diào)節(jié)點單點故障

協(xié)調(diào)節(jié)點是單節(jié)點的,如果發(fā)生故障,整個事務(wù)會一直阻塞。比如第一個階段prepare成功了,但是第二個階段協(xié)調(diào)節(jié)點發(fā)出commit指令之前宕機了,所有服務(wù)的數(shù)據(jù)資源處于鎖定狀態(tài),后面的事務(wù)只能等待。

3.數(shù)據(jù)不一致

如果第一階段prepare成功了,但是第二階段commit的時候,如果協(xié)調(diào)節(jié)點通知庫存服務(wù)失敗了,這樣就相當(dāng)于生成了訂單,扣減了賬戶,但是沒有扣減庫存。這導(dǎo)致了數(shù)據(jù)的不一致。

Percolator模型

主流的NewSQL數(shù)據(jù)庫,比如TiDB,是用Percolator模型來解決的。如下官網(wǎng)鏈接:

  1. https://pingcap.com/blog-cn/percolator-and-txn/ 

Percolator模型來自于Google論文:

  1. 《Large-scale Incremental Processing Using Distributed Transactions and Notifications》 

原文可以看下面連接,網(wǎng)上也有好多翻譯版的:

  1. https://www.cs.princeton.edu/courses/archive/fall10/cos597B/papers/percolator-osdi10.pdf 

Percolator的前提是本地事務(wù)的數(shù)據(jù)庫支持多版本并發(fā)控制協(xié)議,也就是mvcc。現(xiàn)在主流數(shù)據(jù)庫比如mysql、oracle都是支持的。

a)初始階段

還是看上面我們提到的經(jīng)典電商案例,初始階段,我們假設(shè)訂單數(shù)量是0,賬戶服務(wù)是1000,庫存服務(wù)是100,客戶下了1個訂單后,訂單服務(wù)增加1個訂單,賬戶服務(wù)扣除金額100,庫存服務(wù)扣除商品數(shù)量1。各個切片的初始數(shù)據(jù)如下表:

":"前面的是時間戳或者數(shù)據(jù)版本,后面是數(shù)據(jù)值。這3張表中,第一條記錄不保存真正的數(shù)據(jù),而是保存了指向真正數(shù)據(jù)的指針,比如訂單表中,6這個版本的數(shù)據(jù)指向了5個版本的數(shù)據(jù),訂單數(shù)量是0。

b)prepare階段

在prepare階段,協(xié)調(diào)節(jié)點向每個服務(wù)發(fā)送了prepare命令,這3張表分別進入了prepare階段。在prepare階段,Percolator定義了主鎖的概念,每個分布式事務(wù)只能有一個服務(wù)獲得主鎖,比如本案例的訂單服務(wù),其他服務(wù)的鎖指向這個主鎖的指針,如下表:

prepare階段,每個服務(wù)會寫日志,并且根據(jù)時間戳記錄事務(wù)的私有版本,這樣其他事務(wù)就不能操作這三條數(shù)據(jù)了。

c)commit階段

在commit階段,協(xié)調(diào)節(jié)點只需要跟訂單服務(wù)通信,因為訂單服務(wù)擁有primary lock,也就是說協(xié)調(diào)節(jié)點只跟擁有primary lock的切片通信。這時數(shù)據(jù)如下表:

這時我們注意到除了order服務(wù)的鎖沒有了,而且增加了版本8指向版本7,說明訂單服務(wù)已經(jīng)沒有私有版本了,但是賬戶服務(wù)和庫存服務(wù)的私有版本還在。Percolator的獨特之處就是在這里,它會啟動異步線程來更新賬戶服務(wù)和庫存服務(wù)。最終數(shù)據(jù)如下表:

因為協(xié)調(diào)節(jié)點只需要跟獲取primary lock的切片進行通信,要么成功要么失敗這樣就避免了commit時節(jié)點不能全部成功導(dǎo)致的數(shù)據(jù)不一致問題。

而prepare階段記錄了日志,如果某個切片commit失敗,可以根據(jù)日志進行再次commit,這樣就保證了數(shù)據(jù)最終一致。

如果協(xié)調(diào)節(jié)點宕機了,異步線程可以做資源的釋放工作,避免了因單點故障通信失敗造成的資源不能釋放。

這里我們要注意2點:

  • primary lock的選擇是隨機的,比如本例中并不一定會選擇訂單服務(wù)
  • 協(xié)調(diào)節(jié)點發(fā)送commit后訂單服務(wù)先提交成功,這時如果其他事務(wù)要讀取賬戶服務(wù)和庫存服務(wù)的2條數(shù)據(jù),雖然2條數(shù)據(jù)上面還有l(wèi)ock,但是查找primary@order.bal發(fā)現(xiàn)已提交,所以是可以讀取的。

總結(jié)

2PC協(xié)議有3個問題,性能問題、單點故障和數(shù)據(jù)不一致。

Percolator模型簡化了協(xié)調(diào)節(jié)點和切片的通信流程,讓協(xié)調(diào)節(jié)點只跟其中一個primary切片通信,一方面,減少了通信開銷,另一方面,避免了因為單點故障,commit階段部分節(jié)點通信失敗導(dǎo)致的數(shù)據(jù)不一致問題。

Percolator在prepare階段記錄了日志,這樣即使協(xié)調(diào)節(jié)點故障了,恢復(fù)后也可以根據(jù)日志來做事務(wù)恢復(fù)。

Percolator使用異步線程來做資源的釋放工作,這樣即使協(xié)調(diào)節(jié)點故障了,也不用擔(dān)心資源得不到釋放。

知名的NewSQL數(shù)據(jù)庫TiDB就是參照Percolator模型來對2PC協(xié)議進行優(yōu)化的。

但是我們要知道,2PC的性能問題還是存在的,好在主流的分布式數(shù)據(jù)庫都做了優(yōu)化,性能損耗只會越來越小。

 

責(zé)任編輯:武曉燕 來源: jinjunzhu
相關(guān)推薦

2024-09-09 09:19:57

2023-12-11 09:11:14

TDSQL技術(shù)架構(gòu)

2022-03-10 06:36:59

分布式數(shù)據(jù)庫排序

2022-03-02 09:13:00

分布式數(shù)據(jù)庫Sharding

2022-12-14 08:00:00

數(shù)據(jù)庫分布式數(shù)據(jù)庫隔離

2023-05-26 07:55:06

分布式數(shù)據(jù)庫SQL

2022-12-01 07:36:40

2023-12-05 07:30:40

KlustronBa數(shù)據(jù)庫

2021-12-20 15:44:28

ShardingSph分布式數(shù)據(jù)庫開源

2023-07-28 07:56:45

分布式數(shù)據(jù)庫SQL

2023-07-31 08:27:55

分布式數(shù)據(jù)庫架構(gòu)

2021-03-06 23:28:28

2PC3PC模型

2023-11-14 08:24:59

性能Scylla系統(tǒng)架構(gòu)

2020-06-23 09:35:13

分布式數(shù)據(jù)庫網(wǎng)絡(luò)

2022-08-01 18:33:45

關(guān)系型數(shù)據(jù)庫大數(shù)據(jù)

2023-03-07 09:49:04

分布式數(shù)據(jù)庫

2011-05-19 09:18:48

分布式數(shù)據(jù)庫

2022-06-09 10:19:10

分布式數(shù)據(jù)庫

2024-03-11 08:57:02

國產(chǎn)數(shù)據(jù)庫證券
點贊
收藏

51CTO技術(shù)棧公眾號

欧美国产日韩一区| 精品久久久久久国产91| 国产精品自拍偷拍| 久久久www成人免费毛片| 牛牛影视久久网| 欧美视频在线不卡| 日韩精品一区在线视频| 九九九伊在人线综合| 韩国三级在线一区| 国产91ⅴ在线精品免费观看| 制服丨自拍丨欧美丨动漫丨| 牛牛视频精品一区二区不卡| 88在线观看91蜜桃国自产| 国产免费黄色小视频| 最新国产在线观看| jvid福利写真一区二区三区| 国产欧美亚洲视频| 日本三级黄色大片| 忘忧草精品久久久久久久高清| 亚洲国产精品人久久电影| 污污的网站免费| 在线观看网站免费入口在线观看国内 | 欧美激情第99页| 乐播av一区二区三区| jizz久久精品永久免费| 欧美日韩激情在线| 久久久久免费精品| av资源在线| 亚洲视频一区在线| 色就是色欧美| 欧洲成人av| 北条麻妃一区二区三区| 91香蕉电影院| 日韩不卡高清视频| 免费日韩av| 韩日欧美一区二区| 久久久国产精品黄毛片| 围产精品久久久久久久| 在线成人免费网站| 人妻体内射精一区二区| 红杏视频成人| 欧美va亚洲va香蕉在线| 911av视频| 亚洲在线资源| 欧美二区乱c少妇| 最新中文字幕免费视频| 欧美成人h版| 欧美性猛交xxxx免费看漫画| 大j8黑人w巨大888a片| 黄视频在线免费看| 亚洲大片精品永久免费| 日韩av中文字幕第一页| 男女在线视频| 亚洲成av人片一区二区三区| 日韩精品一区在线视频| 牛牛精品在线| 狠狠躁夜夜躁久久躁别揉| 亚洲人成无码网站久久99热国产| 国产蜜臀av在线播放| 亚洲一区中文在线| 国产乱子伦农村叉叉叉| 涩涩视频在线播放| 日韩欧美在线视频观看| 黄色国产精品视频| 日韩天堂在线| 欧美日韩国产精品成人| 涩多多在线观看| 欧美电影院免费观看| 欧美mv日韩mv国产| 免费的av网站| 国产一区二区三区探花| 中文亚洲视频在线| www欧美com| 影音先锋中文字幕一区二区| 97国产精品免费视频| 三级网站在线播放| 久久国产精品一区二区| 999国产视频| 天天干天天爽天天操| 久久这里只有精品6| 亚洲国产精品久久久久婷婷老年| 黄色网页在线看| 亚洲国产精品久久久久秋霞影院| 国产成人精品视频免费看| 草民电影神马电影一区二区| 欧美一区二区三区视频| 亚洲av成人精品一区二区三区 | 日韩精品在线视频观看| 国产高潮呻吟久久| 综合av在线| 91精品国产自产91精品| japanese国产在线观看| 国产成人自拍网| 精品国产一区二区三区免费| av在线资源网| 亚洲已满18点击进入久久| 不要播放器的av网站| 国产视频一区二| 亚洲精品视频免费| 手机在线免费看片| 亚洲资源av| 亚洲jizzjizz日本少妇| 免费在线一级视频| 亚洲激情图片一区| av在线无限看| 激情小说一区| 日韩天堂在线视频| 久久久久99精品成人片我成大片| 狠狠色丁香久久婷婷综| 久久久久久99| gogogogo高清视频在线| 色狠狠av一区二区三区| 在线免费看黄色片| 91久久久精品国产| 国产成人精品综合| 欧洲成人一区二区三区| 亚洲免费在线观看| 一区二区三区入口| 日韩欧美黄色| 久久久久在线观看| 91在线视频在线观看| 国产激情视频一区二区三区欧美| 日本在线观看一区二区三区| 九色porny丨入口在线| 日韩免费视频线观看| 国产人与禽zoz0性伦| 日韩专区一卡二卡| 久草热久草热线频97精品| 牛牛在线精品视频| 日韩限制级电影在线观看| 午夜国产福利视频| 久久资源在线| 免费看成人午夜电影| 美女av在线免费看| 亚洲国产精品va在线看黑人 | 147欧美人体大胆444| 瑟瑟视频在线| 欧美日韩中文另类| 91网站免费入口| 亚洲一区二区三区免费在线观看| av一区观看| 91高清在线观看视频| 777欧美精品| 成人高潮免费视频| 国产一区二区精品久久| 国产精品波多野结衣| 四虎影视国产精品| 久久精品色欧美aⅴ一区二区| 亚洲精品国产精品国自产网站按摩| 久久精品人人做人人爽97| 日韩av一二三四区| 免费国产自久久久久三四区久久| 69av在线视频| 色中色在线视频| 色婷婷综合在线| 欧美黄色高清视频| 美腿丝袜亚洲一区| 国产高清免费在线| 伊人www22综合色| 久久免费视频网| 色视频在线观看福利| 在线观看www91| 农村老熟妇乱子伦视频| 寂寞少妇一区二区三区| 日韩video| 91精品啪在线观看国产手机 | av动漫在线播放| 老牛影视av一区二区在线观看| 97久久国产精品| 国际av在线| 欧美人伦禁忌dvd放荡欲情| 麻豆视频在线免费看| 成人妖精视频yjsp地址| 大陆极品少妇内射aaaaa| 国产成人3p视频免费观看| 国产精品一区二区久久精品| 天堂va在线| 亚洲精品少妇网址| 一区二区视频免费| 亚洲午夜电影网| 久久久久久国产精品无码| 精品在线你懂的| 无码熟妇人妻av在线电影| 亚洲成人一品| 91久久中文字幕| 欧美激情网站| 尤物yw午夜国产精品视频明星| 欧美精品一区免费| 国产三级在线观看| 91精品国产一区二区三区香蕉| 国产中文字幕免费| 国产无一区二区| 亚洲一区二区三区四区精品| 日韩视频一区| 在线精品视频一区二区三四| 久久国产成人精品国产成人亚洲| 日韩毛片视频| 国产精品国产精品| 成人在线观看免费播放| 久久久久亚洲精品| av在线播放网站| 亚洲国产精品久久久久秋霞蜜臀| 91国内精品久久久| 岛国av一区二区| 朝桐光av在线| 国产欧美日韩另类一区| 精品人妻伦一二三区久| 韩国欧美一区二区| 欧美精品成人网| 一区二区亚洲| 精品91一区二区三区| 深爱激情综合网| 国产原创精品| 日韩在线精品强乱中文字幕| 国产精品视频xxxx| 久久sese| 欧美性视频在线| 日韩精品卡一| 另类天堂视频在线观看| 97电影在线看视频| 日韩va亚洲va欧洲va国产| 亚洲精品免费在线观看视频| 91精品国产乱| 伊人久久成人网| 在线观看视频一区二区欧美日韩| 国产成人无码精品亚洲| 亚洲愉拍自拍另类高清精品| 污软件在线观看| 国产精品乱子久久久久| 人妻少妇无码精品视频区| 99精品国产热久久91蜜凸| 亚洲精品鲁一鲁一区二区三区 | 少妇献身老头系列| 激情综合五月婷婷| 欧美在线aaa| 免费黄网站欧美| 国产高潮免费视频| 蜜臀av一区二区在线观看| 亚洲少妇第一页| 日韩国产高清影视| 天堂在线资源视频| 日av在线不卡| 国产喷水theporn| 蜜臀av性久久久久蜜臀aⅴ| 激情视频免费网站| 麻豆成人91精品二区三区| 天天干天天玩天天操| 麻豆精品视频在线观看视频| 一本色道久久亚洲综合精品蜜桃 | 日韩欧美中文字幕在线观看| 五月婷婷中文字幕| 欧美性少妇18aaaa视频| 国产99久久久| 欧美三级韩国三级日本一级| 亚洲视频在线观看一区二区| 7777精品伊人久久久大香线蕉的 | 一级做a爱片久久| 久久久久久久久久99| 亚洲不卡一区二区三区| 国产成人在线播放视频| 欧美色道久久88综合亚洲精品| 精品免费囯产一区二区三区| 色婷婷久久久久swag精品| 一区二区自拍偷拍| 日韩欧美色综合| 深爱激情五月婷婷| 在线不卡国产精品| 国产成人无吗| 98精品国产自产在线观看| 亚洲一区二区三区四区| 国产区精品在线观看| 香蕉成人app| 欧美精品尤物在线| 久久理论电影| 日韩av新片网| 日本最新不卡在线| 搡的我好爽在线观看免费视频| av影院午夜一区| 九九九视频在线观看| 一区二区三区在线观看网站| 国产微拍精品一区| 欧美日韩国产色站一区二区三区| 亚洲av综合色区无码一二三区| 国产视频亚洲精品| 黄色小网站在线观看| 91超碰caoporn97人人| 91久久久久久白丝白浆欲热蜜臀| 亚洲综合精品一区二区| 色愁久久久久久| 波多野结衣三级在线| 国产精品久久久久久模特| 天天干天天玩天天操| jvid福利写真一区二区三区| 中国美女黄色一级片| 精品久久久久久国产| 国产伦一区二区| 亚洲免费中文字幕| 日本h片在线观看| 国产精品成人av性教育| 成人影院中文字幕| 亚洲精品乱码久久久久久蜜桃91 | 免费观看国产精品| 中文字幕综合在线| 午夜欧美激情| 国产精品播放| 99久久激情| 免费日韩中文字幕| 成人免费毛片aaaaa**| 日本美女黄色一级片| 日本韩国精品一区二区在线观看| 黄色aaa大片| 蜜月aⅴ免费一区二区三区| 99re66热这里只有精品4| 激情久久av| 欧美日韩1区| 九九九九九九九九| 欧美激情中文字幕一区二区| 亚洲精品男人的天堂| 亚洲第一区在线观看| 影音先锋男人在线资源| 国产一区二区丝袜| 精品视频亚洲| 国产精品无码一本二本三本色| 99久久国产免费看| 国产精品二区一区二区aⅴ| 欧美一二三区在线| 快射视频在线观看| 国产美女久久精品| 精品国产成人| 日韩免费高清在线| 久久精品免费在线观看| 精品91久久久| 日韩电视剧在线观看免费网站| 波多野结衣中文字幕久久| 999国内精品视频在线| 最新精品国产| 日本黄色大片在线观看| 亚洲精品福利视频网站| av免费观看在线| 欧美精品日韩三级| 136导航精品福利| 青春草国产视频| av亚洲精华国产精华| 欧美一二三区视频| 精品视频在线播放色网色视频| 中文日产幕无线码一区二区| 免费在线成人av| 视频一区二区欧美| 免费黄色在线网址 | 亚洲风情第一页| 高清欧美性猛交| 欧美人与动xxxxz0oz| 黑森林福利视频导航| 国产亚洲欧美一区在线观看| 亚洲精品毛片一区二区三区| 国产一区二区三区毛片| 全球中文成人在线| 特级黄色录像片| 丁香激情综合国产| 欧美一区二区激情视频| 国产一区二区日韩精品欧美精品| 国语自产精品视频在线看抢先版结局| 亚洲人成人77777线观看| 黑人精品欧美一区二区蜜桃| 国产一级片久久| 亚洲免费精彩视频| 欧美系列精品| 黄网站色视频免费观看| 97久久精品人人做人人爽| 免费av中文字幕| 久久久精品影院| 欧美自拍视频| 亚洲综合欧美激情| 一区二区三区高清不卡| 欧洲一区av| 成人黄色片在线| 亚洲国产影院| 国产性猛交xx乱| 精品欧美黑人一区二区三区| 欧美成人h版| 久久久久久久免费视频| 91在线播放网址| 一级视频在线播放| 久久人人看视频| 日韩欧美视频专区| 少妇激情一区二区三区视频| 日本国产一区二区| 国产精品探花在线| 亚洲成人午夜在线| 成年人网站91| 一级片在线免费观看视频| 91精品国产精品| 久久久久久久久99精品大| 精品夜夜澡人妻无码av| 51午夜精品国产| 日韩电影免费观看高清完整版| 男女h黄动漫啪啪无遮挡软件| 久久综合一区二区| 国产福利视频导航| 国产精品免费久久久久久|