張鵬
摘要:互聯(lián)網技術的逐步成熟使得越來越多的用戶進入網絡,享受網絡給自己生活帶來的便捷。但是,用戶的增多給許多商業(yè)網站提出了新的挑戰(zhàn)。如何在大用戶量訪問網站時,保證網站的流暢度和穩(wěn)定性,成為判斷一個商業(yè)網站是否成功的顯著標志。該文基于SSH框架提出了一種高并發(fā)、高可用網站架構以解決上述問題。首先利用SSH技術構建服務器端,利用集群理念,延伸服務器數(shù)量,形成服務器集群。通過Nginx技術實現(xiàn)多服務器間的負載均衡,減輕大訪問量單一服務器上的壓力,保證服務器的高可用性。同時,使用RabbitMQ消息隊列的異步處理機制,對訪問高峰期請求進行削峰處理,減少響應所需時間,提高網站高并發(fā)處理能力。
關鍵詞:負載均衡;高并發(fā);高可用;消息隊列
中圖分類號:TP311文獻標識碼:A
文章編號:1009-3044(2020)27-0100-02
開放科學(資源服務)標識碼(OSID):
1 引言
互聯(lián)網技術日趨成熟帶來了大量用戶的網站訪問需求,高并發(fā)[1]和高可用已經成為對于一個成熟的商業(yè)網站必備的要求。而以往的單服務器網站面對高并發(fā)的情形時,極易導致單位時間內服務器壓力驟增,既無法及時響應用戶請求,而且容易導致服務器崩潰,降低系統(tǒng)可用性。面對以上問題,本系統(tǒng)采用集群理念,延伸服務器數(shù)量,形成服務器集群[3],保證在一臺服務器宕機的情況下,仍有其他服務器可用。并且通過Nginx技術實現(xiàn)多服務器間的負載均衡[2],實現(xiàn)網站的高可用性。同時,使用RabbitMQ消息隊列[4-5]的異步處理機制,對訪問高峰期請求進行削峰處理,減少響應所需時間,提高網站高并發(fā)處理能力。
2 系統(tǒng)分析與設計
網站整體架構如圖1所示,當網站遭遇高并發(fā)時,大量的用戶請求從瀏覽器端進入到后臺服務器。此時Nginx會根據服務器權重優(yōu)先級進行請求分配,實現(xiàn)負載均衡,減輕單服務器處理壓力。為保證在高并發(fā)時,網站達到減少服務器響應時間、增強用戶體驗度的目標,網站架構中加入消息隊列服務器,通過其異步處理功能,使得網站系統(tǒng)在不影響響應速度的同時,利用消息驅動機制,降低數(shù)據庫壓力,最終形成一個高并發(fā)、高可用的網絡架構。
2.1 服務器的設計
服務器端采用SSH框架技術進行設計,如圖2所示,采用SSH框架[6-8]進行服務器設計的優(yōu)點在于各個框架可以發(fā)揮各自在Web應用各層上的特點,互相協(xié)同,實現(xiàn)“低耦合、高內聚”的軟件系統(tǒng)設計思想。在JavaEE分層設計結構中,Hibernate框架主要負責數(shù)據持久層,進行數(shù)據庫的交互處理工作;Struts框架專注于控制層工作,對用戶請求響應進行控制調度;而Spring框架利用其IOC和AOP技術,貫穿于各層當中,負責整個Web項目中類的集中管理,通過IOC容器進行各類的實例化創(chuàng)建工作。并且借助于AOP技術[9]實現(xiàn)核心業(yè)務與輔助業(yè)務相分離,真正做到各模塊間低耦合的設計效果。
2.2 Nginx技術與服務器集群的分析與使用
當大量的用戶請求從瀏覽器端進入到后臺服務器時,如圖3所示,Nginx會根據服務器權重優(yōu)先級進行請求分配,將用戶請求進行分流,減輕單位時間單體服務器的請求處理壓力,實現(xiàn)負載均衡,減輕單服務器處理壓力。同時,Nginx在處理靜態(tài)文件的吞吐量優(yōu)于tomcat,通過Nginx的反向代理功能,實現(xiàn)動態(tài)資源請求與靜態(tài)資源請求相分離,即諸如css、png.js等靜態(tài)資源交由Nginx處理,而諸如jsp、servlet等動態(tài)資源交由tomcat處理,從而達到動靜分離的效果。本網站架構充分利用集群理念,延伸服務器數(shù)量,形成服務器集群,保證在出現(xiàn)某一個服務器宕機的情況下,能夠實現(xiàn)運行不斷檔,形成一個高可用性網站架構。
2.3 消息隊列服務器的設計
當傳統(tǒng)的網絡架構中遭遇高并發(fā)的情形時,如圖4所示,大量的用戶請求會直接與數(shù)據庫進行互動,導致數(shù)據庫瞬時壓力驟增,從而接受響應的時間增加,嚴重影響用戶體驗。本網站架構中使用RabbitMQ作為消息隊列使用,如圖5所示。消息隊列的引入使得用戶請求在到達消息隊列服務器時立即返回,之后由消息隊列的消費者進程獲取剛剛的數(shù)據,異步寫入數(shù)據庫。因消息隊列服務器在處理速度與伸縮性上均優(yōu)于數(shù)據庫,所以響應速度得到大幅改善。
2.4 緩存機制的設計
在大并發(fā)量的情況下,大量的數(shù)據需要進行讀取操作,如果每次程序都需要向數(shù)據庫直接做查詢操作,則其所帶來的性能開銷顯而易見,頻繁的網絡傳輸也會大大降低系統(tǒng)的整體性能。因此cache的引入對于解決高并發(fā)問題非常有效,它能讓數(shù)據在本地內存中保留一個鏡像,下次訪問時只需從內存中直接獲取,對于網站整體性能提升明顯。
在hibernate框架中,一級緩存存在于Session中,屬于事務級數(shù)據緩沖。一旦事務結束,一級Cache也隨之失效。同時,如圖6所示,本網站架構中增加第三方的數(shù)據庫連接池C3PO。因為建立數(shù)據庫連接時會消耗一定時間,所以采用數(shù)據庫連接池技術預先建立多條數(shù)據庫連接,并在將來持續(xù)使用,從而節(jié)約掉建立數(shù)據庫連所需時間,C3PO的引入對于高并發(fā)隨機訪問數(shù)據庫時的效率提升有很大幫助。
3 實驗
測試部分中,本文將上述所設計集群服務器架構與傳統(tǒng)的單體服務器架構相對比。通過JMeter發(fā)起海量并發(fā)數(shù)據請求,對兩種不同的架構進行壓力測試,驗證其是否滿足高并發(fā)與高可用網絡架構要求。表1展示了數(shù)據訪問性測試用例內容。
為了保證數(shù)據訪問測試的可信度,本文分別從4個維度,對比兩種不同類型架構數(shù)據訪問所需耗時。表2展示了在4種不同性能指標下,兩種不同類型架構的性能數(shù)據。
如圖7所示,通過對比測試,本文網站架構在TP90、TP95、TP99各維度中均大幅度優(yōu)于傳統(tǒng)架構,網絡請求耗時相比之前更少、響應速度更快、用戶體驗流暢度更優(yōu)。滿足一個高并發(fā)與高可用網站架構要求。
4 總結
本文是基于SSH框架提出了一種高并發(fā)、高可用網站架構。主要是在面臨海量用戶請求業(yè)務場景時,可以保證服務器快速響應、運行平穩(wěn),無差錯。本文在SSH構建服務器的基礎上形成集群,并輔之以Nginx高性能技術、RabbitMQ消息隊列和緩存機制等。經過壓力測試,網絡請求耗時顯著減少,證明了本文所述框架的有效性。
參考文獻:
[1]潘樂,胡鑫,余偉,等,一種高并發(fā)服務處理的優(yōu)化方法[J].信息技術與信息化,2020(3):22-24.
[2]張宇星,馬明棟,王得玉.基于Nginx負載均衡的動態(tài)改進算法[J].計算機技術與發(fā)展,2020,30(3):73-76,81.
[3]王瑛,基于Java應用的高并發(fā)高可用集群服務器的設計與實現(xiàn)[J].電子技術與軟件工程,2019(20):139-140.
[4]余永城,翁秋華,段卿,等.RabbitMQ在氣象通信系統(tǒng)中的應用研究[J].計算機技術與發(fā)展,2020,30(4):216-220.
[5]陳思媛,易國洪,金旺.智能停車系統(tǒng)中消息中間件的設計與實現(xiàn)[J].武漢工程大學學報,2020,42(2):224-230.
[6]何晶,以SSH框架與iQuery技術為基礎的Java-Web開發(fā)應用探討[J].計算機產品與流通,2019(11):104-105.
[7]潘愷曄.基于SSM框架的CRM系統(tǒng)的實現(xiàn)[J].山東農業(yè)工程學院學報,2019,36(8):20-21,102.
[8]張健.基于SSH框架技術重構OA管理系統(tǒng)的實現(xiàn)[J].信息技術,2019,43(7):106-109,115.
[9]唐念剛,張勇.AOP技術在Web系統(tǒng)日志和事物管理中的應用[J].電子設計工程,2017,25(16):42-45.
【通聯(lián)編輯:聞翔軍】