在我与国内互联网公司的接触中发现,“云存储”服务是当前需求最广泛的云计算服务之一。其中一个很重要的原因在于——“云存储”服务不仅能够像CDN一样帮助服务器降低负载并将数据快速有效的分发给用户,同时相比自行构建存储系统,它的成本要低得多。这使得不仅是创业公司,就连许多自建数据中心的大公司在开拓新业务时也开始尝试使用第三方的云存储服务。
但实际上,在中国的云计算领域,真正专注于提供底层“云存储”服务的厂商并不多,其中有竞争力的似乎只有前不久我报道过的金山云以及两家创业公司——又拍云存储和七牛云存储。而我们此前报道过的腾讯云、百度云等大厂商更多地专注于云主机服务,剩下的一些“云存储”服务都是停留在企业网盘层面。既然对于开发者而言这是一个非常刚性的需求,所以我打算对这些服务依次做详细的解读,本篇就来讲讲七牛云存储。
七牛创始人许式伟是中国较早那批研究云存储技术的人之一。在2011年创立七牛之前,他曾在金山和盛大承担了多年的云存储技术研究和架构设计工作。七牛云存储并没有考虑去山寨一个亚马逊的S3服务,而是进行了原创性的架构和功能设计,以做到尽可能的贴近本土开发者。
目前七牛已经拥有数千家客户,你会发现其中有很多都是像知乎、Weico、Camera360、美图秀秀、蝉游记和Vida等UGC(用户产生内容)类产品,尤其是在图片社交领域。这是因为,除了我在前面所说的“云存储”比传统方案更节省成本外,七牛云存储还有一个*的特性——支持用户将文件从客户端直传到云服务器中。因为我看过蝉游记CTO Quake撰文写过这一特性,所以就直接引用他的原文来做说明:
常见的云存储上传文件流程一般如下:
用户 =>应用服务器 =>云存储提供商
这样多了一次上传的流程,和本地存储相比,会相对慢一些。
而七牛提供了客户端自传的功能,流程可以改成:
用户 =>七牛 =>应用服务器
用户直接上传到七牛的服务器,通过DNS智能解析,七牛会选择到最近的最合适的ISP服务商节点,速度会比原先快很多,上传成功以后,七牛的服务器使用回调功能,只需要将非常少的数据(比如key)post回应用服务器,应用服务器进行保存即可。
开发者如果希望使用这个功能只需在产品里添加相关的SDK即可,另外,七牛也在架构中提供了“上传加速”服务,可以为用户智能选择最近的数据中心和最快的线路进行数据上传,从而达到*的上传速度。这个技术的难点在于必须保证数据中心间数据的一致性,我在《Facebook最伟大的技术成就有哪些?》一文中详细阐述这一做法的重要性。
除了速度以外,开发者一般还会关心另外两个问题:数据的安全性和数据的迁移成本。
在安全性方面,目前七牛云存储使用了3副本备份以及多数据中心备份来保证防止数据丢失的安全性,并通过将数据分块存储于多个服务器等多种安全措施的组合来防止数据被窃取。
在迁移成本上,七牛云存储开发了几个工具来帮助用户进行数据迁移:
1. 镜像存储。能够在不更改原站数据的情况下,被动地抓取原站数据,并把数据保存在七牛云存储上。
2.上传工具。能够直接同步本地目录及其子目录下的所有文件到服务器云端。
3.定时同步工具。开发者可以设置定时检测本地文件的改变,并同步修改部分,还能设定同步删除。
除了以上3个工具外,他们也提供通过硬件导入的大型数据的迁移服务。不过不同于其他的云存储服务,七牛云存储并不兼容亚马逊S3,所以使用亚马逊S3服务的产品迁移过来会相对麻烦一些。
当然,除了速度、稳定性和迁移成本外,为了更好地为开发者服务,参与市场竞争,现在的云存储厂商也开始在基础云存储服务上提供一些轻量的PaaS服务。例如七牛就针对图片和音视频等富媒体内容提供了云端处理服务,比如对应视频云存储推出了音频/视频的转码和截取工具,同时他们能够支持100MB以上的视频存储。他们也针对开发者提供了一些开发环境下的调试工具。
作为一家创业公司,七牛在两年内的业务发展速度很快,但他们的公司人数却没有与之成正比——目前为止,团队成员大约40人,其中90%都是技术人员。七牛也希望通过技术手段来提升每一位员工的生产率,比如尽可能的将运维系统自动化从而保持团队的精炼。他们将当前的重心放在了服务能力的扩增上——目前七牛在全国已经有超过500个加速节点,2012年年底拿到的融资能够让他们在今年更好地实施这一计划。