当前位置:首页 > 科技  > 软件

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

来源: 责编: 时间:2023-11-07 09:14:51 215观看
导读哈喽大家好,我是咸鱼想必大家都听说过 Instagram ,它是全球最受欢迎的社交媒体平台之一,拥有数十亿的活跃用户Instagram 诞生于 2010 年,上线一周就坐拥 10 万注册用户,一年之内就拥有了 1400 万用户,可见扩张趋势突飞猛进

哈喽大家好,我是咸鱼Mak28资讯网——每日最新资讯28at.com

想必大家都听说过 Instagram ,它是全球最受欢迎的社交媒体平台之一,拥有数十亿的活跃用户Mak28资讯网——每日最新资讯28at.com

Instagram 诞生于 2010 年,上线一周就坐拥 10 万注册用户,一年之内就拥有了 1400 万用户,可见扩张趋势突飞猛进。Mak28资讯网——每日最新资讯28at.com

Instagram 诞生的时候只有 3 个工程师,想必大家对【他们怎么设计后端架构,使用了什么技术来支持这么多用户】很感兴趣吧Mak28资讯网——每日最新资讯28at.com

那么今天我们就来了解一下 Instagram 是如何在只有 3 名工程师的情况下扩展到 1400 万用户Mak28资讯网——每日最新资讯28at.com

原文:https://engineercodex.substack.com/p/how-instagram-scaled-to-14-millionMak28资讯网——每日最新资讯28at.com

图片图片Mak28资讯网——每日最新资讯28at.com

从 2010 年 10 月到 2011 年 12 月,Instagram 的用户在一年多的时间里从 0 增加到1400万,关键是他们只有 3 个工程师Mak28资讯网——每日最新资讯28at.com

这听起来是不是很不可思议。据 Instagram 工程师透露,他们通过遵循下面 3 个关键原则并拥有可靠的技术栈来做到这一点:Mak28资讯网——每日最新资讯28at.com

  • 让事情变得非常简单
  • 不要重复造轮子
  • 尽可能使用经过验证的可靠技术

技术栈

Instagram 早期的基础设施运行在 AWS 上,使用 EC2 和 Ubuntu LinuxMak28资讯网——每日最新资讯28at.com

EC2 是 Amazon 的云服务,它允许开发人员租用虚拟机Mak28资讯网——每日最新资讯28at.com

  • 前端 APP

Instagram 最初在 2010 年作为 iOS 应用程序推出。由于 Swift 在 2014 年才发布,那 Instagram 应该是使用 Objective-C 和 UIKit 等其他语言的组合来编写的Mak28资讯网——每日最新资讯28at.com

  • 负载均衡

Instagram 使用了 Amazon 的 Elastic 负载均衡器(Load Balancer)。他们有 3 个 Nginx 实例,Nginx 之间会进行健康检查以此保证服务高可用Mak28资讯网——每日最新资讯28at.com

当用户请求到来时,每个请求会先经过负载均衡器,然后才被转发到后端实际服务器Mak28资讯网——每日最新资讯28at.com

图片图片Mak28资讯网——每日最新资讯28at.com

  • 后端服务

图片图片Mak28资讯网——每日最新资讯28at.com

Instagram 的应用程序服务器使用了 Django 框架,它是由 Python 编写的,而 Gunicorn 是它们的 WSGI 服务器Mak28资讯网——每日最新资讯28at.com

WSGI (Web Server Gateway Interface)全称 web 服务器网关接口,它会将请求从 web 服务器转发到 web 应用程序Mak28资讯网——每日最新资讯28at.com

在批量管理和自动运维方面,Instagram 通过 Fabric 同时在多个实例上面并行运行命令,做到几秒钟内部署代码Mak28资讯网——每日最新资讯28at.com

Fabric 是 Python 的一个模块,基于 SSH 提供了丰富的交互接口,可以用来在本地或远程机器上自动化的执行 Shel l命令,非常适合用来做应用的远程部署及系统维护Mak28资讯网——每日最新资讯28at.com

这些实例在超过25台 Amazon High-CPU Extra-Large 机器上运行。由于服务器本身是无状态的,如果需要处理更多请求时,便可以添加更多的机器Mak28资讯网——每日最新资讯28at.com

  • 一般数据存储

Instagram 使用了 PostgreSQL 来存储数据,应用程序服务器将从 PostgreSQL 中提取数据,PostgreSQL 存储了 Instagram 的大部分数据,例如用户和照片元数据Mak28资讯网——每日最新资讯28at.com

PostgreSQL 和 Django 之间的连接通过 pgbouncerMak28资讯网——每日最新资讯28at.com

pgbouncer 是一个 PostgreSQL 连接池Mak28资讯网——每日最新资讯28at.com

任何目标应用程序都可以像连接 PostgreSQL 服务器一样连接到 pgbouncer,并且 pgbouncer 将创建到实际服务器的连接,或者重用其现有的连接Mak28资讯网——每日最新资讯28at.com

Instagram 对用户的数据进行了分片,即使用代码将几千个“逻辑”碎片映射到几个物理碎片,因为收到的数据量很大(每秒超过 25 张照片和 90 个赞)Mak28资讯网——每日最新资讯28at.com

