国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

3個(gè)中國(guó)程序員 vs 3個(gè)美國(guó)程序員,不得不承認(rèn),差距太大了!

0
分享至

大概是2009年,我和兩個(gè)好哥們聊天,覺得智能手機(jī)可能是風(fēng)口,商量著要弄一個(gè)照片分享網(wǎng)站。

用戶可以用手機(jī)把隨手拍的照片放到網(wǎng)上分享,名稱都起好了,叫InstantPost

可是我們的執(zhí)行力太差了,聚了兩次,做了一點(diǎn)兒技術(shù)驗(yàn)證,就沒有下文了。

過了幾年,我看到美國(guó)一個(gè)叫Instagram的火了,不由地一拍大腿:臥槽!這不就是我們當(dāng)年要做的事兒?jiǎn)???/p>

后來我看到Instagram初期的故事,他們也是三個(gè)程序員,從2010年10月到2011年12月,在一年多的時(shí)間內(nèi),就把用戶數(shù)量從0增長(zhǎng)到了1400萬!

看完他們的架構(gòu)設(shè)計(jì),我就釋然了,拋開執(zhí)行力,在2009年那個(gè)時(shí)間點(diǎn),我們確實(shí)不行。

Instagram制定的架構(gòu)指導(dǎo)準(zhǔn)則是:

1.保持簡(jiǎn)單

2.不要重新發(fā)明輪子

3.盡可能使用經(jīng)過驗(yàn)證的可靠技術(shù)

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

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

前端

Session:用戶打開了Instagram APP。

2010年,Instagram開發(fā)了一個(gè)iOS app,正式推出。

因?yàn)檫@時(shí)候Swift還沒有發(fā)布,他們用了Objective-C,UIKit等技術(shù)。

負(fù)載均衡

Session:打開App后,會(huì)向后端發(fā)起一個(gè)請(qǐng)求(獲取主界面的“信息流”),這個(gè)請(qǐng)求會(huì)首先到達(dá)Instagram的負(fù)載均衡。

Instagram 最早使用2個(gè)Nginx并在它們之間進(jìn)行DNS Round-Robin,這種方法的缺點(diǎn)是,如果某一個(gè)機(jī)器出現(xiàn)故障,DNS的更新需要時(shí)間。

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

后端

Session:負(fù)載均衡會(huì)把請(qǐng)求轉(zhuǎn)發(fā)給應(yīng)用服務(wù)器

Instagram用Django作為后端服務(wù),運(yùn)行在 Amazon High-CPU Extra-Large 上,因?yàn)檫@三個(gè)程序員發(fā)現(xiàn),后端服務(wù)是CPU密集型的。

Gunicorn做WSGI Server。

應(yīng)用運(yùn)行在超過25臺(tái)亞馬遜虛擬機(jī)中,這些應(yīng)用都是無狀態(tài)的,可以在需要的時(shí)候進(jìn)行擴(kuò)展。

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

數(shù)據(jù)存儲(chǔ)

Session: 用戶請(qǐng)求到達(dá)了應(yīng)用服務(wù)器,接下來它需要獲得這些數(shù)據(jù):

1.最新的Photo IDs

2.這些Photo ID對(duì)應(yīng)的實(shí)際照片

3.這些照片的用戶數(shù)據(jù)

Database: PostgreSQL

Session: 應(yīng)用服務(wù)器從PostgreSQL獲取最新的Photo ID,這里保存著用戶和照片的元數(shù)據(jù)。

大部分的數(shù)據(jù),如用戶,照片元數(shù)據(jù),標(biāo)簽等都保存在PostgreSQL數(shù)據(jù)庫中。

因?yàn)閿?shù)據(jù)量不小,每秒鐘有25個(gè)照片上傳,并且有90個(gè)贊,Instagram對(duì)數(shù)據(jù)做了分片

分片系統(tǒng)由數(shù)千個(gè)邏輯分片組成,這些分片在代碼中被映射到少得多的物理分片,用這種辦法,可以從少量的數(shù)據(jù)庫開始,擴(kuò)展到更多的數(shù)據(jù)庫。

