精品欧美一区二区三区在线观看 _久久久久国色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精品在线一区| 亚洲成人黄色av| 亚洲欧美在线成人| 亚洲视频1区2区| 99国产超薄丝袜足j在线观看 | 亚洲中文无码av在线| 日韩精品一区二区久久| 制服丝袜亚洲网站| 久草视频这里只有精品| 香蕉av在线播放| 日韩电影在线免费| 久久国产精品电影| 国产亚洲色婷婷久久99精品91| 中文字幕不卡三区视频| 亚洲国产精品成人综合色在线婷婷| 91精品久久久久久久久中文字幕| 久久久国产成人| 美女毛片一区二区三区四区| 欧美高清视频不卡网| 欧美视频在线观看视频| 黄色的视频在线免费观看| 激情都市一区二区| 青青青国产精品一区二区| 免费成人美女女在线观看| 91成人午夜| 欧美三级中文字幕在线观看| 久久亚洲a v| 狠狠狠综合7777久夜色撩人| 国产黄色精品网站| 国产成一区二区| 国产亚洲欧美久久久久| 精品色999| 亚洲第一页在线| 啊啊啊国产视频| 国产丝袜在线播放| 国产精品国产自产拍在线| 精品一区二区视频| a网站在线观看| 男人的天堂久久精品| 国模吧一区二区三区| 久久精品日韩无码| 国产亚洲精品美女久久久久久久久久| 欧美不卡一区二区三区| 在线一区二区不卡| 美女写真久久影院| 天天色 色综合| 黄色小视频大全| 日本三级在线视频| 高清不卡在线观看| 国产精品日韩精品| 日韩精品视频播放| 亚洲精品在线观看91| 亚洲欧美精品在线| 大尺度做爰床戏呻吟舒畅| 久久电影天堂| 欧美专区亚洲专区| 成人在线观看你懂的| 黄色免费在线观看网站| 国产欧美日韩一区二区三区在线观看| yy111111少妇影院日韩夜片| 国产精品熟女久久久久久| 免费观看日韩av| 国产精品看片资源| 少妇无套内谢久久久久| 日韩福利视频网| 国产精品2018| 亚洲欧美日韩激情| 天堂精品中文字幕在线| 66m—66摸成人免费视频| 国产污视频在线观看| 国产精品多人| 欧美大片在线看免费观看| 日本裸体美女视频| 一区二区三区网站 | 黄色片网站在线| 国产精品每日更新在线播放网址| 日韩影院一区| 超碰在线国产| 国产精品国产三级国产普通话99 | 国产婷婷色一区二区三区四区| 免费电影一区| 精品久久av| 国产精品天天摸av网| 一本色道久久综合亚洲二区三区| 888av在线| 日韩毛片精品高清免费| 热久久最新网址| av中文字幕电影在线看| 色偷偷久久一区二区三区| 无码内射中文字幕岛国片| 成人啊v在线| 欧美人xxxx| 国产成人av片| 粉嫩av一区二区| 亚洲毛片在线免费观看| 中文字幕伦理片| 亚洲大全视频| 久久久久日韩精品久久久男男| 国内精品福利视频| 久久97超碰国产精品超碰| 亚洲自拍高清视频网站| 污视频在线免费| 欧美国产综合色视频| 激情图片qvod| 小早川怜子影音先锋在线观看| 色播五月激情综合网| 婷婷激情综合五月天| 久久亚洲黄色| 日韩在线观看免费全| 日韩xxxxxxxxx| 免费的成人av| 国产一区二区精品免费| sese一区| 亚洲成av人**亚洲成av**| 能在线观看的av| 日韩护士脚交太爽了| 亚洲黄色在线看| 国产三级精品三级观看| 日韩网站在线| 91丝袜美腿美女视频网站| 手机在线观看毛片| 亚洲免费观看视频| 色七七在线观看| 福利片在线一区二区| 一区二区国产精品视频| 黄色小视频在线免费看| 久久精品国产第一区二区三区 | 国产美女撒尿一区二区| 色噜噜狠狠狠综合曰曰曰| 91国产丝袜播放在线| 免费看欧美女人艹b| 国产伦精品一区二区三区四区视频| 九色蝌蚪在线| 婷婷开心激情综合| www.亚洲自拍| 欧美亚洲在线日韩| 18性欧美xxxⅹ性满足| 99热这里只有精品5| 国产视频一区在线播放| 黄页网站大全在线观看| 国产精品99久久免费| 亚洲色图av在线| 久久视频免费在线观看| 国产成人av一区二区三区在线观看| 日本一区二区三区视频在线播放 | 成人激情电影在线| 97av在线视频免费播放| 亚洲精品国产精| 亚洲免费视频成人| 亚洲妇熟xx妇色黄蜜桃| 日本大胆欧美| 国产精品v片在线观看不卡| 外国精品视频在线观看| 亚洲高清不卡在线观看| 成人三级做爰av| 99视频精品全国免费| 国产精品观看在线亚洲人成网| 亚洲人妻一区二区| 午夜视频在线观看一区| 黄色国产在线视频| 欧美三级在线| 成人av影视在线| 蜜臀av国内免费精品久久久夜夜| 欧美一区二区三区免费视频| 国产男女猛烈无遮挡在线喷水| 麻豆成人久久精品二区三区红| 亚洲成人网上| 久久青草视频| www.亚洲一区| 999久久久久| 亚洲综合一二区| 亚洲一区二区三区黄色| 亚洲美女色禁图| 精品一区二区三区日本| 成人国产二区| 中文字幕欧美日韩| 国产精品呻吟久久| 亚洲一二三四久久| 免费a级黄色片| 日韩国产精品久久| 日本一区网站| 亚洲男男av| 免费av一区二区| 国产91免费看| 色哟哟精品一区| gv天堂gv无码男同在线观看| 精品影视av免费| 久久精品无码中文字幕| 精品综合久久88少妇激情| 57pao成人国产永久免费| 欧美 日韩 综合| 精品久久久国产精品999| 理论片大全免费理伦片| 老妇喷水一区二区三区| 亚洲一一在线| 凹凸成人在线| 青青久久av北条麻妃海外网| 午夜精品一区| 日韩精品中文字幕一区二区三区| 中日韩黄色大片| 国产清纯美女被跳蛋高潮一区二区久久w| 成年人在线观看视频免费| 亚洲精品97| 久久99久久99精品蜜柚传媒| 国产福利亚洲| 久久精品99久久香蕉国产色戒| 狠狠人妻久久久久久综合麻豆 | 天堂精品一区二区三区| 亚洲综合视频| 91精品国产91久久| 麻豆传媒视频在线观看免费| 亚洲国产古装精品网站| 这里只有精品免费视频| 一区二区三区蜜桃网| 无码国产69精品久久久久同性| 精品无码三级在线观看视频| 成年人视频观看| 欧美成人激情| 蜜桃传媒视频麻豆第一区免费观看| 欧美黄色网络| 2019中文字幕全在线观看| 精品无人乱码| 精品国产sm最大网站免费看| 中文字幕亚洲乱码熟女1区2区| 中文字幕巨乱亚洲| 欧美大片免费播放器| 国产专区综合网| 国产男女激情视频| 亚洲福利精品| 午夜探花在线观看| 精品日韩在线| 久久精品综合一区| 久久久久九九精品影院| 国产精品高清网站| 免费av不卡在线观看| 久久好看免费视频| av资源在线观看免费高清| 亚洲电影中文字幕| 国产黄色av片| 91精品在线麻豆| 日韩黄色片网站| 欧美性69xxxx肥| 日韩三级小视频| 亚洲精品日韩综合观看成人91| 18精品爽国产三级网站| 久久久久久久久久久99999| 亚洲精品久久一区二区三区777 | 91精品又粗又猛又爽| 国产精品原创巨作av| 亚洲在线观看网站| 激情图片小说一区| 午夜天堂在线视频| 精品一区精品二区高清| 午夜久久久精品| 美腿丝袜亚洲三区| 日韩不卡一二三| 亚洲欧美激情诱惑| 欧美 日本 亚洲| 国产精品红桃| 欧美午夜小视频| 黄色日韩在线| 国产精品国产三级国产专区51| 韩国av一区| 久久久久久久9| 亚洲视频免费| 欧美综合在线播放| 国内精品久久久久久久97牛牛 | 精品色蜜蜜精品视频在线观看| 久草视频免费播放| 亚洲一区二区三区不卡国产欧美| 久久久久久国产精品免费播放| 亚洲综合在线视频| 国产无套内射又大又猛又粗又爽| 亚洲一区二区三区在线看| 国产一二三四在线| 性久久久久久久久久久久| 日本道在线观看| 91国偷自产一区二区三区成为亚洲经典| 无码人妻精品一区二区三区不卡| 欧美性生活影院| 一区二区国产欧美| 日韩欧美一区在线| 婷婷婷国产在线视频| 亚洲风情亚aⅴ在线发布| 国产熟女一区二区三区四区| 精品国产91亚洲一区二区三区婷婷| 五月激情六月婷婷| 亚洲精品视频网上网址在线观看| 国产日本在线| 久久久国产一区| 大香伊人久久| 国产精品久久久久久久久久久久久 | 亚洲精品中文综合第一页| 99久久亚洲精品蜜臀| 特大黑人娇小亚洲女mp4| 亚洲永久免费精品| 国产裸体舞一区二区三区| 视频一区国产视频| 超碰在线97免费| 久久国产精品区| 无套内谢丰满少妇中文字幕| 成人av片在线观看| 国产亚洲精品熟女国产成人| 亚洲少妇屁股交4| 日韩黄色在线视频| 91九色02白丝porn| 一级aaaa毛片| 亚洲国产精品人久久电影| 免费资源在线观看| 久久成人在线视频| а_天堂中文在线| 情事1991在线| 亚洲一区二区电影| 手机看片福利永久国产日韩| 欧美欧美全黄| 日韩免费视频播放| 日韩福利电影在线| 中文字幕在线播放一区| 亚洲色图在线看| 免费看日韩毛片| 欧美日韩精品一区二区三区四区 | av毛片在线免费| 国产91露脸中文字幕在线| 亚洲精品一区国产| 亚洲一区免费看| 久久精品一区二区三区中文字幕 | 天天操天天操天天操天天操天天操| 亚洲欧美区自拍先锋| av一级在线观看| 亚洲第一二三四五区| 国产黄色小视频在线| 国产精品成人一区| 欧美sss在线视频| 成人一级生活片| 国产乱理伦片在线观看夜一区| 自拍偷拍你懂的| 欧美色另类天堂2015| 蜜桃久久一区二区三区| 久久久精品日本| 97精品国产99久久久久久免费| 国外成人免费视频| 欧美91视频| 97超碰免费在线观看| 中文字幕一区二区三区四区不卡| 4438国产精品一区二区| 亚洲精品成人久久久| 久草在线新免费首页资源站| 国产一区二区在线免费| 日韩国产一区二区三区| 中文字幕欧美人妻精品一区| 91色乱码一区二区三区| 中文字幕在线观看免费视频| 亚洲电影免费观看高清完整版在线观看| 欧美大胆的人体xxxx| 97se亚洲综合| 欧美一区视频| 潘金莲一级淫片aaaaaaa| 一区二区理论电影在线观看| 99er热精品视频| 欧美日韩成人网| 中文字幕一区日韩精品| 亚洲国产欧美日韩| 蜜桃免费网站一区二区三区| 天天舔天天操天天干| 欧美日韩中字一区| av在线电影网| 国产视频999| 亚洲色图网站| 色综合久久久无码中文字幕波多| 亚洲综合在线五月| 精品久久久免费视频| 欧美裸体xxxx极品少妇| 97久久亚洲| 中文字幕色呦呦| 成+人+亚洲+综合天堂| 精品在线播放视频| 亚洲精品91美女久久久久久久| 九九精品调教| 91久久久一线二线三线品牌| 欧美阿v一级看视频| 91插插插影院| 亚洲最快最全在线视频| 亚洲人视频在线观看| 91国内精品久久| 西瓜成人精品人成网站| 成人免费毛片网| 国产精品私房写真福利视频| 精品人妻av一区二区三区| 91精品国产高清久久久久久| 精品免费视频| 佐佐木明希电影| 色老汉av一区二区三区| 国产精品久久麻豆| 国产精品亚洲不卡a| 日本成人在线一区| 欧美伦理片在线观看| 亚洲男女一区二区三区| 免费理论片在线观看播放老| 亚洲一区二区三区成人在线视频精品|