iT邦幫忙

0

System Design Interview Ch 12 Digital Wallet

  • 分享至 

  • xImage
  •  

完整內容,請至幹話王 System Design Interview Ch 12 Digital Wallet

本文內容的章節是來自內行人才知道的系統設計面試指南 vol2

確立問題與設計範疇

角色 對話內容
面試者 我們應該只關注兩個數位錢包之間的餘額轉帳操作嗎?我們是否需要擔心其他功能?
面試官 讓我們只關注餘額轉帳操作。
面試者 該系統需要支援多少 TPS(每秒交易次數)?
面試官 讓我們假設是 1,000,000 TPS (每秒 100 萬次交易)。
面試者 數位錢包對正確性有嚴格的要求。我們可以假設事務保證 就足夠了嗎?
面試官 聽起來不錯。
面試者 我們需要證明正確性嗎?
面試官 這是一個很好的問題。正確性(Correctness)通常只有在交易完成後才能驗證。一種驗證方法是將我們的內部記錄與銀行對帳單進行比較。對帳的局限性在於它只顯示差異,無法說明差異是如何產生的。因此,我們希望設計一個具有**可重現性(Repoducibility)**的系統,這意味著我們可以透過從頭開始重放數據,隨時重建歷史餘額。
面試者 我們可以假設可用性要求是 99.99% 嗎?
面試官 聽起來不錯。
面試者 我們需要考慮外匯嗎?
面試官 不,這超出了本次討論範圍。

摘要:

高吞吐量 (TPS): 系統需要支援每秒 1,000,000 次交易 (1,000,000 TPS)

  • 為了達到這個目標,後端估算可能需要約 2,000 個資料庫節點來處理每秒 1 百萬次轉帳(因為每次轉帳涉及兩條指令,相當於 2 百萬次操作)。

可靠性: 系統的可靠性必須至少達到 99.99%

事務與一致性: 必須支援交易 (transactions),以確保資料的正確性。

可重現性 (Reproducibility): 系統需要具備從頭開始重放資料來重建歷史餘額的能力

Step 1 粗略估算

1. 估算的前提與假設

背景: 討論 TPS 時,通常假設系統將使用事務型資料庫 (transactional database)

性能基準: 來源指出,現今運行在典型資料中心節點上的關係型資料庫,大約可以支援每秒幾千次事務

單節點假設: 為了進行估算,假設一個資料庫節點可以支援 1,000 TPS(每秒 1,000 次事務)。

目標負載: 系統必須支援 1,000,000 TPS(每秒 1 百萬次交易)。

2. 初始計算與修正

這個估算過程的關鍵點在於,交易數(轉帳次數)並不等同於實際的資料庫操作數

1. 初始(不準確的)計算: 如果系統需要 1,000,000 TPS,而每個資料庫節點能處理 1,000 TPS,那麼初始估算需要 1,000 個資料庫節點(1,000,000 / 1,000 = 1,000)。

2. 關鍵修正(實際操作數): 這個計算被認為是稍微不準確的。這是因為每個轉帳指令 (transfer command) 需要兩個操作

◦ 從一個帳戶扣除資金 (deducting money)。

◦ 向另一個帳戶存入資金 (depositing money)。

3. 最終所需的節點數量: 為了支援每秒 1 百萬次的轉帳,系統實際上需要處理高達 2 百萬次 TPS(2,000,000 TPS,即 2 百萬次操作)。 因此,根據每個節點 1,000 TPS 的假設,系統需要 2,000 個節點(2,000,000 / 1,000 = 2,000 節點)來支援此負載。

3. 對設計的影響

這個粗略估算直接影響了設計目標,因為所需節點的總數與單節點可處理的事務次數成反比:

設計目標: 降低所需的總節點數量是設計目標之一,這意味著必須增加單一節點可以處理的事務數量 (per-node TPS)。單節點的 TPS 越高,所需的硬體成本就越低。

來源提供了 TPS 與所需節點數量的映射表(Table 12.1),進一步說明了這種關係:

每節點 TPS (Per-node TPS) 所需節點數量 (Node Number)
100 20,000
1,000 2,000 (此為計算結果)
10,000 200

總結來說,粗略估算確定了數位錢包系統為了處理 1 百萬次轉帳的負載,需要數千個資料庫節點,這為後續討論分區 (sharding)分佈式事務 (distributed transactions) 以及如何提高單節點效率奠定了基礎。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言