自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試官問(wèn)到分布式事務(wù)?這樣回答就對(duì)了!

開(kāi)發(fā) 架構(gòu)
1. 通過(guò)本地消息表+job重試對(duì)賬+下游(接口冪等、提供接口的校驗(yàn))+(打印日志+告警+人工介入補(bǔ)償)基于本地消息表實(shí)現(xiàn)分布式事務(wù)基于mq實(shí)現(xiàn)柔性分布式事務(wù)。

小王面試某互聯(lián)網(wǎng)公司高級(jí)開(kāi)發(fā)崗位,介紹項(xiàng)目的時(shí)候,談到公司業(yè)務(wù)量和研發(fā)團(tuán)隊(duì)暴增后,自己主導(dǎo)完成公司項(xiàng)目的架構(gòu)升級(jí),從傳統(tǒng)的單體架構(gòu)升級(jí)到微服務(wù)架構(gòu),面試官接下來(lái)就問(wèn)了一道經(jīng)典面試題:你們架構(gòu)升級(jí)過(guò)程中,分布式事務(wù)是如何解決的?請(qǐng)介紹一下。

看重點(diǎn)

主要圍繞三個(gè)大方向:

1. 事務(wù)相關(guān)概念介紹;

 2. 分布式事務(wù)常見(jiàn)方案;

 3. 柔性事務(wù)之最大努力通知型落地實(shí)現(xiàn);

1.事務(wù)相關(guān)概念介紹

事務(wù)是一系列的動(dòng)作,它們綜合在一起才是一個(gè)完整的工作單元,這些動(dòng)作必須全部完成,如果有一個(gè)失敗的話,那么事務(wù)就會(huì)回滾到最開(kāi)始的狀態(tài),仿佛什么都沒(méi)發(fā)生過(guò)一樣。

單事務(wù)概念

應(yīng)用多次數(shù)據(jù)庫(kù)操作,通過(guò)用事務(wù)進(jìn)行管理,來(lái)保證ACID原則。

原子性(A):操作這些指令時(shí),要么全部執(zhí)行成功,要么全部不執(zhí)行。只要其中一個(gè)指令執(zhí)行失敗,所有的指令都執(zhí)行失敗,數(shù)據(jù)進(jìn)行回滾,回到執(zhí)行指令前的數(shù)據(jù)狀態(tài)。

一致性(C):事務(wù)的執(zhí)行使數(shù)據(jù)從一個(gè)狀態(tài)轉(zhuǎn)換為另一個(gè)狀態(tài),事務(wù)在執(zhí)行之前和之后,數(shù)據(jù)庫(kù)都必須處于一致性狀態(tài)。

隔離性(I):在該事務(wù)執(zhí)行的過(guò)程中,無(wú)論發(fā)生的任何數(shù)據(jù)的改變都應(yīng)該只存在于該事務(wù)之中,對(duì)外界不存在任何影響。只有在事務(wù)確定正確提交之后,才會(huì)顯示該事務(wù)對(duì)數(shù)據(jù)的改變。其他事務(wù)才能獲取到這些改變后的數(shù)據(jù)。

持久性(D):當(dāng)事務(wù)正確完成后,它對(duì)于數(shù)據(jù)的改變是永久性的。

分布式事務(wù)概念

  1. 單應(yīng)用內(nèi)部調(diào)用(多個(gè)數(shù)據(jù)源調(diào)用,操作多個(gè)庫(kù))以某業(yè)務(wù)的動(dòng)態(tài)折扣業(yè)務(wù)場(chǎng)景為例:動(dòng)態(tài)折扣規(guī)則-運(yùn)營(yíng)后臺(tái)配置(配置庫(kù))用戶(hù)享受的動(dòng)態(tài)折扣-用戶(hù)折扣記錄(按userId分片的分片庫(kù),120個(gè))
  2. 涉及多應(yīng)用調(diào)用(有可能操作同一個(gè)數(shù)據(jù)源,也有可能操作不同的數(shù)據(jù)源)以某業(yè)務(wù)用戶(hù)抵扣可用優(yōu)惠場(chǎng)景為例:用戶(hù) -> 查詢(xún)可用優(yōu)惠 -> 支付訂單 -> 調(diào)用動(dòng)態(tài)折扣系統(tǒng)抵扣 -> 調(diào)用優(yōu)惠券系統(tǒng)抵扣

CAP理論

C:一致性,數(shù)據(jù)一致性:強(qiáng)一致性、弱一致性、最終一致性。

強(qiáng)一致性:流程涉及的各個(gè)環(huán)節(jié)數(shù)據(jù)必須實(shí)時(shí)一致性

弱一致性:流程涉及的各個(gè)環(huán)節(jié)數(shù)據(jù)允許存在部分?jǐn)?shù)據(jù)不一致

最終一致性:允許存在中間狀態(tài),只要求經(jīng)過(guò)一段時(shí)間后,數(shù)據(jù)最終是一致的

A:可用性:系統(tǒng)提供的服務(wù)必須一直處于可用的狀態(tài),對(duì)于用戶(hù)的每一個(gè)操作請(qǐng)求總是能夠在有限的時(shí)間內(nèi)返回結(jié)果。

P:分區(qū)容錯(cuò)性(一定會(huì)存在):分布式系統(tǒng)在遇到任何網(wǎng)絡(luò)分區(qū)故障時(shí),仍然需要能夠保證對(duì)外提供滿(mǎn)足一致性和可用性的服務(wù)。

