您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

Instagram遷移到Python 的原因和好處

大?。?/span>0.6 MB 人氣: 2017-09-28 需要積分:1

  本文講述了參與到Instagram遷移工作的兩位工程師,Hui Ding和Lisa Guo,他們是如何看待Instagram遷移到Python 3的,以及遷移的原因和好處。以下為譯文。

  現(xiàn)在每天在Instagram平臺(tái)上分享的照片和視頻的數(shù)量已經(jīng)超過(guò)9500萬(wàn)。照片中心社交媒體平臺(tái)擁有6億多注冊(cè)用戶—其中活躍用戶每天大概有4億人。談?wù)勔?guī)模經(jīng)營(yíng):當(dāng)規(guī)模達(dá)到了大多數(shù)公司做夢(mèng)都不敢想的階段以后,Instagram卻選擇了放棄。

  盡管如此,令人印象更深刻的是Instagram在后臺(tái)是通過(guò)Python(當(dāng)然Django也提供了一點(diǎn)幫助)才能為如此大的訪問(wèn)量提供可靠而穩(wěn)定的響應(yīng)。沒(méi)錯(cuò),就是Python-就是那門非常容易學(xué)習(xí),但是通用性卻非常高的編程語(yǔ)言。業(yè)內(nèi)所有人都認(rèn)為:“是的,Python在很多方面都很出色,但它沒(méi)辦法做到可擴(kuò)展?!?/p>

  每天四億用戶。Instagram不僅成為了世界上最大的Python用戶,而且該公司最近還將其順利地轉(zhuǎn)移到Python 3,用戶絲毫沒(méi)有體驗(yàn)到有任何中斷。Instagram工程師Hui Ding和Lisa Guo最近接受了The New Stack的訪問(wèn),他們分享了他們對(duì)Python的熱愛,并描述了Python 3的遷移體驗(yàn)。

  首先請(qǐng)問(wèn),Instagram最初為什么會(huì)選擇使用Python呢?

  Hui Ding:我是在Instagram被收購(gòu)以后,作為第一批進(jìn)入到Instagram的一員[Instagram成立于2010年,由Facebook在2012年收購(gòu)]。從那時(shí)起,我們從原本的6名工程師變成了300名。盡管最初的時(shí)候我并不是其中一員,但是在我們還是一個(gè)很小的團(tuán)隊(duì)的初期,我和Instagram的聯(lián)合創(chuàng)始人]Mike Krieger密切合作,所以我有很多關(guān)于為什么選擇Python的歷史背景。

  其原因與Instagram的“先做簡(jiǎn)單事情”的工程座右銘是一致的:對(duì)工程師來(lái)說(shuō),Python是非常容易掌握使用的——它很容易上手,也很容易獲得產(chǎn)品,讓團(tuán)隊(duì)專注于面向用戶的功能。Python簡(jiǎn)潔干凈,有利于實(shí)用主義。這是一項(xiàng)已被證實(shí)的技術(shù)。最后,Python是一門非常流行的語(yǔ)言,這使得工程團(tuán)隊(duì)的發(fā)展變得更加容易。

  是什么問(wèn)題促使Instagram開始考慮了新的堆棧?

  Ding:隨著我們的發(fā)展,我們發(fā)現(xiàn)Python并不是最快的語(yǔ)言,而且越來(lái)越明顯的。AWS也越來(lái)越傾向于通過(guò)部署更多的服務(wù)器來(lái)解決速度問(wèn)題。但是有一點(diǎn)是遞減的——在一定程度上,性能回歸比用戶增長(zhǎng)有更多的資源。從現(xiàn)在開始三到五年內(nèi),我們估計(jì)有10億用戶會(huì)加入到社區(qū)中,所以是時(shí)候開始考慮其他方案了。我們的第一個(gè)問(wèn)題是需要證明切換以后要有足夠高的回報(bào)。

  Instagram遷移到Python 的原因和好處

  Instagram用戶的增長(zhǎng)正在穩(wěn)步上升——但增速并不像服務(wù)器增長(zhǎng)那么快

  Lisa Guo:我們面臨著一個(gè)非常大的挑戰(zhàn):在服務(wù)器上增加網(wǎng)絡(luò)的I/O活動(dòng)。因此,我們需要一種更并行的方式來(lái)處理用戶請(qǐng)求。實(shí)際上,PHP和Python是Facebook最受支持的生態(tài)系統(tǒng),其他任何平臺(tái)既需要學(xué)習(xí)曲線,又需要對(duì)工程師進(jìn)行大量新知識(shí)的培訓(xùn)。

  所以我們做了一個(gè)公共投票活動(dòng):“與使用PHP進(jìn)行開發(fā)相比,F(xiàn)acebook更應(yīng)該使用哪一門語(yǔ)言進(jìn)行服務(wù)器端的開發(fā)?”

  Ding:如果我們看到了性能得到大幅度的提升的話,那么我們就會(huì)改變,但最終這些成果都沒(méi)有展示出來(lái)。

  所以這些數(shù)字并不是很有說(shuō)服力,我們已經(jīng)有了很多工具,對(duì)Python也投入了很多。使用python/django棧,我們的用戶量也達(dá)到了幾億,所以我們決定繼續(xù)使用Python。同樣重要的是,我們的工程師非常喜歡Python。這也是他們想要為我們工作的原因。

  這就是為什么團(tuán)隊(duì)選擇python 3的原因嗎?

  Ding:當(dāng)時(shí)的決定是,我們是否投入到一個(gè)相對(duì)成熟的版本,但是卻不會(huì)棄用Python的—或者選擇Python的下一個(gè)版本?因?yàn)橄乱粋€(gè)版本得到了越來(lái)越多的社區(qū)支持。這是有道理的,如果我們要在接下來(lái)的十年里繼續(xù)使用Python,我們應(yīng)該使用Python的最新版本。在我們決定使用Python 3之后不久,我們宣布在2020年以后將不再支持v2.7。

  性能速度不再是主要的問(wèn)題,取而代之的是何時(shí)能推向市場(chǎng)。 – Hui Ding

  Guo:使用Python 3有三個(gè)主要?jiǎng)訖C(jī):首先,Python不是那種傳統(tǒng)意義上的語(yǔ)言,所以當(dāng)我們開始編寫新代碼時(shí),開發(fā)過(guò)程中會(huì)出現(xiàn)很多沖突。所以對(duì)我們來(lái)說(shuō),一個(gè)很大的動(dòng)機(jī)就是Python宣布了從v3.5版本開始支持typing-我們的開發(fā)者對(duì)這個(gè)消息感到非常興奮。

  其次,網(wǎng)絡(luò)問(wèn)題日益成為瓶頸。

  第三,Python的速度并不快,但是每一個(gè)新版本的運(yùn)行速度都更快——v2.7,每個(gè)人都努力使它運(yùn)行的更快。隨著新版本的發(fā)布,我們會(huì)得到Python社區(qū)的支持,我們也會(huì)對(duì)社區(qū)做出貢獻(xiàn)。

  那遷移的過(guò)程是怎樣的?

  Guo:總的來(lái)說(shuō),花了大約十個(gè)月,都是處于不同的階段。

  首先,團(tuán)隊(duì)修改了大量的代碼。這花了2到3個(gè)月的時(shí)間,包括將不兼容的第三方包替換為支持Python 3的包,工作規(guī)則是“沒(méi)有Python 3,沒(méi)有新的包”,還刪除了未使用的包。

  然后進(jìn)行單元測(cè)試,花了兩個(gè)月的時(shí)間。然后,我們?cè)谒膫€(gè)多月的時(shí)間里進(jìn)行了緩慢但穩(wěn)定的新版本的推出。到2017年2月初,我們已經(jīng)完全運(yùn)行了Python 3。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?