日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Instagram 早期技術架構,你了解了嗎?

來源: 責編: 時間:2023-11-07 09:14:51 310觀看
導讀哈嘍大家好,我是咸魚想必大家都聽說過 Instagram ,它是全球最受歡迎的社交媒體平臺之一,擁有數十億的活躍用戶Instagram 誕生于 2010 年,上線一周就坐擁 10 萬注冊用戶,一年之內就擁有了 1400 萬用戶,可見擴張趨勢突飛猛進

哈嘍大家好,我是咸魚leh28資訊網——每日最新資訊28at.com

想必大家都聽說過 Instagram ,它是全球最受歡迎的社交媒體平臺之一,擁有數十億的活躍用戶leh28資訊網——每日最新資訊28at.com

Instagram 誕生于 2010 年,上線一周就坐擁 10 萬注冊用戶,一年之內就擁有了 1400 萬用戶,可見擴張趨勢突飛猛進。leh28資訊網——每日最新資訊28at.com

Instagram 誕生的時候只有 3 個工程師,想必大家對【他們怎么設計后端架構,使用了什么技術來支持這么多用戶】很感興趣吧leh28資訊網——每日最新資訊28at.com

那么今天我們就來了解一下 Instagram 是如何在只有 3 名工程師的情況下擴展到 1400 萬用戶leh28資訊網——每日最新資訊28at.com

原文:https://engineercodex.substack.com/p/how-instagram-scaled-to-14-millionleh28資訊網——每日最新資訊28at.com

圖片圖片leh28資訊網——每日最新資訊28at.com

從 2010 年 10 月到 2011 年 12 月,Instagram 的用戶在一年多的時間里從 0 增加到1400萬,關鍵是他們只有 3 個工程師leh28資訊網——每日最新資訊28at.com

這聽起來是不是很不可思議。據 Instagram 工程師透露,他們通過遵循下面 3 個關鍵原則并擁有可靠的技術棧來做到這一點:leh28資訊網——每日最新資訊28at.com

  • 讓事情變得非常簡單
  • 不要重復造輪子
  • 盡可能使用經過驗證的可靠技術

技術棧

Instagram 早期的基礎設施運行在 AWS 上,使用 EC2 和 Ubuntu Linuxleh28資訊網——每日最新資訊28at.com

EC2 是 Amazon 的云服務,它允許開發人員租用虛擬機leh28資訊網——每日最新資訊28at.com

  • 前端 APP

Instagram 最初在 2010 年作為 iOS 應用程序推出。由于 Swift 在 2014 年才發布,那 Instagram 應該是使用 Objective-C 和 UIKit 等其他語言的組合來編寫的leh28資訊網——每日最新資訊28at.com

  • 負載均衡

Instagram 使用了 Amazon 的 Elastic 負載均衡器(Load Balancer)。他們有 3 個 Nginx 實例,Nginx 之間會進行健康檢查以此保證服務高可用leh28資訊網——每日最新資訊28at.com

當用戶請求到來時,每個請求會先經過負載均衡器,然后才被轉發到后端實際服務器leh28資訊網——每日最新資訊28at.com

圖片圖片leh28資訊網——每日最新資訊28at.com

  • 后端服務

圖片圖片leh28資訊網——每日最新資訊28at.com

Instagram 的應用程序服務器使用了 Django 框架,它是由 Python 編寫的,而 Gunicorn 是它們的 WSGI 服務器leh28資訊網——每日最新資訊28at.com

WSGI (Web Server Gateway Interface)全稱 web 服務器網關接口,它會將請求從 web 服務器轉發到 web 應用程序leh28資訊網——每日最新資訊28at.com

在批量管理和自動運維方面,Instagram 通過 Fabric 同時在多個實例上面并行運行命令,做到幾秒鐘內部署代碼leh28資訊網——每日最新資訊28at.com

Fabric 是 Python 的一個模塊,基于 SSH 提供了豐富的交互接口,可以用來在本地或遠程機器上自動化的執行 Shel l命令,非常適合用來做應用的遠程部署及系統維護leh28資訊網——每日最新資訊28at.com

這些實例在超過25臺 Amazon High-CPU Extra-Large 機器上運行。由于服務器本身是無狀態的,如果需要處理更多請求時,便可以添加更多的機器leh28資訊網——每日最新資訊28at.com

  • 一般數據存儲

Instagram 使用了 PostgreSQL 來存儲數據,應用程序服務器將從 PostgreSQL 中提取數據,PostgreSQL 存儲了 Instagram 的大部分數據,例如用戶和照片元數據leh28資訊網——每日最新資訊28at.com

PostgreSQL 和 Django 之間的連接通過 pgbouncerleh28資訊網——每日最新資訊28at.com

pgbouncer 是一個 PostgreSQL 連接池leh28資訊網——每日最新資訊28at.com

任何目標應用程序都可以像連接 PostgreSQL 服務器一樣連接到 pgbouncer,并且 pgbouncer 將創建到實際服務器的連接,或者重用其現有的連接leh28資訊網——每日最新資訊28at.com

Instagram 對用戶的數據進行了分片,即使用代碼將幾千個“邏輯”碎片映射到幾個物理碎片,因為收到的數據量很大(每秒超過 25 張照片和 90 個贊)leh28資訊網——每日最新資訊28at.com

