專案 設計高併發交易系統

2021-07-27 23:31:12 字數 922 閱讀 5052

1、引述

與秒殺活動相似,此外還具備兩個自身的特點:

1)併發要求更高;2)更嚴格的安全級別;

體現在技術方案上,相比於秒殺商品,共同點是併發請求搶鎖,此外還有兩個突出特點:

1)事務級操作量大--併發高導致;2)事務要求嚴格--安全級別導致;

2、解決高併發常用方案

方案一,使用記憶體代替實時的db事務操作,然後非同步db持久化。優點是提高了併發效能,缺點是db持久化失敗或者記憶體故障都會導致丟資料,安全級別不適合;

方案二,使用樂觀鎖。悲觀鎖,乙個事務執行操作的資料,只有當該事務把鎖釋放,其他事務才可操作衝突的資料。樂觀鎖,維護db庫存記錄的版本號,提交事務時檢查版本號是否被修改,沒有修改更新版本號,被修改則回滾事務拋異常。優點是提高了併發能力,缺點是搶到同乙個商品的請求,只有乙個會成功,使用者體驗不好;其次,手快的使用者因為併發高會失敗,手慢的使用者因為併發小反而會成功,產生負面影響;最後,帶來大量的無效請求、事務回滾,給db造成不必要的壓力,浪費資源;

3、採用的方案

1)系統垂直拆分--分而治之

所有的交易行為都和商品的id關聯,將商品id按一定規則分組劃分,同乙個商品的所有操作只發生在一條垂直鏈上的伺服器(也是集群的)和db上,互不影響,海量化為小量,分而治之;

2)業務邏輯層,建立請求佇列--減小併發

如果到達db的事務操作不是併發的,而是序列的,就不會存在併發搶鎖問題 。若要搶商品的事務操作序列進入db,只需將業務層的請求以fifo的方式排隊,就可以達到效果。

分布式的fifo佇列方案:

3)設計雙維度庫表

按照商品id和自然日兩個維度分表,原因是隨著商品數量增大,單錶資料增加,db效能下降;若將歷史資料與當前資料分開儲存(即冷熱分離),可以解決這個問題,同時資料遷移也變得簡單化。

綜上所述,主要採用了集合化分治、請求排隊、雙維度分表等方案,可以使db的併發效能提公升8倍以上。

高併發交易平台的想法

sdc4的設計將會引入高併發事務處理器的思想,解決集群 分布式開發方式,引入了disruptor和mina框架。這個處理器可以使用廉價的計算機以及比較快的網路,實現可線性增長的乙個架構模式。由於公司主要業務線都在金融行業,因此我們不能簡單的使用電商的設計理念。但是我們會引入事件驅動 高速處理器 分發...

交易系統的設計原則

系統維度 按照系統功能 業務拆分,比如 商品系統,購物車,結算,訂單系統等。功能維度 對系統進行功能拆分,比如,優惠券系統可以拆分為後台優惠券建立 領劵系統 用捲系統等。讀寫維度 根據讀寫比例進行拆分 讀系統可以用快取提公升效能,寫的量大時,可以考慮分庫分表。aop維度 根據訪問特徵,按照aop進行...

交易系統熱點賬戶設計

背景 交易系統中會出現某些賬戶高頻進行扣款入賬的行為。這些賬戶可以分為兩種,一種是出賬熱點賬戶,另外一種使入賬熱點賬戶。單賬戶進行餘額更新會出現各種效能瓶頸 資料庫壓力 成功率等各種效能問題。目標 通過該設計避免出現熱點賬戶的各種效能問題,及時對賬戶是否使熱點進行監控,分析 避免出現熱點賬戶帶來的一...