但是在将数据写入这组服务器之前,Instagram 必须解决如何为数据库中的每条数据分配ID(唯一标识符)的问题Mak28资讯网——每日最新资讯28at.com

下面则是 Instagram 中每条数据 ID 包含的内容:Mak28资讯网——每日最新资讯28at.com

  • 41 位表示时间(以毫秒为单位)
  • 13 位表示逻辑分片 ID
  • 10 位表示自动递增序列,模数 1024。这意味着我们可以在每毫秒内为每个分片生成 1024 个id

Instagram 的数据分片和 ID 具体是怎么解决的小伙伴们可以看这篇文章:Mak28资讯网——每日最新资讯28at.com

https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5cMak28资讯网——每日最新资讯28at.com

  • 照片数据存储

对于用户的照片,Instagram 使用 Amazon S3 来存储,并且使用 Amazon CloudFront 把照片快速提供给用户Mak28资讯网——每日最新资讯28at.com

  • 缓存

Instagram 使用 Redis 将大约 3 亿张照片映射到创建它们的用户 ID 进行存储,所有 Redis 都存储在内存中以减少延迟,并在多台机器上进行分片。Mak28资讯网——每日最新资讯28at.com

通过一些巧妙的散列,Instagram 能够在不到 5 GB 的内存中存储 3 亿个键映射Mak28资讯网——每日最新资讯28at.com

对于常规缓存,Instagram 使用了 Memcached。他们当时有 6 个 Memcached 实例。Memcached 相对容易叠加在 Django 上Mak28资讯网——每日最新资讯28at.com

图片图片Mak28资讯网——每日最新资讯28at.com

PostgreSQL 和 Redis 都使用了主从架构,并使用 Amazon EBS(弹性块存储)快照对系统进行频繁备份Mak28资讯网——每日最新资讯28at.com

  • 推送通知和异步任务

Instagram  使用 pyapns 来实现,Pyapns 是一个开源的、通用的苹果推送通知服务(APNS)提供商Mak28资讯网——每日最新资讯28at.com

在后端,任务被推送到 Gearman,这是一个任务队列,将工作分配给更适合的机器。Instagram 有 大约 200 名 Python 工作者使用 Gearman 任务队列Mak28资讯网——每日最新资讯28at.com

Gearman 常用于多个异步任务,例如向用户的所有关注者推送活动(发布的新照片)Mak28资讯网——每日最新资讯28at.com

  • 监控

Instagram 使用开源 Django 应用程序 Sentry 来实时监控 Python 错误Mak28资讯网——每日最新资讯28at.com

Munin 用于绘制系统范围的指标并发出异常警报。Instagram 有一堆自定义的 Munin 插件来跟踪应用程序级别的指标,例如每秒发布的照片Mak28资讯网——每日最新资讯28at.com

Pingdom 用于外部服务监控,PagerDuty 用于处理事件和通知Mak28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-17412-0.htmlInstagram 早期技术架构,你了解了吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 阿里Java面试官:CopyOnWriteArrayList底层是怎么保证线程安全的?

下一篇: Jenkins原理篇——成员权限管理

标签:
  • 热门焦点
  • 帅气纯真少年!日本最帅初中生选美冠军出炉

    帅气纯真少年!日本最帅初中生选美冠军出炉

    日本第一帅哥初一生选美大赛冠军现已正式出炉,冠军是来自千叶县的宗田悠良。日本一直热衷于各种选美大赛,从“最美JK”起到“最美女星&r
  • 三言两语说透设计模式的艺术-简单工厂模式

    三言两语说透设计模式的艺术-简单工厂模式

    一、写在前面工厂模式是最常见的一种创建型设计模式,通常说的工厂模式指的是工厂方法模式,是使用频率最高的工厂模式。简单工厂模式又称为静态工厂方法模式,不属于GoF 23种设计
  • Rust中的高吞吐量流处理

    Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • Automa-通过连接块来自动化你的浏览器

    Automa-通过连接块来自动化你的浏览器

    1、前言通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。Selenium IDEKat
  • 如何正确使用:Has和:Nth-Last-Child

    如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 让我们一起聊聊文件的操作

    让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 10天营收超1亿美元,《星铁》比《原神》差在哪?

    10天营收超1亿美元,《星铁》比《原神》差在哪?

    来源:伯虎财经作者:陈平安即便你没玩过《原神》,你一定听说过的它的大名。恨它的人把《原神》开服那天称作是中国游戏史上最黑暗的一天,有粉丝因为索尼在PS平台上线《原神》,怒而
  • 余承东:AI大模型技术的发展将会带来下一代智能终端操作系统的智慧体验

    余承东:AI大模型技术的发展将会带来下一代智能终端操作系统的智慧体验

    8月4日消息,2023年华为开发者大会(HDC.Together)今天正式开幕,华为发布HarmonyOS 4、全新升级的鸿蒙开发套件、HarmonyOS Next开发者预览版本等一系列
  • 苹果、三星、惠普等暂停向印度出口笔记本和平板电脑

    苹果、三星、惠普等暂停向印度出口笔记本和平板电脑

    集微网消息,据彭博社报道,在8月3日印度突然禁止在没有许可证的情况下向印度进口电脑/平板及显示器等产品后,苹果、三星电子和惠普等大公司暂停向印度
Top