但是在將數據寫入這組服務器之前,Instagram 必須解決如何為數據庫中的每條數據分配ID(唯一標識符)的問題leh28資訊網——每日最新資訊28at.com

下面則是 Instagram 中每條數據 ID 包含的內容:leh28資訊網——每日最新資訊28at.com

  • 41 位表示時間(以毫秒為單位)
  • 13 位表示邏輯分片 ID
  • 10 位表示自動遞增序列,模數 1024。這意味著我們可以在每毫秒內為每個分片生成 1024 個id

Instagram 的數據分片和 ID 具體是怎么解決的小伙伴們可以看這篇文章:leh28資訊網——每日最新資訊28at.com

https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5cleh28資訊網——每日最新資訊28at.com

  • 照片數據存儲

對于用戶的照片,Instagram 使用 Amazon S3 來存儲,并且使用 Amazon CloudFront 把照片快速提供給用戶leh28資訊網——每日最新資訊28at.com

  • 緩存

Instagram 使用 Redis 將大約 3 億張照片映射到創建它們的用戶 ID 進行存儲,所有 Redis 都存儲在內存中以減少延遲,并在多臺機器上進行分片。leh28資訊網——每日最新資訊28at.com

通過一些巧妙的散列,Instagram 能夠在不到 5 GB 的內存中存儲 3 億個鍵映射leh28資訊網——每日最新資訊28at.com

對于常規緩存,Instagram 使用了 Memcached。他們當時有 6 個 Memcached 實例。Memcached 相對容易疊加在 Django 上leh28資訊網——每日最新資訊28at.com

圖片圖片leh28資訊網——每日最新資訊28at.com

PostgreSQL 和 Redis 都使用了主從架構,并使用 Amazon EBS(彈性塊存儲)快照對系統進行頻繁備份leh28資訊網——每日最新資訊28at.com

  • 推送通知和異步任務

Instagram  使用 pyapns 來實現,Pyapns 是一個開源的、通用的蘋果推送通知服務(APNS)提供商leh28資訊網——每日最新資訊28at.com

在后端,任務被推送到 Gearman,這是一個任務隊列,將工作分配給更適合的機器。Instagram 有 大約 200 名 Python 工作者使用 Gearman 任務隊列leh28資訊網——每日最新資訊28at.com

Gearman 常用于多個異步任務,例如向用戶的所有關注者推送活動(發布的新照片)leh28資訊網——每日最新資訊28at.com

  • 監控

Instagram 使用開源 Django 應用程序 Sentry 來實時監控 Python 錯誤leh28資訊網——每日最新資訊28at.com

Munin 用于繪制系統范圍的指標并發出異常警報。Instagram 有一堆自定義的 Munin 插件來跟蹤應用程序級別的指標,例如每秒發布的照片leh28資訊網——每日最新資訊28at.com

Pingdom 用于外部服務監控,PagerDuty 用于處理事件和通知leh28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-17412-0.htmlInstagram 早期技術架構,你了解了嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 阿里Java面試官:CopyOnWriteArrayList底層是怎么保證線程安全的?

下一篇: Jenkins原理篇——成員權限管理

標簽:
  • 熱門焦點
  • 鴻蒙OS 4.0公測機型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統將于今天下午正式登場,官方在發布會之前也已經正式給出了可升級的機型產品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
  • 6月安卓手機好評榜:魅族20 Pro蟬聯冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • K8S | Service服務發現

    一、背景在微服務架構中,這里以開發環境「Dev」為基礎來描述,在K8S集群中通常會開放:路由網關、注冊中心、配置中心等相關服務,可以被集群外部訪問;圖片對于測試「Tes」環境或者
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內容電商的概念興起,抖音、快手、小紅書組成的“新電商三兄弟”成為業內一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 三星推出Galaxy Tab S9系列平板電腦以及Galaxy Watch6系列智能手表

    2023年7月26日,三星電子正式發布了Galaxy Z Flip5與Galaxy Z Fold5。除此之外,Galaxy Tab S9系列平板電腦以及三星Galaxy Watch6系列智能手表也同期
  • 英特爾Xe HPG游戲顯卡:擁有512EU,單風扇版本

    據10 月 30 日外媒 TheVerge 消息報道,英特爾 Xe HPG Arc Alchemist 的正面實被曝光,不僅擁有 512 EU 版顯卡,還擁有 128EU 的單風扇版本。另外,這款顯卡 PCB
Top 主站蜘蛛池模板: 天台县| 达日县| 扶沟县| 谢通门县| 灌阳县| 那坡县| 洪湖市| 娄烦县| 金平| 资源县| 陇南市| 平度市| 白朗县| 沾益县| 阜城县| 博客| 乌兰浩特市| 新河县| 南陵县| 封开县| 甘洛县| 且末县| 吴桥县| 定兴县| 民乐县| 瑞丽市| 渑池县| 江西省| 长宁区| 朝阳县| 新巴尔虎右旗| 河间市| 宜君县| 崇明县| 乌拉特后旗| 洛川县| 东港市| 稻城县| 工布江达县| 泗水县| 日土县|