簡記某WebGIS項目的優化之路

 文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/html

1. 背景

該項目爲研究生時的老師牽頭,我的已畢業數年,應老師要求協助其進行了該項目的管理。前端

項目組能獲取到全球主要做物的生長指標,以及降水、溫度等影響做物生長的指標數據。面對繁瑣冗長的大量遙感數據,致力讓廣大沒有遙感專業背景的用戶瞭解到全球各農做物的生長狀況,爲用戶提供一個可視化的全球農情遙感數據展現。java

網站包括的功能有:mysql

多種指標(NDVI、PAR、溫度、降水等)的展現。nginx

反演影像展現。sql

聚類產品展現。數據庫

產量及價格指數展現等。windows

2. 初始架構(1.0版本)——傳統方案

2.1架構描述

因爲對方已採購了SQLSERVER和ARCGIS SERVER,指望將這兩款軟件用上,因此初始版本的架構數據庫採用了SQLSERVER,地理服務器採用了AGS,服務端基於JAVAEE,前端採用AGS JS。緩存

在展現中,對於指標數據(全球地圖)遍歷,而且根據讀出的指數值再逐個添加樣式,最後用graphic逐個畫出。 影像數據用MXD發佈到ARCGISSERVER,包括邊界( 國家、MRU、MPZ等)數據。tomcat

2.2架構未解決的問題

此架構開發完DEMO後,便遇到了幾個必須解決的問題。

問題1:進入系統後,全球化地圖(基於graphiclayer)顯示緩慢。

問題2:影像成果數據各指數產品,每週每旬每個月均會增長。若是依靠人工發佈至AGS,首先沒法實現智能化;其次AGS上一年增長上千個影像的發佈,很顯然是不現實的。

3. 從數據處理進化架構(2.0版本)

3.1架構進化描述

a.開發自動切圖程序,掃描指定文件夾,當影像下載至指定文件夾時則進行影像切圖將其轉移至目標文件夾。

b.對全球尺度SHP數據進行簡化,使數據量大大減少。

c.將SHP數據處理爲GeoJson文本後,再進行壓縮爲PBF格式,而且開啓Tomcat中的GZIP壓縮,進一步減小數據請求量大小。

d.對全部前端JS文件進行壓縮打包,減小請求JS時的鏈接數。

總結:

捨棄AGS,將影像瓦片和SHP數據本地化,而且儘可能減小JS請求個數。

3.2架構未解決的問題

隨着需求進一步增長,要求增長國內縣市級數據(2000+縣),而且按做物產區顯示反演影像。目前的數據庫設計會致使每張指數表中數據量激增,隨時過一千萬。系統前端的展現十分卡頓。

4.從數據庫層面開始進化之3.0版本

4.1架構進化描述

a.仔細分析業務後對數據庫進行分表,即按照指數和地域來進行分表,使每張數據表的大小大大下降。

b.針對影像按產區展現需求,增長地圖的MASK功能。

4.2架構未解決的問題

因爲以前均是基於我的服務器開發,用戶後又提出但願將系統部署至阿里雲上,因而對架構提出了新的規劃。

5.從我的服務器轉移至阿里雲的進化(4.0版本)

5.1架構進化描述

a.雲服務器採用Linux系統,數據庫更換成Mysql。在服務器上搭建tomcat+javaee+mysql的架構。

b.因爲切圖程序爲AE開發,因此這裏將切圖程序部署在windows服務器上,其切圖成功後再將瓦片自動轉移至指定目錄。

5.2架構未解決的問題

在雲服務搭建好後,系統開始投入使用,發現即便分表了,因爲全球數據過多,依然致使每張指數錶快接近一千萬。系統又開始卡頓。

6.從索引、緩存、部署上進行進化(5.0版本)

6.1架構進化描述

a.增長合理的索引機制,如mysql的組合索引(mysql中的組合索引的各組合字段順序比較有學問http://blog.sina.com.cn/s/blog_46d93f1901017biz.html)。

b.優化SQL語句,一樣在mysql中between的使用也大有講究,若是使用不當(查詢內容佔表的16%時會自動全表查詢)會致使索引無效,而用IN則無此問題。還有針對Where字句順序的調整等。

c.增長mysql的數據庫級別緩存。

d.使用ehcache緩存。

e.採用CDN。

f.部署nginx,將瓦片文件夾等作靜態資源代理,實現最大限度的靜動態文件分離。

7.總結

1.需求老是不斷變化的,咱們即沒有必要使用成本最高的實施方案,也不能老是選用沒有擴展空間的方案,快一步就剛恰好。

2.一些必要的優化知識得銘記。

數據庫層面:加索引(單列、組合),分表,SQL優化(邏輯和語法),分庫。

服務器層面:GZIP,反向代理,集羣水平擴展。

前端:代碼合併壓縮,經過CSS sprites來整合圖像,圖像壓縮,CDN(但內網沒法使用),樣式修改須要放一塊兒。

最後上一張系統圖:

 

 

                                                              -----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

                                                                     若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^

                                    

相關文章
相關標籤/搜索