Instagram 早期技术架构,你了解了吗?( 二 )


  • 缓存
Instagram 使用 redis 将大约 3 亿张照片映射到创建它们的用户 ID 进行存储,所有 Redis 都存储在内存中以减少延迟,并在多台机器上进行分片 。
【Instagram 早期技术架构,你了解了吗?】通过一些巧妙的散列 , Instagram 能够在不到 5 GB 的内存中存储 3 亿个键映射
对于常规缓存,Instagram 使用了 Memcached 。他们当时有 6 个 Memcached 实例 。Memcached 相对容易叠加在 Django 上
Instagram 早期技术架构,你了解了吗?

文章插图
图片
PostgreSQL 和 Redis 都使用了主从架构,并使用 Amazon EBS(弹性块存储)快照对系统进行频繁备份
  • 推送通知和异步任务
Instagram  使用 pyapns 来实现,Pyapns 是一个开源的、通用的苹果推送通知服务(APNS)提供商
在后端,任务被推送到 Gearman,这是一个任务队列 , 将工作分配给更适合的机器 。Instagram 有 大约 200 名 Python 工作者使用 Gearman 任务队列
Gearman 常用于多个异步任务,例如向用户的所有关注者推送活动(发布的新照片)
  • 监控
Instagram 使用开源 Django 应用程序 Sentry 来实时监控 Python 错误
Munin 用于绘制系统范围的指标并发出异常警报 。Instagram 有一堆自定义的 Munin 插件来跟踪应用程序级别的指标,例如每秒发布的照片
Pingdom 用于外部服务监控,PagerDuty 用于处理事件和通知




推荐阅读