天天看點

Timehop為什麼使用Go替代Rails

Go語言從一面世就受到了很多開發者的關注,尤其它的并行機制使得開發者能夠非常容易地編寫多核和網絡應用。目前,越來越多的項目基于Go語言實作,如著名的開源容器Docker、PaaS平台Deis、Google的Kubernetes等。此外,還有衆多項目遷移到了Go技術棧,如Dropbox從Python轉向了Go、Bowery從Node.js轉向了Go等。近日,社交應用Timehop(中文譯為時光機)的聯合創始人Benny Wong釋出了一篇題為《Timehop為什麼使用Go替代Rails》的文章,該文章對Timehop從Rails轉向Go的經曆進行了總結。從文章中得知,Timehop的技術棧于2013年經曆了從Rails到Go的轉變;至今,Timehop已經高效、穩定地運作了一年半時間,并且每天活躍使用者數達到了600萬,其中95%的請求響應時間從Rails時代的700毫秒減少到70毫秒。InfoQ編輯現對文章進行了整理和彙總以供讀者參考和學習,具體内容如下:

\\

為什麼需要技術棧的轉變

\\

Timehop自上線以來,其使用者規模不斷擴大和通路量不斷增長,基于Rails/Ruby的Timehop漸漸地出現了性能瓶頸,Timehop急需高性能、支援并行處理、真正多線程的平台/語言以解決遇到的性能瓶頸問題。

\\

為什麼選擇了Go

\\

Go能夠完全滿足Timehop對高并發和并行處理的需要,其具有以下主要特征:

\\

  • 性能方面:Go代碼被編譯為機器代碼,是以不存在虛拟機或解析器等帶來的額外開銷 \\
  • 靜态編寫方面:Go利用計算機來處理所有的編寫錯誤,進而減輕了自己的負擔\\
  • 并行處理方面:Go提供了語言級别的并發特性,這些特性使得Go的并行代碼具有較高的可讀性、條理性、安全性\\
  • 其他方面:Go還具有程式部署非常簡便、标準庫非常豐富等特征 \

Timehop的開發團隊還對選擇Go進行了一些讨論,如使用Go後會出現哪些意外、如何完成團隊的技術切換、Go有哪些不足、部署時有哪些關鍵的庫需要注意、如何進行托管和部署、能否使用Go建立API、Go程式在多态性和子產品化方面是如何處理的、Google對Go的支援情況等,這些讨論内容為大家将自己應用的技術棧轉向Go提供了參考依據。

\\ \\

此外,有關轉向Go技術棧的經驗總結,讀者還可以閱讀InfoQ去年釋出的一篇題為《Bowery為什麼從Node.js轉向Go》的文章,文章總結了基于雲技術的開發平台Bowery從Node.js轉向Go的原因,這些原因包括Go具有強大的跨平台程式設計能力、快速部署、并發原語的支援、标準化的內建測試架構、強大的标準庫、強大的開發者工作流工具等。

感謝郭蕾對本文的審校。

\

給InfoQ中文站投稿或者參與内容翻譯工作,請郵件至[email protected]。也歡迎大家通過新浪微網誌(@InfoQ)或者騰訊微網誌(@InfoQ)關注我們,并與我們的編輯和其他讀者朋友交流。

繼續閱讀