微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Instagram图片服务的装备与技术

本文转载自http://mobile.csdn.net/a/20120406/2804276.html

很多喜欢拍照的iOS用户早就对Instagram爱不释手了(其实本人没用过这小编,哈哈),而Instagram也是在昨天发布了Android版本,和一些拥有更多特效、边框、灯光效果的应用相比,Instagram具有更丰富的社交性、更强的用户粘度以及更快的图片处理速度。每天Instagram都要接受大量来自iOS、Android客户端的各种请求、请求、请求……很多同行十分好奇Instagram是用什么方式以及工具来应对每天大量数据的。Instagram通过技术博客向外界揭示了这个世界一流图片服务商所使用的装备和技术,供开发者进行参考。

Instagram团队称,他们选择系统的首要原则有三条:

  1. 保持简单
  2. 利用现成工具,不用从新开始
  3. 使用已经被普遍认可的稳定的技术

底层

主机选择Amazon EC2(参考http://baike.baidu.com/view/6102577.htm),操作系统选用Ubuntu Natty,原因是Instagram团队发现相比之前版本,Natty在高流量环境下相对更加稳定;load balancing设备使用Amazon’s Elastic Load Balancer,DNS选择Amazon’s Route53(http://aws.amazon.com/route53/);以Amazon High-cpu Extra-Large设备作为应用服务器,运行Django(http://baike.baidu.com/view/962167.htm)来处理应用的请求;使用Gunicorn作为Wsgi server,因为发现Gunicorn配置起来更容易;使用Fabric来部署代码

数据库

采用Postgresql数据库,因为Amazon's network disk system (EBS)无法提供足够的每秒磁盘寻道,所以他们软件磁盘阵列(RAID)中通过mdadm设置EBS驱动器。存储器中的数据处理使用vmtouch,Postgresql实例全部通过Streaming Replication来设置,使用的工具是repmgr;用EBS snapshotting来定期备份系统,使用的工具是ec2-consistent-snapshot数据库文件系统使用XFS,使用快照的时候可以冻结/解冻RAID数组;用Pgbouncer将连接汇总到Postgresql图片数据库采用Amazon S3,CDN选用Amazon CloudFront;采用Redis来作为基于内存亦可持久化的日志型、Key-Value数据库

推送与监视

任务请求使用Gearman,而推送通知则使用pyapns;用Munin显示整个系统各种指标;用Pingdom作为外部监督服务;用PagerDuty处理通知和意外;用Sentry进行Python error报告。

总结起来就是:用已被普遍认可的技术来降低维护成本,将精力尽量花费在自己的核心业务上,所谓“好钢用在刀刃上”。

原文地址:https://www.jb51.cc/postgresql/196641.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