黃宇豪 張?zhí)斐?/p>
(北方工業(yè)大學信息學院,北京 100144)
由于近年來互聯(lián)網(wǎng)的興起,網(wǎng)絡用戶規(guī)模擴大,微信、天貓和12306等系統(tǒng)的用戶訪問量迅速增長。因此,高并發(fā)服務器端設計十分重要。本文主要利用Go[1-2]、Beego[3]和Nginx負載均衡技術實現(xiàn)高并發(fā)的網(wǎng)絡訪問。文中介紹了讀書交流社區(qū)系統(tǒng)的設計方法,包括系統(tǒng)框架,模塊劃分和負載均衡,最后描述了系統(tǒng)的測試情況。
根據(jù)功能需求分析,管理員后臺具有修改書籍分類,排序,統(tǒng)計數(shù)目,書籍自動采集入庫功能。普通用戶和個人中心具有顯示關注人和粉絲,收藏書籍,個人信息修改,私聊和分享功能。為了達到高可用的部署效果,采用應用服務器和數(shù)據(jù)服務器分離。同時為了達到自適應屏幕的效果,采用響應式網(wǎng)站設計。
為了達到支持多用戶同時在線的效果,系統(tǒng)采用Nginx負載均衡實現(xiàn)高并發(fā)訪問。Nginx的核心功能是靜態(tài)資源管理器,且Nginx支持高并發(fā)。靜態(tài)資源一般不會改變,所以在生產(chǎn)中,一個web服務器會使用動態(tài)靜態(tài)資源分離機制,使用Nginx做靜態(tài)資源的web服務器,訪問性能優(yōu)秀。Nginx以反向代理模式進行負載均衡,策略調(diào)度被編譯進Nginx內(nèi)核的有輪詢和ip_hash,第三方的有fair、url_hash等。
根據(jù)用戶和管理權限需要,設置八個模塊,每個模塊實現(xiàn)對應的功能,如圖1所示。
閱讀交流社區(qū)采用MVC架構,如圖2所示。模型層負責對核心數(shù)據(jù)存儲,視圖層給用戶展示容,控制器層實現(xiàn)管理層與用戶的交互。
使用Nginx負載均衡技術實現(xiàn)高并發(fā),如圖3所示。
圖1 功能模塊圖
該訪問結(jié)構支持分流策略,且能承受較高的負荷壓力,一般可以支持萬次并發(fā)訪問。另一方面,Nginx對網(wǎng)絡穩(wěn)定性要求少,可以通過ping運行負載函數(shù),同時也能夠檢測內(nèi)部故障,并通過端口返回反饋信息。我們購買域名并配置DNS服務商,解析域名到服務器,并配置了LNMP環(huán)境。通過網(wǎng)絡連接數(shù)據(jù)庫服務器和應用服務器,最后部署Nginx負載均衡節(jié)點:配置三臺服務器,分別在三臺服務器上部署同樣的Go應用程序,然后使用Nginx實現(xiàn)負載均衡。我們在web面板創(chuàng)建了負載均衡節(jié)點,添加了三臺后端服務器,都是作為普通節(jié)點,權重為1。所有網(wǎng)絡訪問請求將直接訪問Nginx服務接口,然后Nginx負載平衡器選擇實際的服務器端口。
高可用測試:在Nginx服務器配置負載均衡。當關閉任何一個后端應用服務器,或者只保留一個后端應用服務器,網(wǎng)站依然能正常訪問。
壓力測試:通過Apache命令測試,當發(fā)送10000個并發(fā)請求時,8080端口訪問仍然穩(wěn)健,測試結(jié)果如下。
圖2 MVC架構圖
圖3 Nginx負載均衡結(jié)構
實驗表明,讀書交流社區(qū)系統(tǒng)的特點在于使用Ngnix負載均衡技術實現(xiàn)系統(tǒng)的高并發(fā)訪問,支持大量用戶同時在線。壓力測試結(jié)果表明,系統(tǒng)在高并發(fā)壓力以及一個應用服務器停止工作的情況下也能正常訪問。