Instagram: 2年10亿美元背后的技术架构

标签: Architecture Facebook Python | 发表时间:2015-07-03 16:28 | 作者:allen
出处:http://blog.huihoo.com

转自: Archfan

参考: Instagram的技术探索

Instagram是一款免费照片分享移动应用,目前支持IOS和Android。在1年多的时间里,Instagram发展到140万个用户,1.5亿张图片(几个TB),仅有3个工程师,以10亿美元的天价被Facebook收购。不得不说,Instagram是业界的一个神话。今天我们就来看看到底是什么样的技术架构支撑着这个10亿美元的公司。

Instagram团队之前发表过一篇文章: What Powers Instagram:Hundreds of Instances,Dozens of Technologies。这篇文章中提到的技术架构堪称经典,很适合初创项目的快速启动。

这个小团队使用了很多不同的技术和策略,保证他们能轻松的应付快速增长带来的压力。他们混合使用SQL、NoSQL,一堆开源项目,和云服务;云服务他们选择了Amazon,他们认为Amazon要比他们自己部署IDC更有优势;用异步队列来串联组件;系统架构在众多的对外API和内部Services之上;数据存储在内存和云端;大部分代码是动态语言;等等等等。非常时髦的一个架构,基于这个架构之上他们得以快速前进,并且保持精简。

那篇文章非常值得一读,有兴趣的同学可以直接看原文。这里我列出一些要点:

  • 架构原则:1.保持简单;2.不重复造轮子;3.尽量使用成熟稳定的技术
  • 3个工程师
  • 大量使用Amazon服务,工程师不用耗费时间自己维护服务器
  • 100+个EC2实例用于各种用途
  • Ubuntu Linux 11.04(“Natty Narwhal”),他们认为这个版本更加稳定
  • Amazon的ELB(Elastic Load Balancer)路由请求,ELB后面起了3个Nginx实例
  • ELB上关闭了SSL,因为它降低了CPU的使用率
  • DNS使用Amazon的Route53
  • 25+个Django应用服务运行在High-CPU Extra-Large类型的机器上
  • CPU使用比内存使用更加容易达到边界值,所以使用High-CPU Extra-Large的实例来平衡内存和CPU
  • Gunicorn是他们的WSGI服务器。Apache更难配置,更耗CPU
  • Fabric被用来在所有机器上并行执行命令。部署花费更少的时间。
  • PostgreSQL(存储用户,照片元数据,标签等)运行在12个Quadruple Extra-Large Memory实例上
  • 12个PostgreSQL副本运行在不同的节点上
  • PostgreSQL的Master-Replica使用 流复制模式,利用EBS的快照来频繁备份
  • EBS部署在软件RAID上,使用 mdadm以获取适当的IO
  • 将所有工作中的数据集存储在内存中,因为EBS每秒磁盘寻道次数有限
  • Vmtouch(轻量级的文件系统缓存诊断工具)被用来管理内存数据,尤其是当 故障转移时目标机器没有足够空余的内存
  • 用XFS做文件系统,保证数据快照时RAID阵列上数据的一致性
  • Pgbouncer用作 PostgreSQL的连接池
  • 有几个TB的照片存在Amazon S3上
  • 用Amazon CloudFront做CDN
  • Redis用来支撑feed,活动消息,session系统和 其它服务
  • Redis运行在几台Quadruple Extra-Large Memory实例上,偶尔也会做下切分
  • Redis也是Master-Replica,副本持久化到磁盘上,并由EBS通过快照备份(这么搞是因为他们发现直接在Master上做dump相当吃力)
  • Geo-Search使用Solr,Solr提供的JSON接口也很简单易用
  • 6个memcached实例做缓存,因为Amazon Elastic Cache服务并不便宜,mmc客户端使用pylibmc和libmemcached
  • Gearman用做:向Twitter,Facebook等平台异步分享照片;新照片发布的通知;feed的反送
  • 200个Python进程处理Gearman的任务队列
  • Pyapns处理超过10亿条Apple的push通知,异常稳定
  • Munin用做监控和系统度量工具,用 Python-Munin写了很多图表插件,如每分钟注册人数,每秒钟图片发表数等等
  • Pingdom做内部服务的监控
  • PagerDuty用来处理通知和事件
  • Sentry用来做Python的错误报告

以上就是Instagram的博文里面提到的技术要点,怎么样,准备好构建下一个10亿美元的应用了么?

您可能也喜欢:

Sun 10大技术创新

Java 技术的发展

SOA & Web Services: 概念, 技术,工具

BEA的Java虚拟化技术白皮书
无觅

相关 [instagram 美元 技术] 推荐:

