av免费网址-青青青手机在线视频-√天堂资源中文-免费在线观看av网站-午夜dj视频在线观看完整版1-老少配老妇老熟女中文普通话-亚洲精品久久久久成人2007-国产精品边做奶水狂喷-另类综合小说-精品无码成人片一区二区-超碰超在线-国产对白刺激视频-亚洲天堂网在线观看-国产精品国产精品偷麻豆-国产精品美女久久久久久福利-国产露脸国语对白在线-91人人爽久久涩噜噜噜-亚洲欧美久久-久久综合色网-特级黄色 一级播放

軟考系統架構設計師案例分析例題及答案解析!

系統架構設計師 責任編輯:龍小林 2025-11-28

添加老師微信

備考咨詢

加我微信

案例場景

某大型電商平臺構建了一個在線B2B商店系統。該系統采用微服務架構,將系統功能分解為多個松散耦合且可獨立部署的較小組件或服務。最終設計的系統包括了電商系統中常見的服務:客戶服務、訂單服務、支付服務等,其中:

1、客戶服務負責對客戶相關的信息進行管理和維護;

2、訂單服務負責對訂單信息的管理和維護;

3、支付服務負責對在線支付功能和信息的管理和維護等。

為了確保微服務之間的松耦合,每個服務都有自己的數據,其中,訂單服務使用了NoSQL數據庫,客戶服務和支付服務使用了關系數據庫。

李工認為由于不同服務使用了各自的不同數據庫,使得跨服務操作可能存在數據不一致。

比如訂單與支付的數據一致性問題,系統通過訂單服務在本地NoSQL 數據庫中創建訂單記錄,同時在支付服務的關系數據庫中創建支付記錄,且必須保證訂單記錄和支付記錄的一致性,該問題在系統構建時需要考慮。

問題內容:

[問題1](7分)

李工建議采用兩階段提交協議(2PC)來解決服務數據的一致性問題。請用200字以內的文字簡要說明 2PC;說明2PC是否能解決該問題,并簡要解釋原因。

[問題2] (8分)

王工建議采用分布式數據管理方案,用事件驅動架構來解決服務數據的一致性問題,在訂單服務和支付服務之間通過可靠的消息隊列實現事件的傳遞,其基本操作步驟如下,請填寫其中的空白處。

(1)訂單服務接收訂購請求,創建一個訂單,該記錄狀態為(a),發布一個“創建訂單”事件;

(2) (b) 接收“創建訂單”事件,記錄(c),發布一個“支付完成”事件;

(3)訂單服務接收“支付完成”事件,修改訂單記錄狀態為(d)。

[問題3](10分)

李工提出王工的方案會有數據庫更新和發布事件的原子性問題,例如訂單服務創建訂單記錄和發布“創建訂單”事件需要原子性保障,否則會出現數據不一致狀態。

王工認為可以使用本地事務發布事件的方法來解決該問題。請給出使用本地事務發布事件的基本方法,并說明該方法的缺點。


試題答案:

[問題1]

1、兩階段提交協議 2PC經常用來管理分布式事務。

(1)2PC包含協調者和參與者兩類站點,只有協調者才擁有提交或撤銷事務的決定權,而其他參與者各自負責在其本地數據庫中執行寫操作,并向協調者提出撤銷或提交事務的意向。

(2)2PC分為兩個階段:表決階段和執行階段。

①表決階段,目的是形成一個共同的決定。協調者給所有參與者發送“準備提交”消息,并進入等待狀態,所有參與者給與回復“建議提交”或“建議撤銷”。只要有一個結點選擇撤銷,則整體事務撤銷,否則,執行該事務。

②執行階段,目的是實現這個協調者的決定。根據協調者的指令,參與者或者提交事務,或者撤銷事務,并給協調者發送確認消息。

2、兩階段提交協議 2PC 不能解決當前問題。

(1)分布式數據庫遵循的是CAP 原則,會在一定程度上犧牲一致性。

(2)大多數 NoSQL 數據庫并不支持2PC。

(3)分布式兩階段提交協議2PC一般針對的對象在邏輯上是一個整體,對某一個整體事務需要在多個物理節點上執行時,進行表決和執行,對多個數據庫的不同服務并不是很合適。

[問題2]

(a)未支付

(b)支付服務

(c)支付信息

(d) 已支付

[問題3]

使用本地事務發布事件:

由一個獨立進程來發布事件。具體來說,就是在存儲業務實體狀態的數據庫中,使用一個事件表來充當消息隊列。應用啟動一個(本地)數據庫事務,更新業務實體的狀態,在事件表中插入一個事件,并提交該事務。一個獨立的消息發布線程或進程查詢該事件表,將事件發布到消息代理,并標注該事件為已發布。

缺點:

由于開發者必須牢記發布事件,因此有很大可能出錯。此外這一方法對于某些使用NoSQL數據庫的應用是個挑戰,因為NoSQL 本身交易和查詢能力有限。

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內容不斷變化與調整,本網站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

軟考備考資料免費領取

去領取

!
咨詢在線老師!