【翻譯】Go 在 Heroku

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

最近看到許多朋友都在問類似的問題:Go 能做什嗎?Go 有實際應用嗎?敢不敢在實際項目中使用 Go 呢……

正好,golang 的部落格刊登了 Heroku 的兩個系統工程師關於 Go 語言在他們的分布式系統中的應用的文章。

大家還記得 Doozer 嗎?對,我之前有過翻譯高速資料同步伺服器——Doozer。貌似就是這群優秀的工程師搞出來的傑作。他們作為 go 語言應用的先行者,的確值得我們關注他們的工作,學習他們的經驗,並向這群優秀的工程師致敬!

原文在此:http://blog.golang.org/2011/04/go-at-heroku.html
——————————-用於致敬的翻譯分割線——————————-
本周的部落格內容是由 Heroku 的系統工程師 Keith Rarick 和 Blake Mizerany 撰寫的。用他們自己的話說,他們“吃、喝、睡在分布式系統上”。這裡討論了一些他們應用 Go 的經驗。

構建分布式系統的一個巨大的問題是物理伺服器之間的協作。每個伺服器需要知道關於系統整體上的各種情況。這些關鍵資料包括鎖、配置資料等等,而即便是在資料存放區異常的情況下,這些也必須是一致並且可用的。因此,需要一個有著絕對一致保障的資料存放區。對於這個問題的解決方案是 Doozer,一個用 Go 編寫的、新的、一致性的、高可用的資料存放區。

Doozer 的核心是 Paxos,一個協議族用於解決不可靠網路中的不可靠節點的一致性問題。Paxos 的本質是運行一個容錯系統,眾所周知這是非常難以實現的。即便是在網上有的例子實現,儘管為了教學目的進行了簡化,也都還是複雜而且難以理解的。已有的生產系統的名聲就更糟了。

幸運的是,Go 原生的並發機制使得這個任務更加簡單。Paxos 定義在通過訊息傳遞通訊的,無依賴關係的一組並發進程上。在 Doozer 中,這些進程是由 goroutine 實現的,而通訊是由 channel 來完成。同樣的,和記憶體回收機制改進了 malloc 和 free一樣,我們發現 goroutine 和 channel 改進了基於鎖機制的並發。這些工具讓我們避免了複雜的贅述,並且讓腦袋一直保持對核心問題的關注。我們對用如此之少的程式碼數,就完成了一貫被認為是難以實現的內容感到相當驚訝。

Go 的標準包是在 Doozer 上的另一個巨大成功。Go 團隊對什麼能進入標準包是相當實用的態度,我們很快發現 websocket 包是非常實用的。當我們工作於資料存放區時,我們需要一些簡單的辦法來觀察並且將活動可視化。使用 websocket 包,Keith 就可以在家進行騎車訓練的時候增加一個 web 介面,而無須依賴任何額外的東西。這真正見證了用 Go 來粘合系統和應用程式有多麼好。

我們最喜歡的生產力的提高來自於 Go 的代碼格式化工具:gofmt。我們從未對哪裡寫大括弧、tab 還是空格,或者是否應當對齊賦值符號而爭論。我們全部認同了 gofmt 預設的輸出。

開發 Doozer 之簡單程度是相當令人滿意的。Go 的靜態串連意味著 Doozer 無序額外的依賴;它只有一個檔案複製到任何機器,然後立刻可以運行並加入運行 Doozer 的叢集。

最終,Go 簡潔的設計哲學與我們對軟體工程的認識令人發狂的一致。就像 Go 團隊一樣,我們對什麼特性可以進入 Doozer,也是從實用的角度出發。我們反覆推敲,期望修改已有的功能而不是增加一個新的功能。在這點上來看,Go 與 Doozer 相當的匹配。

我們對於在將來的項目中使用 Go 已經有了一些想法。Doozer 對於一個大系統來說只是剛剛開始。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.