99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網易首頁 > 網易號 > 正文 申請入駐

3個中國程序員 vs 3個美國程序員,不得不承認,差距太大了!

0
分享至

大概是2009年,我和兩個好哥們聊天,覺得智能手機可能是風口,商量著要弄一個照片分享網站。

用戶可以用手機把隨手拍的照片放到網上分享,名稱都起好了,叫InstantPost

可是我們的執行力太差了,聚了兩次,做了一點兒技術驗證,就沒有下文了。

過了幾年,我看到美國一個叫Instagram的火了,不由地一拍大腿:臥槽!這不就是我們當年要做的事兒嗎?!


后來我看到Instagram初期的故事,他們也是三個程序員,從2010年10月到2011年12月,在一年多的時間內,就把用戶數量從0增長到了1400萬!

看完他們的架構設計,我就釋然了,拋開執行力,在2009年那個時間點,我們確實不行。

Instagram制定的架構指導準則是:

1.保持簡單

2.不要重新發明輪子

3.盡可能使用經過驗證的可靠技術

所以早期的Instagram跑在云上,使用EC2和Ubuntu Linux 11.04。

接下來,站在一個用戶會話(Session)的角度,來看看Instagram的處理過程。

前端

Session:用戶打開了Instagram APP。

2010年,Instagram開發了一個iOS app,正式推出。

因為這時候Swift還沒有發布,他們用了Objective-C,UIKit等技術。


負載均衡

Session:打開App后,會向后端發起一個請求(獲取主界面的“信息流”),這個請求會首先到達Instagram的負載均衡。

Instagram 最早使用2個Nginx并在它們之間進行DNS Round-Robin,這種方法的缺點是,如果某一個機器出現故障,DNS的更新需要時間。

后來他們選擇了Amazon的Elastic Load Balancer,這里有三個NGINX實例,可以換入換出。


后端

Session:負載均衡會把請求轉發給應用服務器

Instagram用Django作為后端服務,運行在 Amazon High-CPU Extra-Large 上,因為這三個程序員發現,后端服務是CPU密集型的。

Gunicorn做WSGI Server。


應用運行在超過25臺亞馬遜虛擬機中,這些應用都是無狀態的,可以在需要的時候進行擴展。

為了在多臺機器上運行命令(例如部署代碼),Instagram使用了Fabric,它有一個很好用的并行模式,部署只需要幾秒鐘。

數據存儲

Session: 用戶請求到達了應用服務器,接下來它需要獲得這些數據:

1.最新的Photo IDs

2.這些Photo ID對應的實際照片

3.這些照片的用戶數據

Database: PostgreSQL

Session: 應用服務器從PostgreSQL獲取最新的Photo ID,這里保存著用戶和照片的元數據。

大部分的數據,如用戶,照片元數據,標簽等都保存在PostgreSQL數據庫中。

因為數據量不小,每秒鐘有25個照片上傳,并且有90個贊,Instagram對數據做了分片

分片系統由數千個邏輯分片組成,這些分片在代碼中被映射到少得多的物理分片,用這種辦法,可以從少量的數據庫開始,擴展到更多的數據庫。

當擴展時,只需要把邏輯分片從一個數據庫“指向”另外一個即可,無需挪動任何數據。

一個挑戰是:Instagram如何解決Photo ID問題,因為需要能按時間排序,而無需獲得有關照片的更多信息,理想情況下,ID應該是64位的。

后來的解決方案是這樣的:

41位:記錄毫秒時間

13位:邏輯分片ID

10位:自動增長的序列,模數1024,這意味著每毫秒,每個分片可以生成1024個ID

最終結果是個64為整數,可以被PostgreSQL排序,找到最新的照片。

照片的存儲:S3 和Cloudfront

Session: 獲取了Photo ID以后,應用服務器要獲取真正的照片,快速發給用戶

照片保存在Amazon S3中 ,存儲了幾個TB的數據,通過使用CDN(Amazon CloudFront ),照片可以快速分發給世界各地的用戶(例如日本,是Instagram第二大受歡迎的國家)

緩存

Instagram 需要將大約 3 億張照片(ID)和創建它們的用戶ID的映射保存起來,以便知道查詢那個分片。

他們選擇了Redis后發現,為了保存這些映射,Redis需要21GB內存,這已經大于 Amazon EC2 上的 17GB 實例類型。

后來他們向Redis的核心開發人員Pieter Noordhuis求助,Pieter建議使用Redis Hash,最終通過巧妙的設計,這些映射僅需不到5G的內存。

