高可用、高擴展、低延遲交易處理系統架構設計


為實現一個高TPS、高可靠性、高擴展性、低響應延遲的交易處理系統,在系統架構設計上,需要有諸多考慮。


 1. 交易處理系統的功能
 交易系統是用於連接多個不同的交易請求系統(上游系統)與交易受理系統(下游系統),在這些交易上下游系統之間傳遞不同格式的交易報文。同時一個交易請求可能需要發送多個不同的子交易請求到不同的交易受理系統,交易處理系統還負責子交易的拆分、交易完整性與一致性保證。
 一個典型的交易處理系統,往往需要支持多種不同的通信協議(TCP長連接、TCP短鏈接、CTG、CICS、MQ等),支持多種不同的報文格式(固定長度報文、IST8583、key/value、JSON、XML等)。


 2. 模塊划分
 首先,我們可以將交易處理系統分為三層:上游網關、交易處理、下游網關。三層各為獨立的進程,三層之間用消息隊列進行數據交換。
 上、下游網關層負責與上下游系統建立通訊鏈接、完成報文的拆包、組包。
 對每種不同的通訊協議,有相應的通訊鏈接模塊,負責建立通訊鏈接。
 對不同的報文格式,有相應的報文轉換模塊。為便於系統內部的統一處理,需要定義一個統一的交易數據結構,報文轉換模塊負責將外部報文與內部數據結構進行相互轉換。
 交易處理層需實現交易拆分、路由選擇、完整性與一致性保證等功能,分為交易請求處理模塊與交易返回處理模塊。
 從上游網關收到交易請求時,需要判斷交易需拆分為哪幾個子交易,第一個子交易需發給哪個下游系統,隨即將此子交易發給對應的下游網關。
 從下游網關收到交易返回時,需要判斷此交易是否還有下一個子交易待處理,如還有子交易,則同樣需要將此子交易發給對應的下游網關。如沒有更多子交易,則返回給上游網關。


 3. 高TPS與低響應延遲
 為實現高TPS與低響應延遲,必須盡量縮短交易處理耗費的時間。為此可從以下幾個方面加以考慮:

  •   將常用參數載入內存

  在交易處理過程中會用到很多參數,例如報文格式參數、交易拆分參數等待。這些參數基本上每筆交易都會用到,且很少會修改。因此可以將這些參數都載入本地內存,加快參數讀取速度。
  另外可以考慮使用內存數據庫,使得多個進程可以共享同一份內存參數,減少對內存的消耗。

  •   減少網絡IO

  上下游網關與交易處理這三層之間是使用消息隊列進行數據交換,因此可以將這三層部署在同一個節點(即一個邏輯分區)中,使得三層之間的數據交換無需通過網絡IO,減少耗時。

  •   使用暫存表縮短查詢時間

  在處理子交易的返回時,我們需要從數據庫中找到這筆子交易的原交易信息。在一個大交易量的系統中,每日交易可能達到數千萬筆甚至更多,如果要在數千萬筆交易中查找原交易信息,會使數據庫面臨較大壓力。為此可建立一個交易暫存表,這個暫存表只保留近幾分鍾的交易(如5分鍾,一般可設為交易超時時間),這樣便可極大減少查找原交易消耗的數據庫資源。


 4. 高可靠性與可高擴展性
 在系統部署時,可以部署多個節點(即多個邏輯分區),每個節點均部署完整的上下游網關與交易處理進程。同時使用負載均衡器負責將交易分發到各節點。上游系統均直連負載均衡器。這樣即可任意部署多個節點,任何節點損壞均不影響其他節點的交易處理,增加節點即可(在一定程度上)成比例的增加交易處理能力。從而實現了高可靠性與高擴展性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM