Timehop為什么使用Go替代Rails

jopen 9年前發布 | 11K 次閱讀 Go語言

原文  http://www.infoq.com/cn/news/2015/03/timehop-go-replace-rails


Go語言從一面世就受到了很多開發者的關注,尤其它的并行機制使得開發者能夠非常容易地編寫多核和網絡應用。當前,越來越多的項目基于Go語言實現,如著名的 開源容器DockerPaaS平臺Deis 、Google的 Kubernetes 等。此外,還有眾多項目遷移到了Go技術棧,如 Dropbox從Python轉向了GoBowery從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具有強大的跨平臺編程能力、快速部署、并發原語的支持、標準化的集成測試框架、強大的標準庫、強大的開發者工作流工具等。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!