最近經常有人問圖片上傳怎麼做,有哪些方案做比較好,也看到過有關於上傳圖片的做法,但是都不是最好的 今天再這裡簡單講一下上傳圖片以及圖片伺服器的大致理念 如果是個人項目或者企業小項目,僅僅只有十來號人使用的小項目,可以使用如下方案: 用戶訪問系統,使用上傳圖片功能,那麼圖片就上傳到你的當前項目所在的t ...
最近經常有人問圖片上傳怎麼做,有哪些方案做比較好,也看到過有關於上傳圖片的做法,但是都不是最好的
今天再這裡簡單講一下上傳圖片以及圖片伺服器的大致理念
如果是個人項目或者企業小項目,僅僅只有十來號人使用的小項目,可以使用如下方案:
用戶訪問系統,使用上傳圖片功能,那麼圖片就上傳到你的當前項目所在的tomcat伺服器上,在/image下,上傳成功後用戶可以直接訪問
http://ip:port/project/images/xxx.jpg
這樣做在用戶少的時候是沒有問題的
當你的企業發展起來了,業務量增多了,使用的這個項目開始大起來了,發現系統速度變慢了,那麼你就考慮到集群了對吧
那麼好,假設你增加了一個tomcatB,性能提高了一點,圖片也成功上傳了,做了負載均衡,假設圖片上傳的了tomcatA(用戶是不知道的)
第二次訪問的時候(先不考慮session粘性不粘性的問題,假設是共用的),用戶訪問到了tomcatB,圖片沒有了,是個大叉叉,
我的天吶!發什麼什麼事了,明明剛剛上傳的圖片沒有了,
再刷新一下,欸!又有了?這是什麼情況呢?
後臺知道咋回事,但是用戶不知道啊!!!
那麼解決方案是這樣的,tomcatA和B上傳至圖片伺服器,這用戶請求的時候只訪問圖片伺服器的路徑,這樣就沒問題了
有人會問圖片伺服器用什麼來搭建呢?
tomcat?可以,但是tomcat主要處理jsp比較好,圖片文件是靜態資源,處理起來性能一般般
Apache?可以,純C語言開發的,沒問題,但是還不夠好
nginx?對了,這個是目前比較流行的一個反向代理伺服器,我在之前的文章有簡單介紹過(http://www.cnblogs.com/leechenxiang/p/5327086.html)
理論的單台機子併發能達到5萬,非常的叼,實際測試是2w左右
安裝如下的方案去做,那麼圖片伺服器就問題不大了,
當然,圖片上傳後,需要把圖片的路徑地址保存到資料庫啊~~
我曾經見到過一套電子商務系統的圖片上傳是採用方案是類似1的,這麼做沒問題,
但是呢,圖片居然上傳到他喵的MySQL某個表的某個欄位中的,你妹啊,我的天吶!
怎麼可以這麼做,何況資料庫沒有分庫分表分區建索引,好吧,這也是我的一個吐槽點,誰叫我曾經參與過呢
好吧,說了這麼多都是理論,接下來的文章會具體說說怎麼做。