七牛云存储还有一个独一无二的特性——支持用户将文件从客户端直传到云服务器中
2015-11-02 02:42
267 查看
目前七牛已经拥有数千家客户,你会发现其中有很多都是像知乎、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年年底拿到的融资能够让他们在今年更好地实施这一计划。
http://developer.qiniu.com/
业务服务器颁发 上传凭证给客户端(终端用户)
客户端凭借 上传凭证 上传文件到七牛
在七牛获得完整数据后,发起一个 HTTP 请求回调到业务服务器
业务服务器保存相关信息,并返回一些信息给七牛
七牛原封不动地将这些信息转发给客户端(终端用户)
需要注意的是,回调到业务服务器的过程是可选的,它取决于业务服务器颁发的 上传凭证。如果没有回调,七牛会返回一些标准的信息(比如文件的 hash)给客户端。如果上传发生在业务服务器,以上流程可以自然简化为:
业务服务器生成上传凭证(不设置回调,自己回调到自己这里没有意义)
凭借 上传凭证 上传文件到七牛
善后工作,比如保存相关的一些信息
http://developer.qiniu.com/docs/v6/sdk/c-sdk.html http://www.gougousoso.com/u/yun/8.html
常见的云存储上传文件流程一般如下:
用户 =>应用服务器 =>云存储提供商
这样多了一次上传的流程,和本地存储相比,会相对慢一些。
而七牛提供了客户端自传的功能,流程可以改成:
用户 =>七牛 =>应用服务器
用户直接上传到七牛的服务器,通过DNS智能解析,七牛会选择到最近的最合适的ISP服务商节点,速度会比原先快很多,上传成功以后,七牛的服务器使用回调功能,只需要将非常少的数据(比如key)post回应用服务器,应用服务器进行保存即可。
开发者如果希望使用这个功能只需在产品里添加相关的SDK即可,另外,七牛也在架构中提供了“上传加速”服务,可以为用户智能选择最近的数据中心和最快的线路进行数据上传,从而达到最佳的上传速度。这个技术的难点在于必须保证数据中心间数据的一致性,我在《Facebook最伟大的技术成就有哪些?》一文中详细阐述这一做法的重要性。
除了速度以外,开发者一般还会关心另外两个问题:数据的安全性和数据的迁移成本。
在安全性方面,目前七牛云存储使用了3副本备份以及多数据中心备份来保证防止数据丢失的安全性,并通过将数据分块存储于多个服务器等多种安全措施的组合来防止数据被窃取。
在迁移成本上,七牛云存储开发了几个工具来帮助用户进行数据迁移:
1. 镜像存储。能够在不更改原站数据的情况下,被动地抓取原站数据,并把数据保存在七牛云存储上。
2.上传工具。能够直接同步本地目录及其子目录下的所有文件到服务器云端。
3.定时同步工具。开发者可以设置定时检测本地文件的改变,并同步修改部分,还能设定同步删除。
除了以上3个工具外,他们也提供通过硬件导入的大型数据的迁移服务。不过不同于其他的云存储服务,七牛云存储并不兼容亚马逊S3,所以使用亚马逊S3服务的产品迁移过来会相对麻烦一些。
当然,除了速度、稳定性和迁移成本外,为了更好地为开发者服务,参与市场竞争,现在的云存储厂商也开始在基础云存储服务上提供一些轻量的PaaS服务。例如七牛就针对图片和音视频等富媒体内容提供了云端处理服务,比如对应视频云存储推出了音频/视频的转码和截取工具,同时他们能够支持100MB以上的视频存储。他们也针对开发者提供了一些开发环境下的调试工具。
作为一家创业公司,七牛在两年内的业务发展速度很快,但他们的公司人数却没有与之成正比——目前为止,团队成员大约40人,其中90%都是技术人员。七牛也希望通过技术手段来提升每一位员工的生产率,比如尽可能的将运维系统自动化从而保持团队的精炼。他们将当前的重心放在了服务能力的扩增上——目前七牛在全国已经有超过500个加速节点,2012年年底拿到的融资能够让他们在今年更好地实施这一计划。
http://developer.qiniu.com/
上传流程
在七牛云存储中,整个上传流程大体分为这样几步:业务服务器颁发 上传凭证给客户端(终端用户)
客户端凭借 上传凭证 上传文件到七牛
在七牛获得完整数据后,发起一个 HTTP 请求回调到业务服务器
业务服务器保存相关信息,并返回一些信息给七牛
七牛原封不动地将这些信息转发给客户端(终端用户)
需要注意的是,回调到业务服务器的过程是可选的,它取决于业务服务器颁发的 上传凭证。如果没有回调,七牛会返回一些标准的信息(比如文件的 hash)给客户端。如果上传发生在业务服务器,以上流程可以自然简化为:
业务服务器生成上传凭证(不设置回调,自己回调到自己这里没有意义)
凭借 上传凭证 上传文件到七牛
善后工作,比如保存相关的一些信息
http://developer.qiniu.com/docs/v6/sdk/c-sdk.html http://www.gougousoso.com/u/yun/8.html
相关文章推荐
- Android之解析XML文件
- [转]使用popBackStack()清除Fragment
- C#分布式消息队列 EQueue 2.0 发布啦
- Xna内容管道及Xnb格式解析
- Objective-C之@class的使用
- 双系统windows重装系统后linux引导修复
- Foxit 出mac 版本啦
- [置顶] For-Coder——linux上提高开发工作效率的软件推荐
- PIC单片机之反汇编
- linux 硬盘分区,分区,删除分区,格式化,挂载,卸载笔记
- Daily Scrum (2015/11/1)
- PBR Step by Step(二)辐射度
- Python学习中的心得体会记录(一)
- Scrum Meeting---Six(2015-11-1)
- Java面向对象编程-第1章学习笔记
- HDU 4742 Pinball Game 3D (三维LIS+分治+树状数组)
- Mariadb InnoDB存储引擎和事务
- 数据保存(二):文件
- 如何实现跨应用绑定Service的通信
- no matching editors or conversion strategy found 异常