官术网_书友最值得收藏!

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集群里每個機器都是無狀態和對等的,彼此沒有明確的分工。通過這種應用服務器擴容,暫時緩解了應用服務器的性能壓力,也取得了良好效果。

但如果是數據庫服務器遇到了性能瓶頸呢?

主站蜘蛛池模板: 大荔县| 昆明市| 镇雄县| 南阳市| 扶余县| 南雄市| 大宁县| 炎陵县| 淅川县| 齐河县| 洞口县| 上蔡县| 曲阜市| 江北区| 西峡县| 哈巴河县| 苍南县| 军事| 汝城县| 沈阳市| 尚义县| 尼木县| 郴州市| 扶风县| 武宁县| 内丘县| 合山市| 土默特右旗| 句容市| 宜昌市| 惠来县| 汶上县| 东乡族自治县| 承德市| 淮北市| 萨迦县| 固安县| 芮城县| 东海县| 修水县| 武宁县|