又拍云存储负责人沈志华谈又拍云技术架构

  • 贾国清

2012 年 5 月 8 日

话题:云计算DevOps语言 & 开发架构

InfoQ:请先做下自我介绍并简单描述下目前主要从事的工作?

沈志华:您好,我是又拍云存储项目负责人,沈志华,目前主要负责又拍云存储的产品规划及技术架构设计的工作。又拍云存储为用户做的都是非常基础性的工作,主要是海量文件存储、存储文件在全国各地的高速访问(CDN)、图片的各种版本调用(缩略图),这些工作都是最基础的技术开发工作,每家互联网公司的开发人员都在重复不停的投入研发精力和大量的服务器硬件铺设,通过又拍云存储,我们可以将这些技术研发和大量的服务器投入共享给所有互联网网站,让其他公司不需要重复不停的制造同一个轮子。

InfoQ:请简单介绍下又拍云存储的技术架构,以及使用到的技术?

沈志华:又拍云存储架构采用各地方缓存节点、核心缓存层、中心数据机房,3 层结构部署,前端智能 DNS 调度用户到该用户访问最快的节点,地方缓存节点会保持连接 2 个核心缓存机房做负载均衡及相互备用,避免单路网络问题,核心缓存机房通过多条线路互备到数据机房读取文件。在整个云存储系统中,采用了比较多的开源技术,主要开发语言有:C、PHP、Erlang、Python,用的比较多的开源产品有:NginxGraphicsMagickMySQLMemcachedHadoopRedisSquidHeartbeat、IPVS BIND。

InfoQ:在安全性方面,又拍云通过哪些策略或技术手段来保证托管的图片的保密性的?

沈志华:针对互联网站图片存储的实际需求和特性,在安全性方面做了比较多的工作,

  • 文件操作接口和文件读取接口(只读,无操作权限)分离,客户网站用户只能访问读取接口,文件操作接口只对客户开放,需凭客户密钥授权操作。并且,文件读取接口可以单独设置关闭。
  • 帐号系统分离,空间管理员可设多个操作员帐号给不同部门或项目组的人员,并且权限分离,空间管理员只有空间设置权限,无文件操作权限。操作员只有授权空间的文件操作权限,无空间设置权限。最大程度分离帐号的权限。
  • 很多网站会允许用户浏览处理过的缩略图,但不允许或需要授权用户才能下载此图片的原图,又拍云存储有原图 Secret 功能,每个图片原图都可以设置 Secret key。
  • Token 防盗链,用户可以给每个 Url 生成 Token 签名,也就是只有获得网站允许授权的用户才能访问这个图片,并且该授权还可以设置过期时间,精确到秒。

InfoQ:在速度上,是如何保证图片的快速存储和读取的?

沈志华:

  • 不同于传统 CDN 服务源站在各地各个机房,又拍云存储源站分布在 CDN 网络核心机房,在回源这条回路上做了最大优化,保证快速读取。
  • 国内网络环境非常复杂,今天通畅的网络没法保证明天还是这么通畅,为了适应复杂的网络变化,又拍云存储有专门的技术人员,结合自身及第 3 方的各地速度监控系统,不断更新速度表格,将用户优化到访问最快的机房。
  • 每个缓存节点投入更多的资源,目前所有节点的部署的缓存容量规模均在 10T 以上,保障客户文件能长期缓存在各地节点。
  • 缓存节点机房服务器集群做 LVS4 层负载,7 层 Nginx 进行一致性 Hash 提高缓存命中率,冷热文件调度将热门文件调度到 SSD 存储。
  • 开发者可采用直传 API,让用户通过云存储网络直接上传到云存储,而不需要经过用户服务器,存储速度更快。

InfoQ:在建设阶段,遇到的主要挑战有哪些?

沈志华:又拍云存储之前一直作为又拍社区和又拍图片管家及其他少数几个网站的基础存储层提供,系统架构、功能开发在摸索升级过程中逐渐定型,并开放提供给所有互联网网站使用。最大的挑战莫过于从文件存储、网络加速、图片处理群,各个环节在日常运行、扩容升级、系统升级时刻保证整个云存储的稳定运行。

InfoQ:又拍云存储是云存储的一个实例,例如 Dropbox,Google Drive 等,您认为在云存储上,最重要的应该具备的 3 个特性有哪些?

沈志华:又拍云存储主要定位是为各个互联网网站项目服务,跟 Dropbox 和 Google Drive 的面向个人和企业的文件存储及共享定位上有所区别。 但最最重要的特性是相同的,安全、稳定、速度。

InfoQ:又拍云下一步有哪些规划,是否考虑开放其他 API?

沈志华:又拍云接下来在海量小文件存储及网络高速分发访问、图片标准处理这 3 项基础工作上会继续深耕,让更多的互联网公司解放这一块的技术运维精力投入。

InfoQ:您认为基于又拍云的接口或服务,目前有哪些优秀的案例,在未来还会出现哪些创意的应用?

沈志华:通过又拍云服务,减少了大量的基础工作研发,专于自己的产品业务,降低互联网企业做规模产品的门槛。比较典型的案例 iWeekly 周末画报,所有图片存储在又拍云上,从 2010 年发布 iOS 客户端到读者突破百万,带宽从几十 M 到几 G,一直专注于产品业务的优化,未受服务器和带宽资源紧张分担精力,甚至没有配备专职的系统工程师。未来一些小而精的产品团队,会不断的开发出上规模的应用,如:花瓣、堆糖、Markzhi、驴评网等。

相关链接

又拍云存储官方网站

又拍云存储免费试用

云计算DevOps语言 & 开发架构