Go Cloud項目開源發布:Go語言將成為雲端應用開發的首選語言?
作者 | The Go Blog
編輯 | 張嬋 - 高效開發運維公眾號
Go 語言團隊發布了一個新的開源項目 Go Cloud,用於開發具有可移植性的雲端應用程序。
7 月 24 日,Go 語言團隊發布了一個新的開源項目 Go Cloud。Go Cloud 是一個可在開放雲平台上進行開發的庫和工具集,旨在讓 Go 語言成為開發構建可移植雲端應用程序的首選語言。
1
為什麼瞄準具有可移植性的雲端編程?為什麼是現在?
谷歌的 Go 語言是當今發展最快的編程語言之一,在全球擁有約 100 萬的活躍開發人員。Go 語言為包括 Kubernetes,Istio 和 Docker 在內的許多關鍵雲基礎架構項目提供支持,並憑藉其高效性,內置並發性和低延遲受到很多雲端開發人員的喜愛。
Go 語言團隊從合作夥伴當中了解到,很多公司都對跨雲的可遷移性有共同的需求,他們想要在多雲或混合雲環境中部署健壯的應用程序,並希望無需對代碼進行大量更改就能在不同的雲服務之間遷移工作負載。
為實現這一目標,一些團隊嘗試將應用程序與特定雲服務的 API 分離,以生成更簡單,更可移植的代碼。然而,功能的快速迭代需求必將犧牲長期的可移植性。因此,雲中運行的大多數 Go 應用程序都與其初始雲服務緊密耦合。
現在,團隊可以使用 Go Cloud(一組開放的通用雲端 API)編寫更簡單,可移植的雲端應用程序。Go Cloud 使團隊能夠實現其功能開發目標,同時能保持在多雲和混合雲架構中遷移的靈活性。
2
Go Cloud 是什麼
Go 語言團隊識別了雲端應用程序使用的通用服務,並創建了可跨雲進行應用的通用 API。Go Cloud 採用 blob 存儲,可訪問 MySQL 資料庫,可進行運行時配置,還有一個具有內置日誌記錄,跟蹤和運行狀況檢查的 HTTP 伺服器。Go Cloud 目前提供對 Google Cloud Platform(GCP)和 Amazon Web Services(AWS)的支持。後期 Go 團隊計劃與其他雲服務和 Go 語言社區合作,儘快為其他雲廠商添加支持。
Go Cloud 旨在為各種雲中最常用的服務提供中立於廠商的 API,這樣可以輕鬆地將 Go 應用程序進行跨雲遷移。Go Cloud 還為其他編寫跨雲的庫的開源項目奠定了基礎。來自社區各級各類開發人員的反饋將決定 Go Cloud 中未來 API 的優先順序。
3
如何使用 Go Cloud
Go Cloud 的核心是一組進行便攜雲端編程的通用 API 集合。 我們來看一個使用 blob 存儲的例子。你可以使用 * blob.Bucket 這個通用類型將文件從本地磁碟複製到雲服務中。 首先使用附帶的 s3blob 包打開一個 S3 bucket:
一旦程序有了* blob.Bucket,就可以創建一個可以實現 io.Writer 的 blob.Writer。 然後這個程序程序可以使用 * blob.Writer 將數據寫入 bucket,確保 Close 不會報告錯誤。
注意:使用 Bbucket 的邏輯不適用於AWS S3。通過更改用於打開 * blob.Bucket 的功能,Go Cloud 可以交換雲端存儲。這樣應用程序可以使用 gcsblob.OpenBucket 構建一個 * blob.Bucket,不更改複製文件的代碼就能使用 Google Cloud Storage:
雖然訪問不同雲服務中的 bucket 需要不同的步驟,但應用程序使用的結果類型是一樣的:* blob.Bucket。這將應用程序代碼與特定雲服務的代碼隔離開來。為了提高與現有 Go 庫的互操作性,Go Cloud 利用了 io.Writer,io.Reader 和 * sql.DB 等已建立的介面。
4
如何開始
官方教程地址:
https://github.com/google/go-cloud/tree/master/samples/tutorial
可按照此教程進行操作並嘗試自行構建應用程序。如果你已經在使用 AWS 或 GCP,可以嘗試遷移現有的應用程序的一部分來嘗試使用 Go Cloud。如果你使用的是其他雲服務或本地服務,則可以通過實現驅動程序介面(如 driver.Bucket)來擴展 Go Cloud 進行支持。
Go Cloud 開源地址:
https://github.com/google/go-cloud


※你會在什麼時候學習或放棄一門編程語言?
※AI預測的世界盃冠軍已出爐,你能做到嗎?
TAG:InfoQ |