無(wú)法同時(shí)滿(mǎn)足CAP,常見(jiàn)組合:AP:互聯(lián)網(wǎng)業(yè)務(wù)  CP:金融業(yè)務(wù)

base理論

base理論是CAP理論中AP方案的延伸,核心思想是即時(shí)無(wú)法做到強(qiáng)一致性,但每個(gè)應(yīng)用都可以根據(jù)自身業(yè)務(wù)特點(diǎn),采用適當(dāng)?shù)姆绞絹?lái)使系統(tǒng)達(dá)到最終一致性。

Basically Available(基本可用)Soft state(軟狀態(tài),中間狀態(tài))Eventually consistent(最終一致性)

2.分布式事務(wù)常見(jiàn)方案

分布式場(chǎng)景下,多個(gè)服務(wù)同時(shí)對(duì)服務(wù)一個(gè)流程,比如電商下單場(chǎng)景,需要支付服務(wù)進(jìn)行支付、庫(kù)存服務(wù)扣減庫(kù)存、訂單服務(wù)進(jìn)行訂單生成、物流服務(wù)更新物流信息等。如果某一個(gè)服務(wù)執(zhí)行失敗,或者網(wǎng)絡(luò)不通引起的請(qǐng)求丟失,那么整個(gè)系統(tǒng)可能出現(xiàn)數(shù)據(jù)不一致的原因。

常見(jiàn)方案:

1. 設(shè)計(jì)方案盡可能規(guī)避分布式事務(wù)方案(相似的業(yè)務(wù)放在一起,不要過(guò)度拆分)

2. 強(qiáng)事務(wù)(CP, 低并發(fā)短事務(wù))和柔性事務(wù)(AP,高性能)

強(qiáng)事務(wù):滿(mǎn)足CP理論,XA協(xié)議(2PC、JTA、JTS)、3PC,但由于同步阻塞,處理效率低,適合低并發(fā)、短事務(wù)業(yè)務(wù)。

2PC:Seeta(AT)、LCN(2PC),適合分布式系統(tǒng)   JTA:atomikos(適合單系統(tǒng)多數(shù)據(jù)源)

柔性事務(wù):滿(mǎn)足AP,base理論,適合異步更新數(shù)據(jù),并且對(duì)數(shù)據(jù)的實(shí)時(shí)性要求較低的場(chǎng)景,主要分為: .補(bǔ)償型(TCC、saga) .最大努力通知型(MQ、本地消息表) .異步確保型(MQ、本地消息表)

實(shí)現(xiàn)方式:TCC(seeta-tcc,lcn-tcc)、Saga(seeta-saga狀態(tài)機(jī)模式、Aop模式)、本地事務(wù)消息、事務(wù)消息MQ

互聯(lián)網(wǎng)業(yè)務(wù),一般的流量比較大,涉及很多高并發(fā)場(chǎng)景,我們一般采用柔性事務(wù),這樣系統(tǒng)的性能好。

3.柔性事務(wù)之最大努力通知型落地實(shí)現(xiàn)

互聯(lián)網(wǎng)應(yīng)用最廣泛:

  1. 重試:通過(guò)本地消息表+job重試對(duì)賬+下游(接口冪等、提供接口的校驗(yàn))+(打印日志+告警+人工介入補(bǔ)償)基于本地消息表實(shí)現(xiàn)分布式事務(wù)基于mq實(shí)現(xiàn)柔性分布式事務(wù)。
  2. 回滾:1)程序捕獲異常,調(diào)用回滾代碼  2)發(fā)送回滾MQ,各個(gè)系統(tǒng)消費(fèi)MQ,調(diào)用本地回滾方法。
責(zé)任編輯:武曉燕 來(lái)源: 不碼不瘋魔
相關(guān)推薦

2021-06-03 08:55:54

分布式事務(wù)ACID

2019-12-09 10:37:27

Hash算法面試

2024-09-24 16:30:46

分布式鎖Redis數(shù)據(jù)中間件

2022-08-11 18:27:50

面試Redis分布式鎖

2022-04-19 07:31:28

事務(wù)隔離機(jī)制數(shù)據(jù)庫(kù)

2022-11-25 17:29:27

分布式事務(wù)

2018-10-12 09:42:00

分布式鎖 Java多線

2024-02-22 17:02:09

IDUUID雪花算法

2020-09-27 06:52:22

分布式存儲(chǔ)服務(wù)器

2020-12-03 06:30:11

內(nèi)部類(lèi)對(duì)象變量

2020-06-17 21:22:56

Serverless面試官架構(gòu)

2024-08-07 08:15:47

2022-06-27 08:21:05

Seata分布式事務(wù)微服務(wù)

2021-01-08 09:14:59

分布式事務(wù)框架

2024-10-07 08:52:59

分布式系統(tǒng)分布式 IDID

2021-10-22 08:37:13

消息不丟失rocketmq消息隊(duì)列

2022-10-09 08:38:17

消息隊(duì)列面試官模式

2022-06-21 08:27:22

Seata分布式事務(wù)

2017-07-26 15:08:05

大數(shù)據(jù)分布式事務(wù)

2021-11-03 11:58:44

分布式事務(wù)面試
點(diǎn)贊
收藏

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