天天看點

推特背後的開源技術

【51CTO快譯】要是沒有開源技術,推特(Twitter)也就不會存在。大家發送和收到的每一條推特消息在計算機和移動裝置之間傳輸過程中都會涉及開源軟體。我們很好奇,想知道推特在多大程度上使用開源技術。除此之外,我們想發現開源技術對推特公司的文化帶來了怎樣的影響。

為此,我們請推特的開源技術經理Chris Aniszczyk講述這家公司的開源故事。Aniszczyk将于本月8月29日至31日在加利福尼亞州聖疊戈召開的LinuxCon大會上發表主題演講。他探讨的主題就是:推特背後的開源技術。

推特背後的開源技術

瞧一瞧Aniszczyk對于開源以及推特的開源文化有什麼要說的。

為大家預先介紹一下你将在LinuxCon上發表的主題演講《推特背後的開源技術》。

乍一看,推特是一項簡單的實時服務,每次可發送的資訊量是140個字元,名為推特消息(Tweet)。但更仔細地分析一下,就會發現運作這項服務面臨的複雜性:每天發送出去的推特消息超過4億條。鑒于量這麼大,你得處理好一些值得關注的實時技術問題。在主題演講中,我将深入介紹我們是如何應對這些挑戰的,我們為什麼偏愛開源軟體來應對挑戰。演講主題将圍繞跟蹤分析一條推特消息從我們後端到前端的整個過程。最後,我預計聽衆最後會比較清楚地認識開源技術,以及當一條平常的推特消息出現在時間表時,幕後到底發生了什麼。

推特背景到底在多大程度上使用開源軟體?

我們使用大量的開源軟體。在我看來,這是不二的選擇,因為開源軟體讓我們得以定制和改動代碼,以滿足我們迅速變化的技術需要,因為我們的服務和社群在不斷發展。推特規劃新的技術項目時,我們總是確定對照開源解決方案的功能來衡量我們的需求,隻要開源軟體合适,我們就偏愛使用開源軟體。正是由于這種方法,推特現在大部分建立在開源軟體上;因而,開源之道如今已廣泛融入到我們的文化中。除此之外,在開源社群裡面有一種積極的教與學周期,我們受益匪淺。我們還把自己的大部分代碼拿到GitHub(http://twitter.github.com/)上共享。

下面這幾個具體的例子表明了我們所使用的開源軟體:

  • MySQL大量地用于推特消息的主存儲;我們利用開源技術開發了自己的MySQL分支版,與上遊社群進行了合作。
  • 我們的基礎設施裡面使用了Cassandra、Hadoop、Lucene、Pig及衆多Apache項目,以驅動分析和搜尋等服務。我們回過頭來也為這些項目作貢獻,是Apache軟體基金會的支援者之一。
  • Memcached大量地用于我們的緩存基礎設施,以便擴充我們越來越龐大的流量;我們最近開放了Twemcache的源代碼,它的設計靈感主要來自Memcached代碼庫。

  除此之外,我們還開發了多種多樣的開源軟體:

  • Iago是一款負載生成器,我們開發它的目的是,在服務遇到生産流量之前,幫助自己先測試一下服務。Iago為我們提供了專門适合推特環境的功能,還提供了測試服務所需要的那種精準程度。
  • Zipkin是一款分布式跟蹤分析系統,我們開發它的目的是,幫助自己為參與管理推特API請求的所有不同服務收集時間資料。
  • Scalding是一個Scala庫;有了它,隻要充分利用與Scala和Java虛拟機(JVM)內建的内置功能,就很容易用Hadoop來編寫MapReduce作業。

我還想着重指出Apache Mesos,它讓我們更容易建構分布式應用程式以及共享資料中心的資源。我們在推特内部将它用于處理各項任務:從執行Hadoop端的分析作業,到運作Rails應用程式,不一而足。它其實是推特内部起到重要支撐作用的基礎技術之一。你可以參閱這份示範文稿(https://speakerdeck.com/u/benh/p/apache-mesos-twitter-open-source-open-house),了解更多資訊。

開源軟體在推特怎樣運作的?推特的企業文化是不是受到了開源的影響?

你隻要在開源社群待過一陣子,就清楚地認識到:開放的資訊互動可以給世界帶來積極的影響。在推特,我們每天都謹記這條原則;每個員工都有發言權,都有創新的機會。我們每周都會召開全體人員出席的會議,讨論很熱烈;大家積極提出和回答棘手的問題,因為我們從裡到外都恪守一種倡導開放、彼此信任的文化。此外,我們還在大概一年前設立了開源辦公室,旨在支援對我們來說很重要的衆多開源組織。我們感激開源社群作出的貢獻,希望與對方保持一種健康的、互利的關系。

就技術文化而言,推特是一家實時、事件驅動的服務公司;我們在改變自己的技術文化,希望變得實時、事件驅動型。我們想要一種靈活的、積極反應的、快節奏的技術文化,能夠在我們整個公司發展壯大的同時,一并發展。現在每天發送的推特消息超過4億條,可以說有好多推特消息要送達。我們還每個季度召開一次攻關周活動(hackweek):員工們花一周的時間來從事他們真正滿懷熱情,但是又未必與日常職責有關的各個項目。有時候,攻關周還會有瘋狂的視訊(http://www.youtube.com/watch?v=vccZkELgEsU)。

你見過有人使用推特的最有意思的方式是啥?

這樣的方式實在太多了,于是我們為此設立了一個網站,專門羅列一些最有意思的應用,名為推特故事(http://stories.twitter.com/)。我個人最喜歡的一則故事其主人公是Chris Strouth,他發了一條推特消息"天啊,我要一隻腎",後來他真收到了一隻腎。說到更及時地向外釋出消息,馬尼拉前不久遭到了嚴重水災,菲律賓人把推特當作了救生工具。能夠供職于一家所提供的服務給全世界帶來積極影響的公司,我深感榮幸。

你在日常生活中如何運用開源之道?

你可能不知道,我在去年幫助設立了推特的開源辦公室(@TwitterOSS),我的日常工作就是打理這家辦公室。工作量很大,但我覺得自己很幸運,有機會通過向大家傳授開源之道,幫助打造推特的技術文化。閑暇之餘,我喜歡把自己搗鼓的軟體拿到GitHub上分享,這個網站實在太棒了;我覺得,它為開源社群做了傑出貢獻。

之前,我主要供職于Eclipse基金會,負責一個插件開發項目。現在我仍是Eclipse這家代表1000多個成員的開源組織的董事會成員,偶爾會從事EGit和JGit項目,它們為Eclipse社群提供了對Git的支援。

最後,開源技術在過去的十年取得的成就令人吃驚;我很高興自己是開源社群的一員。仍有許多的工作要做;如果你有興趣幫助實作推特的開源使命,記得我們一直在招人哦。

原文連結:http://opensource.com/business/12/8/open-source-technology-behind-twitter

【編輯推薦】

  1. 開源技術軟體要走的路還很長
  2. 天涯運維:如何給企業選擇适合的開源技術構架
  3. 開源技術如何應對最大威脅?
  4. 倫敦奧運會 開源技術也算我一個

【責任編輯: 黃丹 TEL:(010)68476606】