推特背后的開源技術(shù)
譯文
【51CTO快譯】要是沒有開源技術(shù),推特(Twitter)也就不會(huì)存在。大家發(fā)送和收到的每一條推特消息在計(jì)算機(jī)和移動(dòng)設(shè)備之間傳輸過程中都會(huì)涉及開源軟件。我們很好奇,想知道推特在多大程度上使用開源技術(shù)。除此之外,我們想發(fā)現(xiàn)開源技術(shù)對推特公司的文化帶來了怎樣的影響。
為此,我們請推特的開源技術(shù)經(jīng)理Chris Aniszczyk講述這家公司的開源故事。Aniszczyk將于本月8月29日至31日在加利福尼亞州圣迭戈召開的LinuxCon大會(huì)上發(fā)表主題演講。他探討的主題就是:推特背后的開源技術(shù)。
瞧一瞧Aniszczyk對于開源以及推特的開源文化有什么要說的。
為大家預(yù)先介紹一下你將在LinuxCon上發(fā)表的主題演講《推特背后的開源技術(shù)》。
乍一看,推特是一項(xiàng)簡單的實(shí)時(shí)服務(wù),每次可發(fā)送的信息量是140個(gè)字符,名為推特消息(Tweet)。但更仔細(xì)地分析一下,就會(huì)發(fā)現(xiàn)運(yùn)行這項(xiàng)服務(wù)面臨的復(fù)雜性:每天發(fā)送出去的推特消息超過4億條。鑒于量這么大,你得處理好一些值得關(guān)注的實(shí)時(shí)技術(shù)問題。在主題演講中,我將深入介紹我們是如何應(yīng)對這些挑戰(zhàn)的,我們?yōu)槭裁雌珢坶_源軟件來應(yīng)對挑戰(zhàn)。演講主題將圍繞跟蹤分析一條推特消息從我們后端到前端的整個(gè)過程。最后,我預(yù)計(jì)聽眾最后會(huì)比較清楚地認(rèn)識開源技術(shù),以及當(dāng)一條平常的推特消息出現(xiàn)在時(shí)間表時(shí),幕后到底發(fā)生了什么。
推特后臺到底在多大程度上使用開源軟件?
我們使用大量的開源軟件。在我看來,這是不二的選擇,因?yàn)殚_源軟件讓我們得以定制和改動(dòng)代碼,以滿足我們迅速變化的技術(shù)需要,因?yàn)槲覀兊姆?wù)和社區(qū)在不斷發(fā)展。推特規(guī)劃新的技術(shù)項(xiàng)目時(shí),我們總是確保對照開源解決方案的功能來衡量我們的需求,只要開源軟件合適,我們就偏愛使用開源軟件。正是由于這種方法,推特現(xiàn)在大部分建立在開源軟件上;因而,開源之道如今已廣泛融入到我們的文化中。除此之外,在開源社區(qū)里面有一種積極的教與學(xué)周期,我們受益匪淺。我們還把自己的大部分代碼拿到GitHub(http://twitter.github.com/)上共享。
下面這幾個(gè)具體的例子表明了我們所使用的開源軟件:
- MySQL大量地用于推特消息的主存儲(chǔ);我們利用開源技術(shù)開發(fā)了自己的MySQL分支版,與上游社區(qū)進(jìn)行了合作。
- 我們的基礎(chǔ)設(shè)施里面使用了Cassandra、Hadoop、Lucene、Pig及眾多Apache項(xiàng)目,以驅(qū)動(dòng)分析和搜索等服務(wù)。我們回過頭來也為這些項(xiàng)目作貢獻(xiàn),是Apache軟件基金會(huì)的支持者之一。
- Memcached大量地用于我們的緩存基礎(chǔ)設(shè)施,以便擴(kuò)展我們越來越龐大的流量;我們最近開放了Twemcache的源代碼,它的設(shè)計(jì)靈感主要來自Memcached代碼庫。
除此之外,我們還開發(fā)了多種多樣的開源軟件:
- Iago是一款負(fù)載生成器,我們開發(fā)它的目的是,在服務(wù)遇到生產(chǎn)流量之前,幫助自己先測試一下服務(wù)。Iago為我們提供了專門適合推特環(huán)境的功能,還提供了測試服務(wù)所需要的那種精準(zhǔn)程度。
- Zipkin是一款分布式跟蹤分析系統(tǒng),我們開發(fā)它的目的是,幫助自己為參與管理推特API請求的所有不同服務(wù)收集時(shí)間數(shù)據(jù)。
- Scalding是一個(gè)Scala庫;有了它,只要充分利用與Scala和Java虛擬機(jī)(JVM)集成的內(nèi)置功能,就很容易用Hadoop來編寫MapReduce作業(yè)。
我還想著重指出Apache Mesos,它讓我們更容易構(gòu)建分布式應(yīng)用程序以及共享數(shù)據(jù)中心的資源。我們在推特內(nèi)部將它用于處理各項(xiàng)任務(wù):從執(zhí)行Hadoop端的分析作業(yè),到運(yùn)行Rails應(yīng)用程序,不一而足。它其實(shí)是推特內(nèi)部起到重要支撐作用的基礎(chǔ)技術(shù)之一。你可以參閱這份演示文稿(https://speakerdeck.com/u/benh/p/apache-mesos-twitter-open-source-open-house),了解更多信息。
開源軟件在推特怎樣運(yùn)行的?推特的企業(yè)文化是不是受到了開源的影響?
你只要在開源社區(qū)待過一陣子,就清楚地認(rèn)識到:開放的信息交互可以給世界帶來積極的影響。在推特,我們每天都謹(jǐn)記這條原則;每個(gè)員工都有發(fā)言權(quán),都有創(chuàng)新的機(jī)會(huì)。我們每周都會(huì)召開全體人員出席的會(huì)議,討論很熱烈;大家積極提出和回答棘手的問題,因?yàn)槲覀儚睦锏酵舛笺∈匾环N倡導(dǎo)開放、彼此信任的文化。此外,我們還在大概一年前設(shè)立了開源辦公室,旨在支持對我們來說很重要的眾多開源組織。我們感激開源社區(qū)作出的貢獻(xiàn),希望與對方保持一種健康的、互利的關(guān)系。
就技術(shù)文化而言,推特是一家實(shí)時(shí)、事件驅(qū)動(dòng)的服務(wù)公司;我們在改變自己的技術(shù)文化,希望變得實(shí)時(shí)、事件驅(qū)動(dòng)型。我們想要一種靈活的、積極反應(yīng)的、快節(jié)奏的技術(shù)文化,能夠在我們整個(gè)公司發(fā)展壯大的同時(shí),一并發(fā)展。現(xiàn)在每天發(fā)送的推特消息超過4億條,可以說有好多推特消息要送達(dá)。我們還每個(gè)季度召開一次攻關(guān)周活動(dòng)(hackweek):員工們花一周的時(shí)間來從事他們真正滿懷熱情,但是又未必與日常職責(zé)有關(guān)的各個(gè)項(xiàng)目。有時(shí)候,攻關(guān)周還會(huì)有瘋狂的視頻(http://www.youtube.com/watch?v=vccZkELgEsU)。
你見過有人使用推特的最有意思的方式是啥?
這樣的方式實(shí)在太多了,于是我們?yōu)榇嗽O(shè)立了一個(gè)網(wǎng)站,專門羅列一些最有意思的應(yīng)用,名為推特故事(http://stories.twitter.com/)。我個(gè)人最喜歡的一則故事其主人公是Chris Strouth,他發(fā)了一條推特消息"天啊,我要一只腎",后來他真收到了一只腎。說到更及時(shí)地向外發(fā)布消息,馬尼拉前不久遭到了嚴(yán)重水災(zāi),菲律賓人把推特當(dāng)作了救生工具。能夠供職于一家所提供的服務(wù)給全世界帶來積極影響的公司,我深感榮幸。
你在日常生活中如何運(yùn)用開源之道?
你可能不知道,我在去年幫助設(shè)立了推特的開源辦公室(@TwitterOSS),我的日常工作就是打理這家辦公室。工作量很大,但我覺得自己很幸運(yùn),有機(jī)會(huì)通過向大家傳授開源之道,幫助打造推特的技術(shù)文化。閑暇之余,我喜歡把自己搗鼓的軟件拿到GitHub上分享,這個(gè)網(wǎng)站實(shí)在太棒了;我覺得,它為開源社區(qū)做了杰出貢獻(xiàn)。
之前,我主要供職于Eclipse基金會(huì),負(fù)責(zé)一個(gè)插件開發(fā)項(xiàng)目。現(xiàn)在我仍是Eclipse這家代表1000多個(gè)成員的開源組織的董事會(huì)成員,偶爾會(huì)從事EGit和JGit項(xiàng)目,它們?yōu)镋clipse社區(qū)提供了對Git的支持。
最后,開源技術(shù)在過去的十年取得的成就令人吃驚;我很高興自己是開源社區(qū)的一員。仍有許多的工作要做;如果你有興趣幫助實(shí)現(xiàn)推特的開源使命,記得我們一直在招人哦。
原文鏈接:http://opensource.com/business/12/8/open-source-technology-behind-twitter