Instagram: 2年10亿美元背后的技术架构

- - 开放博客
参考: Instagram的技术探索. Instagram是一款免费照片分享移动应用,目前支持IOS和Android. 在1年多的时间里,Instagram发展到140万个用户,1.5亿张图片(几个TB),仅有3个工程师,以10亿美元的天价被Facebook收购. 不得不说,Instagram是业界的一个神话.

Instagram的技术架构

- - 标点符
Instagram 被 Facebook 以10亿美金收购. 而在被Facebook收购前的一个月,整个团队才7名员工. 2011年: 3 位工程师. 2012年: 5 位工程师. 坚持 DRY(Don’t Repeat Yourself)原则. 使用通知/信号机制实现解耦. 我们大部分工作使用Python来完成,只有逼不得已的时候,才会用C.

了解Instagram背后的技术

- - InfoQ cn
刚被Facebook以10亿美金收购的著名手机照片分享应用 Instagram最近吸引了无数人的眼球, Android版本登陆Google Play不到一个月下载量就突破1000万,总用户数即将超过5000万. Instagram联合创始人Mike Krieger说 他们用了8周时间打造了最初的Instagram,但现在的系统肯定已经今非昔比.

Instagram的变异

- 小白 - 互联网的那点事...
周末打算写手机拍照社交,为查资料,仔细看了看Instagram(最近两个月我的活跃度明显降低),大吃一惊,和年初我还活跃那阵子相比变化极大,之前的论点几乎全被推翻. 我之前的论点是这样的:手机拍照社交产品存在两个天然瓶颈. 第一个瓶颈是“信息”,即通过手机拍照传递出去的信息. 在传统渠道里,常见情形是摸出手机给朋友看,边看边讲,这是我家猫猫狗狗的相片,这是我去xxx玩的时候拍的相片——信息通过面对面的交流来传递.

Instagram的迷思

- Shell Wang - 坏脾气的小肥
这辈子遇到的,令我特别着迷的产品只有两款,2008年5月遇到开心,2010年11月遇到Instagram. 我在Instagram上面已经有200多个follower,哇哈哈哈哈,可惜每天两点一线,又没什么生活情趣,总是发以前去动物园拍的相片. 我猜是“与真实好友分享生活中的这一刻”. 作为背景介绍,Instagram是iPhone上(目前只支持iPhone)新出的APP,据说10天增长了20万个用户.

Instagram启示录

- Wenhuan - 所有文章 - UCD大社区
不管认为Instagram是lomo-twitter还是poladroid+iphoneography. 照片分享服务Instagram于 6个月之前上线,上个月24日公开发布了支持实时功能的API,第三方开发人员可以根据标签、地点和地区抓取照片. 数据显示,Instagram目前每周新增13万用户.

Trover 超越 Instagram ?

- PH囧ENIX - 爱范儿 · Beats of Bits
5月4日,Trover 上线,第二周成为 App Store 的 “本周推荐”,现在已经有来自140个国家的用户上传了照片. Trover 是一家小公司,由3名程序员和一名设计. Trover 的起步和 Instagram 很像,尽管它还有一些不完善的地方,但由于其拥有一些 Instagram 不具备的元素,我认为它将超越 Instagram.

Autodesk以6000万美元收购视频分享应用Socialcam!号称视频领域的instagram!

- - TECH2IPO创见
从去年开始,移动视频分享应用就开始了跑马圈地式的竞争,许多企业都想复制Instagram的成功,但是成功者很少. 目前市面上不乏优秀的视频分享应用,比如Socialcam、Viddy、Klip等,用户拍摄一小段有趣的视频,然后在社交网站上与好友分享. 当然,不是所有的企业都会向Facebook那样大手一挥,花10亿买下Instagram.

Facebook以总值约10亿美元的现金和股票收购拍照分享应用Instagram

- - 36氪
Facebook创始人兼CEO 马克·扎克伯格(Mark Zuckerberg)刚刚 宣布,Facebook已经收购Instagram. 而据 CNET的消息知,交易总值约为10亿美元,包括现金和股票. Facebook即将在一星期后开启互联网史上最大的IPO交易,而这笔收购交易也将是Facebook上市前规模最大的一笔收购交易.

用 Instagram 拍摄 Instagram 办公室

- 笑炊 - 爱范儿 · Beats of Bits
Kevin 分享过 Instagram  的创业故事:四个人,八周时间,推倒重建的项目,吸引了超过 500 万用户,成为 iPhone 平台上最受欢迎的图片分享社区之一. 这家位于旧金山的公司有何过人之处. 记者 Nicholas Jackson 拿着 iPhone 走进了  South Park St.