對于其他緩存(如session),Instagram使用Memcached,當時有6個實例。


數據備份

無論是PostGreSQL還是Redis,都會使用Amazon EBS經常性進行數據備用

通知和異步任務

Session: 用戶關閉了App,但是朋友發送了一張照片,需要發送一個通知。

Instagram的推送服務用的是 pyapns, 這是一個開源的、通用的蘋果推送服務提供商,運行非常穩定,為Instagram處理了超過10億條推送通知。

Session:用戶非常喜歡這張照片! 他決定在Twitter何Facebook上分享。

在后臺, 任務被推送到了Gearman, 這個任務隊列會保存任務,Instagram有大約200 Python workers 來處理這些任務。


監控

Session: Uh oh! 服務器端發生了錯誤,Instagram崩潰了,那三個程序員需要收到告警,馬上進行處理。

Instagram 使用 Sentry這個開源的應用來實時監控Python錯誤。

使用Munin來繪制各種系統指標的圖表,如果有任何情況超出正常范圍,就會向程序員發出異常告警。Instagram 有一堆自定義 Munin 插件來跟蹤應用程序級別的指標,例如每秒發布的照片、每分鐘注冊人數等。

對于外部服務的監控,使用了Pingdom ,PagerDuty 用于處理事件和通知。

最終的架構


反思

2009年,我們三個都在比較傳統的軟件公司,互聯網技術用得比較少。

像負載均衡、分庫分表、緩存也是剛剛開始接觸,還沒有在生產系統中大規模使用的經驗。

iPhone還沒在國內上市,我們仨手頭都沒有,還在用諾基亞的“智能機”做測試。

國內市場也沒有很好的云服務作為基礎設施,當時李彥宏表示,云計算只不過是新瓶裝舊酒,15年來沒有新東西,馬化騰則認為云計算要像水電一樣用還為時尚早。

如果執行力強的話,InstantPost應該能做出來,但肯定會遇到很多的坑,想取得一年1000多萬用戶肯定是癡心妄想。

當然,這僅僅說明我們三個比較菜,不是中國程序員不行,中國程序員在互聯網時代也創造了很多優秀的產品,甚至殺到了美國大本營。

我想說的是,很多看起來是風口的東西,我們是抓不住的,因為:

我們不是局內人。

(強烈推薦這篇文章《》)

全文完,覺得不錯的話點個贊或者在看吧!

參考資料:

https://engineercodex.substack.com/p/how-instagram-scaled-to-14-million (本文主體內容的來源)

https://instagram-engineering.com/what-powers-instagram-hundreds-of-instances-dozens-of-technologies-adf2e22da2ad

https://instagram-engineering.com/sharding-ids-at-instagram-1cf5a71e5a5c

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
伊朗向以色列境內發動新一輪導彈襲擊

伊朗向以色列境內發動新一輪導彈襲擊

財聯社
2025-06-19 00:46:07
淚目!伊以沖突之際,上海一支11名伊朗人的旅行團,上了熱搜

淚目!伊以沖突之際,上海一支11名伊朗人的旅行團,上了熱搜

消失的電波
2025-06-18 17:39:27
外界不懂京東!劉強東談公司沒有死掉的原因:全球僅5家零售公司成本做到10%,中國只有京東一家

外界不懂京東!劉強東談公司沒有死掉的原因:全球僅5家零售公司成本做到10%,中國只有京東一家

金融界
2025-06-18 20:11:22
“飛行的五角大樓”抵達華盛頓附近:沿不尋常的航線、發出不尋常的呼號

“飛行的五角大樓”抵達華盛頓附近:沿不尋常的航線、發出不尋常的呼號

紅星新聞
2025-06-19 12:34:01
阿拉伯世界如何看待這次以伊沖突:不同情以色列,對伊朗也不關心

阿拉伯世界如何看待這次以伊沖突:不同情以色列,對伊朗也不關心

緣史記
2025-06-19 01:57:25
遵守皇馬隔離協議,姆巴佩在酒店不出房間門,吃水果喝寶礦力

遵守皇馬隔離協議,姆巴佩在酒店不出房間門,吃水果喝寶礦力

懂球帝
2025-06-19 07:30:09
許家印最大靠山,死刑!

許家印最大靠山,死刑!

三農老歷
2025-06-19 08:57:49
難以置信!一家長稱六年級拍畢業照,每人收費20元被人告了而退款

難以置信!一家長稱六年級拍畢業照,每人收費20元被人告了而退款

火山詩話
2025-06-19 07:02:48
伊媒發布“手摸核彈”視頻,配文“有可能”

