偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

啥是2PC?在架構(gòu)設(shè)計中有什么用?

開發(fā) 架構(gòu)
當一個事務(wù)跨越多個節(jié)點時,為了保持事務(wù)的原子性與一致性,可行引入一個協(xié)調(diào)者來統(tǒng)一掌控所有參與者(Participant)的操作結(jié)果,而2PC,就是這個思路的一個落地實踐。

什么是2PC?

二階段提交2PC(Two phase Commit)是指,在分布式系統(tǒng)里,為了保證所有節(jié)點在進行事務(wù)提交時保持一致性的一種協(xié)議算法。

為什么要引入2PC?

在分布式系統(tǒng)里,每個節(jié)點都可以知曉自己操作的成功或者失敗,卻無法知道其他節(jié)點操作的成功或失敗。

因此,當一個事務(wù)跨越多個節(jié)點時,為了保持事務(wù)的原子性與一致性,可行引入一個協(xié)調(diào)者(Coordinator)來統(tǒng)一掌控所有參與者(Participant)的操作結(jié)果,并指示它們是否要把操作結(jié)果進行真正的提交(commit)或者回滾(rollback)。

而2PC,就是這個思路的一個落地實踐。

兩階段提交,是怎么個兩階段法?

2PC的實施思路可概括為:投票階段(voting phase)與提交階段(commit phase):

  • 投票階段,參與者將操作結(jié)果通知協(xié)調(diào)者;
  • 提交階段:收到參與者的通知后,協(xié)調(diào)者再向參與者發(fā)出通知,根據(jù)反饋情況決定各參與者是否要提交還是回滾。

2PC有什么不足?

答:在算法執(zhí)行過程中,所有節(jié)點都處于阻塞狀態(tài),所有節(jié)點所持有的資源(例如數(shù)據(jù)庫數(shù)據(jù),本地文件等)都處于封鎖狀態(tài)。

典型場景為:

  • 某一個參與者確認之前,所有參與者以及協(xié)調(diào)者都處于阻塞狀態(tài);
  • 在協(xié)調(diào)者確認之前,所有參與者都處于阻塞狀態(tài);

另外,如有協(xié)調(diào)者或者某個參與者出現(xiàn)了崩潰,為了避免整個算法處于一個完全阻塞狀態(tài),往往需要借助超時機制來將算法繼續(xù)向前推進,總的來說,2PC是一種比較保守的算法。

舉個例子:

甲乙丙丁四人要組織一個會議,需要確定會議時間,不妨設(shè)甲是協(xié)調(diào)者,乙丙丁是參與者。

投票階段:

  • 甲發(fā)郵件給乙丙丁,周二十點開會是否有時間;
  • 甲回復(fù)有時間;
  • 乙回復(fù)有時間;
  • 丙遲遲不回復(fù),此時對于這個活動,甲乙丙均處于阻塞狀態(tài),算法無法繼續(xù)進行;
  • 丙回復(fù)有時間(或者沒有時間);

提交階段:

  • 協(xié)調(diào)者甲將收集到的結(jié)果反饋給乙丙?。ㄊ裁磿r候反饋,以及反饋結(jié)果如何,在此例中取決于丙的時間與決定);
  • 乙收到;
  • 丙收到;
  • 丁收到;

可以看到,當出現(xiàn)極端情況時,如果不借助超時,整個活動的推進非常的低效。

這么多缺點,那為什么2PC的應(yīng)用還這么廣泛呢?

  • 其一,2PC原理簡單,易于實現(xiàn);
  • 其二,協(xié)調(diào)者有明確的控制權(quán),而不像paxos算法各節(jié)點平等,自選舉,自推進,不可控。明確可控在工程系統(tǒng)中相當重要;
  • 其三,能切實地解決微服務(wù)架構(gòu)中,很多本地邏輯與遠程數(shù)據(jù)庫,緩存,MQ分布式事務(wù)的實際問題;
  • 其四,它是一個非常通用的方案。

因此,它的使用非常廣泛。

知其然,知其所以然。

思路比結(jié)論更重要。

責任編輯:趙寧寧 來源: 架構(gòu)師之路
相關(guān)推薦

2020-12-08 11:17:41

微內(nèi)核架構(gòu)設(shè)計

2024-03-26 16:24:46

分布式事務(wù)2PC3PC

2019-10-25 09:50:03

網(wǎng)絡(luò)爬蟲蜘蛛Wi-Fi

2021-03-06 23:28:28

2PC3PC模型

2023-03-31 13:31:45

2022-02-16 22:37:00

流式SQLSQL數(shù)據(jù)庫

2021-10-09 13:08:58

C++STLSet

2018-12-26 07:13:02

2024-11-13 06:03:45

架構(gòu)設(shè)計架構(gòu)系統(tǒng)

2019-05-21 21:15:32

架構(gòu)架構(gòu)設(shè)計性能優(yōu)化

2022-05-30 07:34:33

三范式Java

2020-01-02 15:01:27

NginxApache服務(wù)器

2017-05-17 14:51:31

DNS架構(gòu)負載均衡

2021-09-10 07:59:31

中斷鎖Java多線編程

2020-05-06 10:19:14

2PC3PC分布式事務(wù)

2021-01-13 08:49:36

數(shù)據(jù)庫2PC優(yōu)化

2020-05-11 10:30:57

2PC分布式協(xié)議

2024-01-26 08:18:03

2020-10-24 11:09:35

Python下劃線用法

2013-05-27 10:58:28

Tumblr架構(gòu)設(shè)計雅虎收購
點贊
收藏

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