候選項:
jetty + apache fileupload
jdk自帶的httpserver + 自行解析
******
jetty + jetty
multipartfilter
備註:tomcat過於臃腫,不考慮。
測試情況:
兩台機器,一台使用httpclient模擬客戶端上傳檔案,一台作為http伺服器。
兩台機器均為8核、8g記憶體。
耗時:
以32..6m
的檔案測試框架|
效能|併發數1 20
100200
jetty + apache fileupload
5.5s
13.7s
111s
207s
jdk自帶的httpserver
5.8s
78s390 --
******
5.2s
24s130s
330s
jetty+ jetty multipartfilter
5.5s
26s112s
203s
單執行緒情況下, 效能均差不多,在多執行緒情況下
jdk自帶的httpserver和******排程能力不足。
cpu
佔用率
框架200
個併發時
cpu佔用率
jetty + apache fileupload
130%
jdkserver
350%
******
120%
jetty+ jetty multipartfilter
130%
客戶端:8核全負載,httpclient太耗資源了。
伺服器端:jdkserver比較耗資源,其他的都穩定在130%左右
功能拓展性:
拓展性主要考慮:
接受到上傳請求時的一些處理。比如:當請求到server時,如果合法則獲取輸入流進行上傳;如果不合法,則直接返回處理結果。
****** : 檔案全部上傳到臨時資料夾後才能進行業務處理。極度不符合
multipartfilter: 使用過濾器處理缺點有二:一是業務邏輯不集中,部分在於servlet中,部分在於過濾器中;二是改寫
multipartfilter並進行封裝的難度稍大。
jdk自帶server: 符合條件。但需要自己解析http輸入流,並進行封裝。難度較大。
apache fileupload:符合條件,對http請求的封裝很棒。
apache fileupload > jdkserver >
multipartfilter
> ******
最終選擇:jetty + apache fileupload
Http上傳檔案
http上傳檔案 設定引數 string boundary datetime.now.ticks.tostring x 隨機分隔線 request.contenttype multipart form data charset utf 8 boundary boundary byte itembou...
框架 檔案上傳類
created by jetbrains phpstorm.user stu date 14 3 4 time 下午4 56 to change this template use file settings file templates.final class upload return iamg...
上傳檔案 Spring框架
上傳檔案 spring框架 1 建立web頁面 檔案上傳的html頁面中需要表單,且method post和enctype multipart form data 使用的控制項是 method post action upload.do enctype multipart form data nam...