黃宇豪 張天程
(北方工業大學信息學院,北京 100144)
由于近年來互聯網的興起,網絡用戶規模擴大,微信、天貓和12306等系統的用戶訪問量迅速增長。因此,高并發服務器端設計十分重要。本文主要利用Go[1-2]、Beego[3]和Nginx負載均衡技術實現高并發的網絡訪問。文中介紹了讀書交流社區系統的設計方法,包括系統框架,模塊劃分和負載均衡,最后描述了系統的測試情況。
根據功能需求分析,管理員后臺具有修改書籍分類,排序,統計數目,書籍自動采集入庫功能。普通用戶和個人中心具有顯示關注人和粉絲,收藏書籍,個人信息修改,私聊和分享功能。為了達到高可用的部署效果,采用應用服務器和數據服務器分離。同時為了達到自適應屏幕的效果,采用響應式網站設計。
為了達到支持多用戶同時在線的效果,系統采用Nginx負載均衡實現高并發訪問。Nginx的核心功能是靜態資源管理器,且Nginx支持高并發。靜態資源一般不會改變,所以在生產中,一個web服務器會使用動態靜態資源分離機制,使用Nginx做靜態資源的web服務器,訪問性能優秀。Nginx以反向代理模式進行負載均衡,策略調度被編譯進Nginx內核的有輪詢和ip_hash,第三方的有fair、url_hash等。
根據用戶和管理權限需要,設置八個模塊,每個模塊實現對應的功能,如圖1所示。
閱讀交流社區采用MVC架構,如圖2所示。模型層負責對核心數據存儲,視圖層給用戶展示容,控制器層實現管理層與用戶的交互。
使用Nginx負載均衡技術實現高并發,如圖3所示。

圖1 功能模塊圖
該訪問結構支持分流策略,且能承受較高的負荷壓力,一般可以支持萬次并發訪問。另一方面,Nginx對網絡穩定性要求少,可以通過ping運行負載函數,同時也能夠檢測內部故障,并通過端口返回反饋信息。我們購買域名并配置DNS服務商,解析域名到服務器,并配置了LNMP環境。通過網絡連接數據庫服務器和應用服務器,最后部署Nginx負載均衡節點:配置三臺服務器,分別在三臺服務器上部署同樣的Go應用程序,然后使用Nginx實現負載均衡。我們在web面板創建了負載均衡節點,添加了三臺后端服務器,都是作為普通節點,權重為1。所有網絡訪問請求將直接訪問Nginx服務接口,然后Nginx負載平衡器選擇實際的服務器端口。
高可用測試:在Nginx服務器配置負載均衡。當關閉任何一個后端應用服務器,或者只保留一個后端應用服務器,網站依然能正常訪問。
壓力測試:通過Apache命令測試,當發送10000個并發請求時,8080端口訪問仍然穩健,測試結果如下。



圖2 MVC架構圖

圖3 Nginx負載均衡結構

實驗表明,讀書交流社區系統的特點在于使用Ngnix負載均衡技術實現系統的高并發訪問,支持大量用戶同時在線。壓力測試結果表明,系統在高并發壓力以及一個應用服務器停止工作的情況下也能正常訪問。