最前面是2台nginx伺服器N1,N2用keepalive做高可用
後端是4台tomcat T1,T2,T3,T4做叢集(使用memcached解決session共享問題)
程式碼裡面會有一些js/css等靜態文件,比較好處理,可以在這6台伺服器間原始碼同步。
系統會上傳大量的pdf/doc這樣的文件,並且需要轉換成swf格式以供以後預覽,所以用T3,T4來專門處理。其它普通業務交給T1,T2
那麼問題來了,客戶端要存取一個pdf或swf文件,請求發給nginx,這裡肯定不能攔截下來,因為本地只有js/css這類靜態文件,沒有doc/pdf,於是用location proxy_pass到T3,T4,但T3,T4上只有tomcat,它處理靜態檔案效率絕對不行。怎麼辦?
我的思路有兩種:
不知道大家是怎麼解決的?
這個問題是要沉沒了嗎?這個場景應該很多,有現成的可以參考的解決方案吧
最簡單的方式應該是給doc/pdf資源指定一個新域名或子域名,配置nginx,對新域名的請求全部轉發到t3,t4上。
不過你這裡有一個問題,如果使用者上傳檔案到t3,然後下次造訪這個檔案時nginx將請求轉送到t4怎麼辦?
所以,t3和t4是不是有同步機制?
解決這個辦法又有一些辦法:
1,照你說的使用共享檔案系統,samba之類的,t3、t4的檔案都上傳到這裡
2,手動在兩台機器間同步文件,好處是資料相當於有了備份,壞處就不說了
3,試試看又拍之類的使用cdn吧,這樣連你最開始的問題都能解決
4,。 。 。 。