理解Instagram背后的技术

作者:微信群 微信号: 热度:570 2019-09-30

理解Instagram背后的技术

  刚被 Facebook 以 10 亿美金收购的著名手机照片分享应用 Instagram 最近吸引了无数人的眼球,Android 版本登陆 Google Play 不到一个月下载量就突破 1000 万,总用户数即将超过 5000 万。Instagram 联合创始人 Mike Krieger 说他们用了 8 周时间打造了最初的 Instagram,但现在的系统肯定已经今非昔比。Instagram 技术团队曾发表过一篇文章,介绍了 Instagram 背后的技术,日前 Mike Krieger 在名为 Scaling Instagram 的演讲里,又介绍了更多细节,让人们能了解到 5 名技术人员是如何支撑起整个系统的。

这是上传照片的过程:

如果照片上有地理位置标签,则同步写入媒体数据库,以异步方式将照片提交给Solr索引,并将照片ID添加到每个追随者的列表中。列表保存在Redis中,当Feed显示时,选择少量的照片ID,在memcached中查询。

在设计系统时,Instagram的设计理念很简单,优化和监控所有内容,以最大限度地减少操作负担;其核心原则是保持简单,不要重新发明轮子,并尽可能使用经过验证的可靠技术。

仅有5名技术人员(仅有2.5个后端工程师)和有限的能源,选择Amazon的云服务是一个很好的选择。目前,他们使用100多个EC2实例来提供各种服务,运行Ubuntu11.04,一些以前的版本在高流量下不稳定。在负载平衡方面,他们使用Amazon的弹性负载平衡器实现负载平衡,并在后端运行三个nginx实例。SSL仅在ELB上运行,降低了NGINx上CPU的负载。DNS和CDN分别由Amazon的路由53和Cloudfront提供。所有照片都存储在S3上。目前,有几个TB大小。

用于处理请求的应用服务器运行在AmazonHigh-CPU超大型实例之上,而且由于它们的请求更需要CPU,这使得CPU和内存之间更好地平衡。使用的开发框架是,Django,WSGI服务器通过Fabric并行部署在所有机器上,一次部署只需几秒钟。

大多数数据存储在PostgreSQL中,主分片集群在12个高内存四倍超大实例(68.4GB RAM)上运行,12个副本在不同的可用区中运行,通过repmgr到Streaming Replication同步的方式。由于Elastic Block Store的磁盘IOPS不高,您需要将正在使用的数据加载到内存中。 vmtouch可以帮助管理内存中的数据。

最新文章

我的位置:>首页 > 微信文章 > 互联网