當(dāng)擴(kuò)展時(shí),只需要把邏輯分片從一個(gè)數(shù)據(jù)庫“指向”另外一個(gè)即可,無需挪動(dòng)任何數(shù)據(jù)。

一個(gè)挑戰(zhàn)是:Instagram如何解決Photo ID問題,因?yàn)樾枰馨磿r(shí)間排序,而無需獲得有關(guān)照片的更多信息,理想情況下,ID應(yīng)該是64位的。

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

41位:記錄毫秒時(shí)間

13位:邏輯分片ID

10位:自動(dòng)增長(zhǎng)的序列,模數(shù)1024,這意味著每毫秒,每個(gè)分片可以生成1024個(gè)ID

最終結(jié)果是個(gè)64為整數(shù),可以被PostgreSQL排序,找到最新的照片。

照片的存儲(chǔ):S3 和Cloudfront

Session: 獲取了Photo ID以后,應(yīng)用服務(wù)器要獲取真正的照片,快速發(fā)給用戶

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

緩存

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

他們選擇了Redis后發(fā)現(xiàn),為了保存這些映射,Redis需要21GB內(nèi)存,這已經(jīng)大于 Amazon EC2 上的 17GB 實(shí)例類型。

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

對(duì)于其他緩存(如session),Instagram使用Memcached,當(dāng)時(shí)有6個(gè)實(shí)例。

數(shù)據(jù)備份

無論是PostGreSQL還是Redis,都會(huì)使用Amazon EBS經(jīng)常性進(jìn)行數(shù)據(jù)備用

通知和異步任務(wù)

Session: 用戶關(guān)閉了App,但是朋友發(fā)送了一張照片,需要發(fā)送一個(gè)通知。

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

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

在后臺(tái), 任務(wù)被推送到了Gearman, 這個(gè)任務(wù)隊(duì)列會(huì)保存任務(wù),Instagram有大約200 Python workers 來處理這些任務(wù)。

監(jiān)控

Session: Uh oh! 服務(wù)器端發(fā)生了錯(cuò)誤,Instagram崩潰了,那三個(gè)程序員需要收到告警,馬上進(jìn)行處理。

Instagram 使用 Sentry這個(gè)開源的應(yīng)用來實(shí)時(shí)監(jiān)控Python錯(cuò)誤。

使用Munin來繪制各種系統(tǒng)指標(biāo)的圖表,如果有任何情況超出正常范圍,就會(huì)向程序員發(fā)出異常告警。Instagram 有一堆自定義 Munin 插件來跟蹤應(yīng)用程序級(jí)別的指標(biāo),例如每秒發(fā)布的照片、每分鐘注冊(cè)人數(shù)等。

對(duì)于外部服務(wù)的監(jiān)控,使用了Pingdom ,PagerDuty 用于處理事件和通知。

最終的架構(gòu)

反思

2009年,我們?nèi)齻€(gè)都在比較傳統(tǒng)的軟件公司,互聯(lián)網(wǎng)技術(shù)用得比較少。

像負(fù)載均衡、分庫分表、緩存也是剛剛開始接觸,還沒有在生產(chǎn)系統(tǒng)中大規(guī)模使用的經(jīng)驗(yàn)。

iPhone還沒在國(guó)內(nèi)上市,我們仨手頭都沒有,還在用諾基亞的“智能機(jī)”做測(cè)試。

國(guó)內(nèi)市場(chǎng)也沒有很好的云服務(wù)作為基礎(chǔ)設(shè)施,當(dāng)時(shí)李彥宏表示,云計(jì)算只不過是新瓶裝舊酒,15年來沒有新東西,馬化騰則認(rèn)為云計(jì)算要像水電一樣用還為時(shí)尚早。

如果執(zhí)行力強(qiáng)的話,InstantPost應(yīng)該能做出來,但肯定會(huì)遇到很多的坑,想取得一年1000多萬用戶肯定是癡心妄想。

