- 商業銀行數據庫管理實踐
- 王飛鵬 王寧等編著
- 685字
- 2022-07-28 19:24:50
2.1 從某商業銀行電商管家系統談起
某商業銀行在2010年上線了一套電商管家系統,該系統用來為電商用戶提供營銷推廣、第三方平臺店鋪運營、在線客服、訂單處理、倉儲發貨等服務。上線初期運行穩定,但是隨著業務量和數據量的增長,先是遇到了應用服務器性能瓶頸,后又遇到了數據庫性能瓶頸。
2.1.1 物理部署架構
某商業銀行電商管家系統,應用使用Java語言開發,部署在Tomcat應用服務器上,應用通過JDBC接口訪問后臺的MySQL數據庫。剛開始數據量很小,Tomcat和MySQL都采用單機部署就可以支撐,整個部署架構也很簡單,如圖2-1所示。
電商管家系統中的應用模塊較多,為了論述方便,這里以電商管家系統中的商家管理模塊和商品管理模塊作為例子說明。如圖2-2所示,這兩個模塊都部署在一個Tomcat應用服務器中,分別用到的商家表Dealer和商品表Goods也都存放在單一的MySQL數據庫中。

圖2-1 單機版物理部署架構

圖2-2 單機版應用模塊以及業務表
2.1.2 應用服務器性能瓶頸及解決方案
隨著業務量的增長,電商管家系統首次遇到了性能瓶頸。在高并發請求下,滿配的Tomcat服務器CPU處理能力達到上限,已經無法擴充硬件資源;嘗試優化Tomcat參數效果也不佳。
考慮到單個服務器性能總是有限的,最好的辦法自然是實現橫向擴展,組建Tomcat集群是有效提升性能的手段,采用Nginx作為請求分流的服務器,后端多個Tomcat共享Session來協同工作。
如圖2-3所示,通過增加一臺新的Tomcat服務器,這樣就有了由兩臺Tomcat服務器構成的應用服務器集群,通過應用集群訪問MySQL數據庫。

圖2-3 應用集群方案
增加Tomcat服務器組建集群后,Tomcat集群里每個機器都是無狀態和對等的,彼此沒有明確的分工。通過這種應用服務器擴容,暫時緩解了應用服務器的性能壓力,也取得了良好效果。
但如果是數據庫服務器遇到了性能瓶頸呢?
- 數據之巔:數據的本質與未來
- 使用GitOps實現Kubernetes的持續部署:模式、流程及工具
- App+軟件+游戲+網站界面設計教程
- Voice Application Development for Android
- 數據庫開發實踐案例
- 城市計算
- 大話Oracle Grid:云時代的RAC
- Dependency Injection with AngularJS
- 從0到1:JavaScript 快速上手
- MATLAB Graphics and Data Visualization Cookbook
- Hands-On System Programming with C++
- 數據庫查詢優化器的藝術:原理解析與SQL性能優化
- 實現領域驅動設計
- SOLIDWORKS 2018中文版機械設計基礎與實例教程
- Oracle數據庫性能優化的藝術