伊媒發布“手摸核彈”視頻,配文“有可能”

揚子晚報
2025-06-19 10:30:05
如何限制張子宇?日本隊主帥:我確實想到了辦法 不過是賽后想的

如何限制張子宇?日本隊主帥:我確實想到了辦法 不過是賽后想的

直播吧
2025-06-19 11:01:54
官方通報救護車跨省轉運收費2.8萬

官方通報救護車跨省轉運收費2.8萬

界面新聞
2025-06-18 23:54:57
吃相太難看!劉建宏點評蘇超,遭300萬女網紅怒懟:把臭嘴閉上

吃相太難看!劉建宏點評蘇超,遭300萬女網紅怒懟:把臭嘴閉上

阿廢冷眼觀察所
2025-06-19 00:37:36
超100億美元創紀錄!湖人多數股權將易主 新老板執掌3000億公司

超100億美元創紀錄!湖人多數股權將易主 新老板執掌3000億公司

羅說NBA
2025-06-19 06:05:19
有補貼?湖人新老板身家僅120億 卻100億估值買湖人!

有補貼?湖人新老板身家僅120億 卻100億估值買湖人!

直播吧
2025-06-19 08:13:13
當面殲-10CE,對面“陣風”:巴黎航展對臺戲

當面殲-10CE,對面“陣風”:巴黎航展對臺戲

新民晚報
2025-06-19 09:05:23
湖人賣球隊細節:簡短通知東契奇未告知詹姆斯 不會影響老詹決定

湖人賣球隊細節:簡短通知東契奇未告知詹姆斯 不會影響老詹決定

醉臥浮生
2025-06-19 09:21:21
“特朗普說謊”,伊朗強硬表態!伊方稱再擊落F35,“泥石”超重型導彈射向以色列!普京:伊方未求軍援;美國撤僑,部署第三艘航母

“特朗普說謊”,伊朗強硬表態!伊方稱再擊落F35,“泥石”超重型導彈射向以色列!普京:伊方未求軍援;美國撤僑,部署第三艘航母

每日經濟新聞
2025-06-19 08:43:59
這家公司裁員幅度93%!從2萬多人僅剩1770人,4年虧損200億

這家公司裁員幅度93%!從2萬多人僅剩1770人,4年虧損200億

小人物看盡人間百態
2025-06-18 06:20:06
這松弛感絕了!深圳小學生一個動作火上熱搜!

這松弛感絕了!深圳小學生一個動作火上熱搜!

深圳晚報
2025-06-18 22:25:16
破大防了!有人發現國內賣1000一條的黃鶴樓,越南免稅店770兩條

破大防了!有人發現國內賣1000一條的黃鶴樓,越南免稅店770兩條

星河也燦爛
2025-06-18 16:49:22
2025-06-19 13:20:49
碼農翻身 incentive-icons
碼農翻身
有趣且硬核的技術文章
135文章數 494關注度
往期回顧 全部

科技要聞

羅永浩數字人爆火,可怕的不是5500萬GMV

頭條要聞

牛彈琴:哈梅內伊稱大戰已開始 以街頭現特朗普廣告牌

頭條要聞

牛彈琴:哈梅內伊稱大戰已開始 以街頭現特朗普廣告牌

體育要聞

湖人賣球隊細節 簡短通知東契奇未告知詹姆斯

娛樂要聞

61歲劉歡晚年生活:父母離世女兒未婚

財經要聞

泡泡瑪特的資本游戲!誰是最后的接盤俠?

汽車要聞

14分鐘快充250km 日產LEAF官圖發布

態度原創

教育
數碼
家居
時尚
軍事航空

教育要聞

定位高考坐標!“一分一段表”用法解析

數碼要聞

石頭科技入選中國全球化品牌 50 強!

家居要聞

山水之間 墨染風雨云間

今夏的小性感,看Camille Yolaine!

軍事要聞

特朗普呼吁伊朗無條件投降

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 利辛县| 西乌| 库车县| 田阳县| 新沂市| 张家界市| 龙海市| 仲巴县| 岢岚县| 安吉县| 商洛市| 华宁县| 寿阳县| 克山县| 泰顺县| 寿宁县| 永寿县| 施甸县| 团风县| 宁化县| 乐都县| 綦江县| 方城县| 屏边| 扶风县| 北碚区| 六枝特区| 库尔勒市| 澄迈县| 赣榆县| 通渭县| 阳朔县| 繁峙县| 会同县| 灯塔市| 临沧市| 诏安县| 安仁县| 大姚县| 达孜县| 八宿县|