當(dāng)然,這僅僅說明我們?nèi)齻€(gè)比較菜,不是中國(guó)程序員不行,中國(guó)程序員在互聯(lián)網(wǎng)時(shí)代也創(chuàng)造了很多優(yōu)秀的產(chǎn)品,甚至殺到了美國(guó)大本營(yíng)。

我想說的是,很多看起來是風(fēng)口的東西,我們是抓不住的,因?yàn)椋?/p>

我們不是局內(nèi)人。

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

全文完,覺得不錯(cuò)的話點(diǎn)個(gè)贊或者在看吧!

參考資料:

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

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

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

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

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.

相關(guān)推薦
熱點(diǎn)推薦
26年央視春晚嘉賓名單曝光,牛鬼蛇神混子引爭(zhēng)議

26年央視春晚嘉賓名單曝光,牛鬼蛇神混子引爭(zhēng)議

杜鱂手工制作
2026-01-06 18:48:05
閑魚全國(guó)首家旗艦店落地深圳,二手交易玩出新花樣

閑魚全國(guó)首家旗艦店落地深圳,二手交易玩出新花樣

讀創(chuàng)
2026-01-09 11:19:19
遼寧這發(fā)生賣淫事件,最新消息來了?。▓D)

遼寧這發(fā)生賣淫事件,最新消息來了?。▓D)

本賬號(hào)停運(yùn)
2026-01-09 09:24:52
1月9日俄烏最新:美帝興,川普王

1月9日俄烏最新:美帝興,川普王

西樓飲月
2026-01-09 20:11:02
突發(fā)利空,48個(gè)半導(dǎo)體龍頭集體減持股票,這波牛市機(jī)構(gòu)逃頂

突發(fā)利空,48個(gè)半導(dǎo)體龍頭集體減持股票,這波牛市機(jī)構(gòu)逃頂

風(fēng)風(fēng)順
2026-01-09 13:02:20
安徽鹵味女神陳秀麗去世!僅37歲,因脖子長(zhǎng)疙瘩確診!曾想過輕生

安徽鹵味女神陳秀麗去世!僅37歲,因脖子長(zhǎng)疙瘩確診!曾想過輕生

鋭娛之樂
2026-01-08 15:55:05
軍事專家:“南天門計(jì)劃”技術(shù)實(shí)現(xiàn)只是時(shí)間問題

軍事專家:“南天門計(jì)劃”技術(shù)實(shí)現(xiàn)只是時(shí)間問題

財(cái)聯(lián)社
2026-01-09 16:01:27
王石與田樸珺視頻流出!她沒了仰慕和愛意,他的眼睛透出一股寒意

王石與田樸珺視頻流出!她沒了仰慕和愛意,他的眼睛透出一股寒意

火山詩話
2026-01-07 06:53:05
考辛斯戳破勇士遮羞布:追夢(mèng)的脾氣是你們慣的,贏球時(shí)咋沒人罵?

考辛斯戳破勇士遮羞布:追夢(mèng)的脾氣是你們慣的,贏球時(shí)咋沒人罵?

林子說事
2026-01-09 08:09:55
奧利弗咋就不著急呢?遼寧男籃客場(chǎng)贏江蘇,他一分鐘都沒有上場(chǎng)

奧利弗咋就不著急呢?遼寧男籃客場(chǎng)贏江蘇,他一分鐘都沒有上場(chǎng)

遼沈音信
2026-01-10 01:09:15
特朗普家族跨年夜現(xiàn)場(chǎng):19歲巴倫目睹父母“官方吻”瞬間移目!

特朗普家族跨年夜現(xiàn)場(chǎng):19歲巴倫目睹父母“官方吻”瞬間移目!

世界王室那些事
2026-01-08 16:55:53
伊朗流亡王儲(chǔ)向警察軍人喊話:保護(hù)人民,不要隨這艘船一起沉沒

伊朗流亡王儲(chǔ)向警察軍人喊話:保護(hù)人民,不要隨這艘船一起沉沒

