楊玉霞,馬大喜,劉昭華,楊靖宇
(1.江西理工大學 建筑與測繪工程學院,江西 贛州 341000;2. 61733部隊 軟件保障室,北京 100034)
地理信息服務平臺是信息化條件下測繪成果對外服務的直接模式[1]。國內學者在開源項目World Wind的基礎上研發了多個地理信息承載平臺,并開發了大量業務應用系統,取得了良好效果,但這只是在服務形式上的進步,在面向大眾服務方面與Google Earth等相比還存在較大差距,特別是平臺所支持的并發用戶數量有限,限制了其推廣應用。
當前互聯網的用戶數和網絡流量正在以幾何級數增長,這對網絡服務的可靠性和可伸縮性提出很高的要求。而最成功網絡業務所依靠的黃金原則是“快速的故障切換和擴展”,即提供給用戶的服務能夠透明地進行失效切換和擴展,而不中斷用戶的操作和體驗,因為任何意外的服務中斷都將造成不可估量的損失[2]。
基于IP層和內容請求分發的負載平衡調度方法,將一組服務器構成一個實現可伸縮的、高可用網絡的服務器集群正成為主流網絡服務結構。服務器集群的結構對客戶是透明的,客戶訪問集群提供的網絡服務就像訪問一臺高性能、高可用的服務器一樣,程序不受服務器集群的影響,不需作任何修改。系統的伸縮性通過在服務器集群中透明地加入和刪除節點來實現,通過檢測節點或服務進程故障和正確重置系統達到高可用性[3]。
負載均衡集群運行時一般通過一個或多個前端負載均衡器(HAProxy、Nginx等)將工作負載分發到后端的一組服務器上,從而將工作負載分發。一般Web服務器集群、數據庫集群和應用服務器集群都屬于這種類型。雖然計算機領域對面向通用網絡服務的服務器集群技術進行了大量研究,但在地理信息服務領域的研究仍較少。
地理信息服務器集群由一臺負載均衡服務器與多臺WebGIS應用服務器組成[4-6],如圖1所示。核心部件是負載均衡服務器,是一個中心控制器,按某一負載均衡策略將用戶請求分派到各WebGIS應用服務器上。同時,它還對各WebGIS應用服務器進行監控,當某個WebGIS應用服務器負載過重或出現故障時,還負責進行負載重新分配和故障轉移處理。負載均衡利用收集到的負載信息將任務分配到最佳GIS應用服務器,使整個系統達到最大吞吐量和最快響應速度。

常用的負載均衡軟件有HAProxy、Nginx等,其中Nginx是一款輕量級的負載均衡服務器,具有高并發連接數、內存消耗低、穩定性高、功能模塊豐富等優勢[7-9]。它工作于OSI網絡模型的應用層,不僅可對HTTP應用實施分流策略,且對網絡的依賴性較小,理論上只要Ping得通,就能實現負載均衡。同時它也是一個高性能的HTTP和反向代理的服務器,且Nginx反向代理服務器具有緩存功能,當有用戶發出請求時,代理服務器首先檢查用戶請求是否存在緩沖區里,如果已存在且是最新的,那么它就不到內部服務器上讀取信息,而直接將緩沖區中的信息傳送給瀏覽器,節省了與后端Web 服務器的通信開銷,大大加快了訪問速度,減輕了后端Web 服務器的負擔。
相應的用戶請求和服務器響應數據流轉過程如下:
1)用戶通過瀏覽器向地理信息服務平臺發送數據請求;
2)負載均衡服務器接受用戶數據請求,并根據設定的負載均衡策略將請求轉發至對應的應用服務器;
3)應用服務器根據用戶請求提取對應的數據生成地圖圖片,并返回給負載均衡服務器或直接返回給客戶端;
4)負載均衡服務器返回結果給用戶。
基于上述服務器集群架構搭建基礎地理信息服務平臺,為某單位約300名用戶提供并發訪問。系統由6臺服務器組成,其中1臺作為負載均衡服務器安裝負載均衡軟件Nginx,其他5臺作為WebGIS服務器,安裝GeoServer軟件提供地理信息服務(如WMS、WFS等)。
利用Nginx搭建服務器集群的關鍵在于修改conf目錄下配置文件nginx.conf,主要修改內容位于Upstream節。目前Nginx支持5種分配策略:輪詢、Weight、ip_hash、fair和url_hash。本文采用的負載均衡策略為ip_hash,具體配置如下:
upstream backend {
server 192.168.1.200:80;
server 192.168.1.201:80;
server 192.168.1.202:80;
server 192.168.1.203:80;
server 192.168.1.204:80;
ip_hash;
}
在搭建完成地理信息服務平臺后,利用World Wind、OpenLayers、OSGEarth等開源軟件定制開發了多種客戶端應用程序來使用GeoServer服務器發布的WMS地理信息服務。經過壓力測試和近3個月的試運行,系統穩定可靠,能夠支撐300個用戶并發訪問要求。圖2為某一客戶端的運行結果。

本文以地理信息的大眾化服務為應用需求,研究地理信息服務平臺的機器部署方案,并以Nginx、GeoServer等軟件為基礎搭建面向300個用戶并發量的地理信息服務平臺,驗證了該方法的有效性。然而,在解決了單臺服務器負載過大的問題后,單一站點的出口帶寬有可能成為新的性能瓶頸,限制用戶規模的進一步擴大。應進一步研究分布式部署方案,同時緊跟計算機技術的發展前沿,進一步探討云計算環境下的數據中心部署方案。
[1]黃蔚,蔣捷,王茜.面向在線服務的地理信息框架數據體系構建[J]. 地理信息世界,2011,8 (4):20-23
[2]王盼成.嵌入空間數據庫的地圖服務及Web地圖服務集群技術研究[D].北京:中國科學院研究生院,2004
[3]王霜, 修保新, 肖衛東. Web服務器集群的負載均衡算法研究[J]. 計算機工程與應用,2004(25):78-80
[4]章華軍,朱美正,李艷明. 地理空間信息服務集群技術研究與實現[J]. 微計算機信息,2009(34):141-143
[5]翟永,楊曦. 地理信息服務網站服務器集群負載均衡技術應用研究[J]. 地理信息世界,2010,8(6):20-23
[6]翟永,陳杰,劉磊. 基于集群技術的“天地圖”運行支持環境設計[J]. 地理信息世界,2011,8(4):15-20
[7]劉鑫. 高性能網站構建實戰[M]. 北京:人民郵電出版社,2012
[8]張宴.實戰Nginx:取代Apache的高性能Web服務器[M].北京:電子工業出版社,2010
[9]劉振宇.利用Nginx實現網站負載均衡[J].中國管理信息化,2012,15(16):96