云计算之路:云存储的纠结
云计算之路系列博文分享的是我们将网站从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明确区分大小写有一千个合理的理由,但是让用户仅仅为了适应一个平台而作出如此大的更改,会让用户望而却步。用户可以接受新存储的图片遵循平台的规则,但很难接受更改已有的图片。不管是软件时代,还是互联网时代,兼容性是必然要考虑的一个问题!
今天的分享就写到这,我们的分享仅仅是通过我们的实际经历,让大家从一个侧面了解当前云计算的现状。