雲計算之路系列博文分享的是我們將網站從IDC機房遷移至雲計算平台的實際經歷,目前處於准備階段,這次分享的是使用雲存儲遇到的糾結。
這里的“雲存儲”是指在雲服務商的平台上存儲文件與圖片,這篇博文涉及兩家雲服務商——又拍雲與阿里雲(阿里雲的對應產品是開放存儲服務 OSS)。
這次糾結的根源是Windows世界與Linux世界不同的世界觀,Windows默認不區分大小寫,Linux默認區分大小寫。
我們將現有圖片上傳至雲存儲服務商的存儲空間之后,發現有些圖片不能訪問,后來發現是圖片URL大小寫的原因,比如圖片的存儲路徑是/images/logo_small.gif,而引用圖片的URL是http://static.cnblogs.com/IMAGES/logo_small.gif。之前我們用的是Windows平台的IIS,URL不區分大小寫,所以不會出現這個問題。現在雲存儲服務商用的是Linux平台上的Web服務器,比如Nginx,默認是區分大小寫的。兩家雲存儲服務商都確認了這個問題的存在。
我們分別咨詢了兩家雲存儲服務商,給出的解決方法都是讓我們更改圖片引用的URL,與實際存儲路徑的大小寫保持一致。我們本來希望他們能調整一下Web服務器的設置,以支持不區分URL大小寫(技術實現上難度不大),但是都不願意,可能有我們想不到的麻煩。於是,我們考慮采用他們的解決方法,但是實現起來很麻煩。比如,我們有100萬張圖片,分布在100萬篇文章中,我們要遍歷所有的文章內容,找出所有站內引用的圖片,找出這些圖片的URL;然后一個一個URL地與存儲路徑進行比較,如果大小寫不匹配,修改URL以與存儲路徑保持一致。修改后,再重新將這些圖片上傳至雲存儲服務商的空間。
看起來,他們的解決方法是合理的,但是讓每一位之前使用Windows平台的用戶遷移至雲存儲之后,都要進行這樣的操作,將遷移成本拋給用戶,至少不是一個替用戶着想的解決方法。而且要求引用圖片時,嚴格區分大小寫,也有些苛刻。作為雲服務商,用戶的遷移成本應該是重點要考慮的問題。之前,我們使用CDN加速時,CDN服務器用的也是Linux服務器,卻不存在這個問題。
也許讓URL明確區分大小寫有一千個合理的理由,但是讓用戶僅僅為了適應一個平台而作出如此大的更改,會讓用戶望而卻步。用戶可以接受新存儲的圖片遵循平台的規則,但很難接受更改已有的圖片。不管是軟件時代,還是互聯網時代,兼容性是必然要考慮的一個問題!
今天的分享就寫到這,我們的分享僅僅是通過我們的實際經歷,讓大家從一個側面了解當前雲計算的現狀。