写点什么

猛买网张磊:基于又拍云存储解决静态文件存储问题

2012 年 4 月 05 日

今年秋天,我加入猛买之后,遇到的第一个挑战就是图片托管。当时,网站流量快速增长,原有服务器几次增加带宽依然无法满足需求,流量常常跑满。现在回头总结一下,像我们这样的小公司,自己维护静态资源服务器大致有这些不爽:

  • 峰值带宽决定大部分成本
    如果峰值带宽在 20Mb,那就得买 20Mb,哪怕在凌晨只有几百 Kb。
  • 运维的成本不可忽视
    除了买带宽,还得时时处处留意服务器运行情况、网卡流量、安全状况等,也需要持续投入。
  • 单机达不到 CDN 的功效
    虽然我们用的机房速度和稳定性都不错,但毕竟是单机,无法保证全国各地的访问速度。

后来,我通过 @Fenng 联络到了 @gofeeling 和又拍,正赶上又拍云处在最后测试阶段,我们成了又拍云第一批用户。又拍云(以下简称为 UpYun)恰好为我们解决了上面的问题。

  • 按需付费,带宽需求再高,也只需要按流量付费,据粗略计算成本低至原先三成;
  • 抛开运维负担,如不放心,配置几个 URL 监控即可;
  • CDN 不再是问题,不同地区的用户都能享受到最好的访问速度。

在两个月的使用过程中,UpYun 确实出现过 2 次不稳定的状况,但又拍同学们都很及时地解决了。正式上线后,稳定性极佳,到目前为止可用率高达 100%。
这篇文章主要是从用户的角度谈谈 UpYun 的特点和使用技巧,让对 UpYun 感兴趣的朋友们更好地了解这个平台,可以加深了解,更好地使用它。 UpYun 目前提供的是文件存储 +CDN 的服务,可以认为是 AWS 的 S3+CloudFront,但实际用起来,有些细节上的不同。

0、与众不同的 Bucket

和一般云存储服务提供的 Bucket 不同,UpYun 中的 Bucket 分为文件类和图片类。文件类 Bucket 可以存放任何文件;图片类 Bucket 仅能存放图片文件,妄图上传其他类型会被拒绝。每个 Bucket 都可以绑定多个域名。

1、文件增量同步

使用第三方服务托管静态资源,都会有文件同步的需求。那么,放在主服务器的文件,如何同步到 UpYun 呢?又拍官方提供了两种方式:FTP 和 API。API 功能强大,但是需要做开发,目前还没人开发出类似 s3cmd 这样的工具;FTP 命令功能有限,想用原生的几个命令辗转腾挪实现 sync 很费劲(不切实际地想,如果支持 rsync 就好了)。

我们在实际使用时,利用了 lftp 的 mirror 命令,通过 FTP 协议实现了文件增量同步。再配合 crontab,就能做到定时增量同步了。这样既避免了投入精力围绕 API 做开发,又能达到 rsync 的效果。下面是一个脚本示例供参考:

复制代码
#!/bin/bash
HOST=”v0.ftp.upyun.com”
USER=”username”
PASS=”password”
LCD=”localpath”
RCD=”remotepath”
lftp -c “open ftp://$HOST;
user $USER $PASS;
lcd $LCD;
cd $RCD;
mirror –reverse \
–delete \
–dereference \
–verbose \
–exclude-glob=*.php”

2、缩略图功能

肯德基说“We do chicken right”,又拍的兄弟们完全可以自豪地说“We do pictures right”。UpYun 的图片类 Bucket 有一个高级功能,那就是自动生成指定尺寸缩略图。

在 Web 页面上如果出现大图小用,不仅浪费流量,也会导致用户浏览器缩小图片从而影响前端性能(小图大用的情况就不用说了吧)。这时,UpYun 的缩略图功能就派上用场了。

设置完成后,只要上传一张原图,UpYun 可以按需生成多张不同尺寸的缩略图(如果没有请求是不会生成的,这样可以节约空间)。

下面是 3 个不同尺寸的缩略图:

  • 150px 宽

  • 200px 宽

  • 310px 宽

要拥有这些缩略图,只需要上传一张原图:

又拍云可通过不同的 URL 得到不同尺寸的缩略图(感兴趣的话可以看看上面几幅图的地址)。是不是有点像淘宝的图片服务器?缩略图功能依然是按照使用的空间和产生流量收费,无额外费用。

3、数据备份

很多公司需要备份各类数据,这种需求也可以利用 UpYun 的文件 Bucket 来满足。当然,首先要将其设为私有,从而使外部无法访问。如图

设为禁止外链后,这个 Bucket 就可以用来安全地存放数据备份了。需注意目前对单个文件有最大 100MB 的限制。

除以上功能外,UpYun 还提供了直观的流量统计图表,如图:

后台还有很多其他功能,就不一一截图了。

CDN 也很赞,在国内不同位置获得的 IP 也不同,而且速度都不错。如图:

看完这些是不是心动了?产品给力,服务更没的说。快到 UpYun申请试用吧。如果感兴趣请在微博或 Twitter 找 @blogkid 索要优惠码,可以为你节约 5%。

2012 年 4 月 05 日 02:167029
用户头像

发布了 39 篇内容, 共 21.9 次阅读, 收获喜欢 123 次。

关注

评论

发布
暂无评论
发现更多内容

瑞幸商业模式的本质与组合式创新

石云升

创业 瑞幸 组合式创新

【week04】总结

chengjing

架构师训练营 - 第四周学习总结

hellohuan

极客大学架构师训练营

我精心整理的 136 页 Excel 数据透视表 PDF 文件!【附获取方式】

JackTian

Python 程序员 数据分析 Excel 数据透视表

架构师 第四周学习总结

冯凯

架构师训练营第四周总结

陈靓-哲露

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。

chenzt

第四周作业

武鹏

什么是工程师思维?

尖果爱学习

思维方式

分布式系统设计 - 第四周总结

孙志平

第四周总结

武鹏

给“小白”漫画+图示讲解MyBatis原理,就问香不香!

码农神说

Java mybatis

架构师训练营 第四周 作业

Poplar

Week04作业

熊威

架构师训练营 - 命题作业 第 4 周

水边

极客大学架构师训练营

架构师训练营第四周作业

sunnywhy

一题搞定static关键字

Java课代表

Java 面试

架构师训练营作业

邵帅

大型互联网应用系统都采用了哪些技术和手段,解决了什么问题?

hellohuan

极客大学架构师训练营

扯淡 Spring BeanDefinition

CoderLi

Java spring 程序员 源码分析

架构师 第四周作业

冯凯

架构师训练营4周总结

邵帅

【科普】Scrum——从橄榄球争球到敏捷开发

陈琦

Scrum 敏捷开发

架构师训练营 - 作业 -4- 互联网产品问题与架构方案

superman

架构师训练营 - 第四周总结

牛牛

学习 极客大学架构师训练营

架构师训练营第四周总结

一剑

架构师训练营第四周作业

陈靓-哲露

架构师训练营第四周作业

大丁💸💵💴💶🚀🐟

Lambda初次使用很慢?从JIT到类加载再到实现原理

Kerwin

Java Lambda 类加载 JIT

架构师训练营 第四周 总结

Poplar

程序员的乐趣,生成自定义二维码,5行Python代码就搞定

程序员生活志

Python 程序员 代码 二维码

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

猛买网张磊:基于又拍云存储解决静态文件存储问题-InfoQ