譯者注:作者在本文介紹了Dropbox公司是如何開啟探索使用Go語言之路的,在探索的過程中遇到了哪些問題,從結果來看證明了Go語言的可靠性和持久性。以下為譯文。

Tammy Butow(@tammybutow)是Dropbox基礎架構開發團隊的工程經理。Tammy管理著代碼工作流——包括了Dropbox內使用Go從編碼到上線的整個過程。她在2017年的GopherCon大會上談到了Dropbox的工程師是如何使用Go語言建立和運行大型服務。
注意:這篇文章記錄了大會上的演講內容。如果遺漏了什么,請在Twitter上告訴我(@sqs)。如果有錯誤,肯定是我描述的有問題;因為Tammy的演講太棒了!
Tammy引用了Rob Pike于2012年編寫的谷歌Go語言:專為軟件工程服務設計的編程語言》中的說法,解釋了Go語言為何能夠在Dropbox公司當中發揮重要作用:
“Go語言非常高效,支持擴展,而且還能提高生產。一些程序員覺得使用Go進行工作很有趣;另一些人則認為它缺乏想象力,甚至枯燥乏味。本文我們將解釋為什么這些對立的觀點是不成立的。Go語言旨在解決谷歌在軟件開發中所面臨的問題,導致了這門語言并不是一門突破性的研究語言,但對于大型軟件項目來說,它還是一個很的工具。”——Rob Pike,2012年
Dropbox的規模非常龐大:
因此,Dropbox對它們的系統、語言和工程師們有很高的要求。指導原則以及要求是:
現在Dropbox的大多數基礎架構都是用Go編寫的。具體包括如下:
使用Go開發的關鍵系統包括:
其中許多都是原本的非Go系統。
Tammy分享了一些關于Dropbox是如何一步步使用Go語言的故事。
Hack技術周成就Go速率限制器原型設計
在一年的Hack技術周之前,Dropbox的工程師們針對各項服務分別進行限速與限流。所以Dropbox的一位工程師決定為這些事情建立一個公共服務的實現,因此RAT誕生了。
初的RAT原型是在4天內完成的,并在第5天進行演示。短短幾周之后,RAT的大名在公司內部迅速擴散。另一位Dropbox工程師給Tammy的團隊發了電子郵件,看看他們時如何在Python項目中使用RAT。整合過程進展的很順利,采用率也逐漸在提升,RAT也變得越來越實用。現在,Dropbox的好幾個團隊都使用了RAT。
DBmanager
Dropbox公司擁有6000多個數據庫,這樣一個龐大的系統需要自動化和監控。在任意給定的時刻,數據庫都在進行復制、故障轉移以及通過副本進行主體升級等。
為了管理這些問題,Dropbox的工程師建立了DBmanager,它是一套Web UI,可以快速查看所有6000多個數據庫中發生的事情。它還將這些狀態信息發布到其它系統中。
Go語言升級版
有了成百上千的工程師,Dropbox小心翼翼地進行Go語言各主要版本的升級工作。Tammy表示升級過程沒有產生任何問題,過程非常順利!
下面來看一些有趣的事實:
每個Dropbox工程師都經歷了同樣嚴格的培訓過程,包括:
對于有經驗的工程師來說,這個過程需要一個星期左右的時間。
總的來說,Dropbox的Go應用之路非常成功。
一個關鍵的數據點是,Dropbox沒有努力將服務從另一種語言改寫為另一種語言,這表明人們對其相當滿意。(Tammy確實拋出了一份有趣的信息:Dropbox公司也在部分使用Rust,但其并不屬于Go的替代品。)
Tammy證實稱,Go語言大的問題在于處理競態條件。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。