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

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

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

0
分享至

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

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

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

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

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

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

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

1.保持簡單

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

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

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

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

前端

Session:用戶打開了Instagram APP。

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

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

負載均衡

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

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

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

后端

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

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

Gunicorn做WSGI Server。

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

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

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

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

1.最新的Photo IDs

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

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

Database: PostgreSQL

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

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

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

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

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

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

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

41位:記錄毫秒時間

13位:邏輯分片ID

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

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

照片的存儲:S3 和Cloudfront

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

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

緩存

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

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

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

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

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

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

通知和異步任務

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

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

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

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

監(jiān)控

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

Instagram 使用 Sentry這個開源的應用來實時監(jiān)控Python錯誤。

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

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

最終的架構

反思

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

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

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

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

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

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

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

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

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

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

參考資料:

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))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。

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.

相關推薦
熱點推薦
美軍航母遇襲560人傷亡,特朗普口風突變

美軍航母遇襲560人傷亡,特朗普口風突變

80后房車生活
2026-03-03 05:19:53
你干過哪些陰暗齷齪的事?網(wǎng)友:最后一個真的好炸裂好真實

你干過哪些陰暗齷齪的事?網(wǎng)友:最后一個真的好炸裂好真實

帶你感受人間冷暖
2026-02-17 01:00:24
伊朗導彈擊中美第五艦隊總部瞬間畫面曝光,美海軍第五艦隊總部遇襲前后衛(wèi)星圖公開

伊朗導彈擊中美第五艦隊總部瞬間畫面曝光,美海軍第五艦隊總部遇襲前后衛(wèi)星圖公開

揚子晚報
2026-03-02 17:09:15
高層死光后,特朗普呼吁對話,關鍵時候,美媒:中美沖突怎么打?

高層死光后,特朗普呼吁對話,關鍵時候,美媒:中美沖突怎么打?

梁訊
2026-03-03 05:03:36
海瀾之家被“全軍拉黑”!中標后拒簽合同,200億撐不起一單軍需

海瀾之家被“全軍拉黑”!中標后拒簽合同,200億撐不起一單軍需

牛鍋巴小釩
2026-03-03 00:56:41
寧波一旅游團所乘郵輪滯留迪拜,船上有約200名中國游客

寧波一旅游團所乘郵輪滯留迪拜,船上有約200名中國游客

上觀新聞
2026-03-02 16:27:07
場均27+14+9!坐擁聯(lián)盟第一戰(zhàn)力為何突然萎靡?他們想念那位配角

場均27+14+9!坐擁聯(lián)盟第一戰(zhàn)力為何突然萎靡?他們想念那位配角

阿浪的籃球故事
2026-03-02 16:05:03
3打5!又兩國參戰(zhàn)中東,3國加入美以,關鍵時刻,普京對中承諾

3打5!又兩國參戰(zhàn)中東,3國加入美以,關鍵時刻,普京對中承諾

面包夾知識
2026-03-02 13:35:18
正式官宣!洛杉磯奧運參賽名單確定,國乒恐需一人身兼四項

正式官宣!洛杉磯奧運參賽名單確定,國乒恐需一人身兼四項

最愛乒乓球
2026-03-03 00:05:36
俄媒警告中國:美國打伊朗只是幌子,目的是逼解放軍到太平洋決戰(zhàn)

俄媒警告中國:美國打伊朗只是幌子,目的是逼解放軍到太平洋決戰(zhàn)

夜里看海
2026-03-03 04:41:29
NBA傳聞:克里斯·米德爾頓為啥拒絕掘金的邀請,選擇留在獨行俠

NBA傳聞:克里斯·米德爾頓為啥拒絕掘金的邀請,選擇留在獨行俠

好火子
2026-03-03 02:38:53
李亞鵬與哥哥和解:沒有劇本,沒有眼淚,只有一條真心話短信

李亞鵬與哥哥和解:沒有劇本,沒有眼淚,只有一條真心話短信

溫柔娛公子
2026-03-02 17:25:03
美軍瞞不住了!炸航母基地,炸11億美元雷達,幾十萬噸燃油被點燃

美軍瞞不住了!炸航母基地,炸11億美元雷達,幾十萬噸燃油被點燃

夢史
2026-03-01 11:22:23
“生靈涂炭”,知名女主持人直播中落淚!連線時警報突然響起,網(wǎng)友紛紛祈愿……

“生靈涂炭”,知名女主持人直播中落淚!連線時警報突然響起,網(wǎng)友紛紛祈愿……

新民周刊
2026-03-02 16:00:18
明明手上沒權,為什么內(nèi)賈德還非死不可?真相遠非復仇那么簡單

明明手上沒權,為什么內(nèi)賈德還非死不可?真相遠非復仇那么簡單

李健政觀察
2026-03-02 11:51:27
演員于某在北京被抓

演員于某在北京被抓

老吳教育課堂
2026-03-02 20:13:46
拉里賈尼:不會與美國進行談判,美以不可能打了伊朗就一走了之!美官員承認:無情報顯示伊朗計劃“先發(fā)制人”打擊美軍

拉里賈尼:不會與美國進行談判,美以不可能打了伊朗就一走了之!美官員承認:無情報顯示伊朗計劃“先發(fā)制人”打擊美軍

每日經(jīng)濟新聞
2026-03-02 14:22:17
突變!白銀大跳水,黃金回落!美股集體下跌!特朗普,最新發(fā)聲!

突變!白銀大跳水,黃金回落!美股集體下跌!特朗普,最新發(fā)聲!

證券時報e公司
2026-03-02 23:05:14
有報道稱“伊朗試圖恢復與華盛頓談判”,伊朗最高領袖顧問:伊朗不會與美國談判

有報道稱“伊朗試圖恢復與華盛頓談判”,伊朗最高領袖顧問:伊朗不會與美國談判

環(huán)球網(wǎng)資訊
2026-03-02 12:43:32
馮小剛春節(jié)后送女兒上學 臉貼臉說想她 給徐朵開車提行李很舍不得

馮小剛春節(jié)后送女兒上學 臉貼臉說想她 給徐朵開車提行李很舍不得

離離言幾許
2026-03-02 15:51:46
2026-03-03 06:59:00
碼農(nóng)翻身 incentive-icons
碼農(nóng)翻身
有趣且硬核的技術文章
230文章數(shù) 629關注度
往期回顧 全部

科技要聞

蘋果中國官網(wǎng)上線iPhone 17e,4499元起

頭條要聞

媒體:拉里賈尼走向前臺 四大關鍵變量將決定伊朗命運

頭條要聞

媒體:拉里賈尼走向前臺 四大關鍵變量將決定伊朗命運

體育要聞

“想要我簽名嗎” 梅西逆轉后嘲諷對手主帥

娛樂要聞

李亞鵬與哥哥和解 只有一條真心話短信

財經(jīng)要聞

油價飆升 美伊沖突將如何攪動全球經(jīng)濟

汽車要聞

國民SUV再添一員 瑞虎7L靜態(tài)體驗

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

健康
家居
旅游
親子
軍事航空

轉頭就暈的耳石癥,能開車上班嗎?

家居要聞

萬物互聯(lián) 享科技福祉

旅游要聞

尋禮曲阜感受年味(新春走基層)

親子要聞

開學了!珠海香洲:筑牢安全防線,保障托育機構順利開園復托

軍事要聞

美國中央司令部透露對伊朗動武全部武器裝備清單

無障礙瀏覽 進入關懷版