使用阿里雲發佈分佈式網站,開發時候應該注意什麼?

雖然之前寫過關於負載均衡的文章,但是似乎大家都對負載均衡這個標題很陌生。今天就換個角度,從分佈式網站發佈角度說一下


首先,網站發佈一定離不開服務器,就是阿里雲的雲服務器ECS。最近發現,老用戶也有機會購買特價服務器,參考阿里雲天貓旗艦店。分佈式網站架構,在開發環節需要處理號幾個地方,才能更輕鬆的擴展:

  • 1,數據庫單獨運行

這個最簡單,相信只要用到了數據庫的網站,大部分都是已經可以輕鬆實現網站和數據庫分離的模式。之所以強調這點,就是因爲,網站真的到了訪問量大了,需要由單機發布改爲分佈式發佈時候。首先就是要把數據庫單獨出來,使用單獨一臺ECS或者使用專門的RDS運行。

關於使用ECS自行搭建數據庫,要說的無非就是,數據庫文件一定要放在SSD硬盤上。因爲雲硬盤本質都是虛擬硬盤,讀寫指標iops會損失的很嚴重。當然業務量大了之後,我更建議選購RDS,RDS阿里雲專門的數據庫服務產品,mysql,sqlserver等多款分支,說實話,用慣了ECS自建可能會感覺這個產品挺貴的。但是實際上RDS已經針對硬盤讀寫,高可用,輕鬆拓展讀寫分離等提供了巨大的便利。因此大部分分佈式網站都是選用了RDS等產品。

  • 2,session存儲

大部分網站都是有登錄需求或者其他session存儲需求的。其實真正服務某一個用戶的服務器只有一個,然而分佈式網站是在負載均衡的規則下轉發到後臺服務器,如果負載均衡沒有開啓回話保持功能,那麼很有可能用戶登錄後,其他訪問很有可能到達不同的後端服務器處理,而實現不同服務器同樣能支持服務的辦法就是,session得共享起來。這樣就做到了讓用戶不需要反覆登錄。

session共享有多重方法,一種是什麼都不用做,session存儲在收到請求的那臺ECS本地,這種情況就需要負載均衡開啓“會話保持”功能。這麼做可以實現大部分分佈式發佈需求,但是如果有使用session統計在線量的時候就會發現只統計到某臺ECS登錄的用戶量。

還有一種session共享的辦法是使用單獨的服務存儲session,例如專門拿出來一臺ECS做session服務。這裏也有人跟傾向於單獨用一個redis服務共享存儲session,也是非常好的辦法。

  • 3,用戶上傳的文件

很多網站存在用戶上傳的情況,但是分佈式發佈後,顯然用戶上傳的時候傳入了服務器A,等以後下載的時候使用的是服務器B,這時候如果沒做共享,顯然用戶下載的文件會報錯404,因爲服務器B路徑下顯然沒有用戶傳到A服務器裏的文件。

解決辦法很簡單,就是講所有的上傳文件,傳入到服務器之後,都轉存到“共享文件服務器”,這個共享文件服務器,可以考慮自己搭建,但我建議的是使用阿里雲提供的“對象存儲OSS”服務。這樣用戶所有的下載,都走的時候OSS的訪問地址,就不會報錯404了。而且OSS是個獨立的服務,下載文件使用的是OSS的流量,不佔用發佈網站的ECS的帶寬。這就可以做到1M服務器帶寬撐起峯值幾十人甚至上百人的併發的原因。如果文件較多,另外建議將OSS搭配CDN使用

  • 4,網站的日誌文件

很多網站開發時候都是留有日誌功能的,這些日誌,就不再適合繼續使用網站目錄下某個路徑存儲了。原因跟上一條一樣:文件存儲在單臺服務器裏,要拿到全部日誌文件需要每臺服務器去獲取一遍,顯然不合適!

解決辦法跟上一條很相似:使用共享文件服務器存儲日誌。這裏需要注意避免日誌文件重名,常見的年月日明明,在這裏就會衝突,因爲多臺服務器都會產生相同文件名稱的日誌。但是我在這裏,更建議大家把需要收集的日誌文件,直接放入數據庫RDS中。這樣獲取日誌就不用每臺服務器去彙總了。直接從數據庫查出來就好。

  • 5,發佈網站文件一致

發佈文件一致,就是爲了保證更好的擴展。將來服務器壓力太大,只需要直接從現有服務器環境拷貝一份即可。甚至搭配阿里雲的“彈性伸縮ESS服務”。可以根據設置好的伸縮規則,自動按照某個服務器模板增加或者減少WEB服務器數量,實現彈性擴容。


綜上所述,一個功能較全的分佈式網站發佈在阿里雲,公共需要這麼幾個服務:ECS多臺,SLB一臺,RDS一臺,Redis或有,ESS或有。

通過ECS+SLB+RDS+Redis+ESS的搭配,就可以輕鬆應對更多的訪問量了。


附錄:阿里雲相關產品的幫助文檔:

《雲服務器ECS幫助文檔》

《負載均衡SLB幫助文檔》

《對象存儲OSS幫助文檔》

《彈性伸縮ESS幫助文檔》

《CDN幫助文檔》



原文地址: https://www.opengps.cn/Blog/View.aspx?id=238 文章的更新編輯依此鏈接爲準。歡迎關注源站原創文章!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章