通往遠(yuǎn)方的路
2026-01-09 10:17:26
拼命遏制中國(guó)在非影響力 特朗普?qǐng)D什么?

拼命遏制中國(guó)在非影響力 特朗普?qǐng)D什么?

看看新聞Knews
2026-01-09 20:09:13
或比中國(guó)衛(wèi)星還猛!腦機(jī)接口商用開啟  10大龍頭技術(shù)和產(chǎn)品已落地

或比中國(guó)衛(wèi)星還猛!腦機(jī)接口商用開啟 10大龍頭技術(shù)和產(chǎn)品已落地

元芳說投資
2026-01-09 06:00:09
丹麥議員嗆聲:被槍指頭還談什么,都要倒向中國(guó)了…

丹麥議員嗆聲:被槍指頭還談什么,都要倒向中國(guó)了…

觀察者網(wǎng)
2026-01-08 15:30:04
泰國(guó)這次厲害了!泰國(guó)警方稱3名國(guó)人攜帶8628張電話卡!

泰國(guó)這次厲害了!泰國(guó)警方稱3名國(guó)人攜帶8628張電話卡!

荊楚寰宇文樞
2026-01-08 22:51:38
廣西一精神小妹結(jié)婚,身上多處紋身新郎小她10歲,網(wǎng)友:相當(dāng)炸裂

廣西一精神小妹結(jié)婚,身上多處紋身新郎小她10歲,網(wǎng)友:相當(dāng)炸裂

唐小糖說情感
2026-01-07 16:37:28
“流氓作家”賈平凹語出驚人:跟睡過的女人比曖昧的女人更有感覺

“流氓作家”賈平凹語出驚人:跟睡過的女人比曖昧的女人更有感覺

百態(tài)人間
2026-01-04 16:18:53
中組部有關(guān)干部局負(fù)責(zé)同志宣布黨中央決定:曲光吉履新職

中組部有關(guān)干部局負(fù)責(zé)同志宣布黨中央決定:曲光吉履新職

上觀新聞
2026-01-09 16:52:05
真慘,從暴漲197%熔斷,到暴跌37%收盤,一股民進(jìn)去就虧40萬!

真慘,從暴漲197%熔斷,到暴跌37%收盤,一股民進(jìn)去就虧40萬!

財(cái)經(jīng)智多星
2026-01-09 11:45:06
2026-01-10 03:47:00
碼農(nóng)翻身 incentive-icons
碼農(nóng)翻身
有趣且硬核的技術(shù)文章
216文章數(shù) 605關(guān)注度
往期回顧 全部

科技要聞

市場(chǎng)偏愛MiniMax:開盤漲42%,市值超700億

頭條要聞

丹麥專家:美軍“拿下”格陵蘭島只要45分鐘

頭條要聞

丹麥專家:美軍“拿下”格陵蘭島只要45分鐘

體育要聞

金元時(shí)代最后的外援,來中國(guó)8年了

娛樂要聞

關(guān)曉彤鹿晗風(fēng)波后露面 不受影響狀態(tài)佳

財(cái)經(jīng)要聞

投資必看!瑞銀李萌給出3大核心配置建議

汽車要聞

助跑三年的奇瑞 接下來是加速還是起跳?

態(tài)度原創(chuàng)

游戲
本地
藝術(shù)
房產(chǎn)
公開課

怎么會(huì)有游戲上來就說自己的新服活不過10天???"/> 主站 商城 論壇 自運(yùn)營(yíng) 登錄 注冊(cè) 怎么會(huì)有游戲上來就說自己的新服活不過10天?。?廉頗 202...

本地新聞

云游內(nèi)蒙|“包”你再來?一座在硬核里釀出詩意的城

藝術(shù)要聞

撲面而來的激情:俄羅斯畫家斯拉因斯基 大筆觸繪畫作品!

房產(chǎn)要聞

66萬方!4755套!三亞巨量房源正瘋狂砸出!

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進(jìn)入關(guān)懷版