促進Golang雲開發谷歌推出Go Cloud

2021-01-09 蟲蟲搜奇

在程式語言界,谷歌的Golang語言可以說是當下最流行的語言之一,據官方數據全球約有100萬活躍碼農在使用Golang開發。同時雲計算也是目前技術發展最快的一個領域,並且改變了我們的基礎IT架構:大量的網站、應用開始遷移到雲上。為了應對這種趨勢,促進Golang在雲計算領域的繁榮(當然在容器領域 Golang開發的docker是一枝獨秀的),谷歌最近推出了Go Cloud(github地址: google/go-cloud),包括開源庫和一套工具,可以讓每個碼農更輕鬆地使用Golang構建雲應用程式。

功能和特性

Go Cloud為開發人員提供了一組用於訪問對象存儲(比如AWS S3),MySQL資料庫和運行時配置的開放式通用雲API。還提供內置了一個支持日誌記錄、跟蹤和運行狀況檢查的HTTP伺服器。截止目前,還主要提供對亞馬遜AWS和Google Cloud Platform支持。谷歌計劃,未來會添加更多的功能以及支持更多雲廠商,谷歌也歡迎各雲廠商根據現有的類庫擴展建立自己適配開發支持。

安裝部署

安裝部署很簡單:

go get github.com/google/go-cloud

go get github.com/google/go-cloud/wire/cmd/wire

實例:

連結到GCP並認證:

package main

import (

"context"

"flag"

"log"

"github.com/google/go-cloud/blob"

"github.com/google/go-cloud/blob/gcsblob"

"github.com/google/go-cloud/gcp"

)

func main() {

ctx := context.Background()

var (

b *blob.Bucket

err error

)

switch *cloud {

case "gcp":

b, err = setupGCP(ctx, *bucketName)

case "aws":

b, err = setupAWS(ctx, *bucketName)

default:

log.Fatalf("Failed to recognize cloud. Want gcp or aws, got: %s", *cloud)

}

if err != nil {

log.Fatalf("Failed to setup bucket: %s", err)

}

}

func setupGCP(ctx context.Context, bucket string) (*blob.Bucket, error) {

creds, err := gcp.DefaultCredentials(ctx)

if err != nil {

return nil, err

}

c, err := gcp.NewHTTPClient(gcp.DefaultTransport(), gcp.CredentialsTokenSource(creds))

if err != nil {

return nil, err

}

// The bucket name must be globally unique.

return gcsblob.NewBucket(ctx, bucket, c)

}

連結到AWS 並認證:

package main

import (

// ...

// listing only new import statements

"github.com/aws/aws-sdk-go/aws"

"github.com/aws/aws-sdk-go/aws/credentials"

"github.com/aws/aws-sdk-go/aws/session"

"github.com/google/go-cloud/blob/s3blob"

)

// ... main

func setupAWS(ctx context.Context, bucket string) (*blob.Bucket, error) {

c := &aws.Config{

// 可以直接指定ID或者使用AWS_REGION.

Region: aws.String("us-east-2"),

// credentials.NewEnvCredentials 需要兩個變量參數:

// 1. AWS_ACCESS_KEY_ID, 訪問KeyID

// 2. AWS_SECRET_ACCESS_KEY. 密鑰訪問KEY

Credentials: credentials.NewEnvCredentials(),

}

s := session.Must(session.NewSession(c))

return s3blob.NewBucket(ctx, s, bucket)

}

寫bucket存儲

package main

// No new imports.

func main() {

// ...

w, err := b.NewWriter(ctx, file, nil)

if err != nil {

log.Fatalf("Failed to obtain writer: %s", err)

}

_, err = w.Write(data)

if err != nil {

log.Fatalf("Failed to write to bucket: %s", err)

}

if err := w.Close(); err != nil {

log.Fatalf("Failed to close: %s", err)

}

}

更多例子請參考官方文檔。

展望

谷歌通過推出開源的Go Cloud雲基礎開發框架希望幫助開發人員構建可以在任何支持的雲上運行的應用程式,一次開發,各雲皆行!(Write once, run on any cloud ),希望這個框架能夠減輕開發人員的開發工作,避開各家雲廠商繁瑣,雷點四伏的APK和API(尤其是國內各家雲,連文檔都不完善)。

歡迎關注蟲蟲,給蟲蟲點讚,蟲蟲會持續給大家普及相關知識和信息。

相關焦點

  • 快速轉型golang(go語言)web開發 06-Go核心概念GOPROXY「重要」
    因為國內鏡像源既快又穩定,同樣在go中,這個GOPROXY起到類似作用,也是幫助我們更快更穩定地下載第三方依賴,但是跟其它技術棧不同的是,在其它技術棧中,就算不配置國內鏡像源,我們直接連國外的鏡像源,也一樣可以成功下載依賴(當然也有失敗的情況,但是多試幾次,總會下載成功的但是在go中,如果你沒有使用科學上網,並且沒有正確配置GOPROXY,有些第三方依賴你是
  • Go語言正確快速安裝開發工具
    今天都幹了些啥今天下午都在安裝Go語言的東西,因為自己打算使用VsCode作為Go的開發主力。但是我VsCode的代碼提示速度太慢了。要隔一秒鐘才會出來提示。。實在太慢了。就在下載Go語言的工具,但是又被牆了。只能在網上亂搜。剛搗鼓好,做個簡單的記錄。
  • 為什麼golang語言會變得越來越流行
    作為一個開發者,如果你細心觀察,就會發現越來越多的公司開始使用go語言進行業務的開發。從知乎到b站,很多公司都把業務全面轉向了go語言。那麼為什麼這麼多公司選擇了go語言,為什麼這麼多開發者選擇了go語言,golang變得越來越流行的原因到底是什麼?
  • 考慮一下Go (Golang)吧
    圖源:Unsplash為什麼開發Go語言目的Go語言由谷歌開發,目的是使多進程開發更加高效和安全對谷歌來說,該語言可解決其當前面臨的編譯時間過長和當今已在生產中取得普遍應用的大規模數據處理問題。谷歌希望開發出一種注重於可伸縮性、可讀性和並發性的語言,而其他語言無法滿足這些要求,因此誕生了Go語言。谷歌開發人員從現有的語言中提取了最簡單明了的概念,並將這些概念改進和組合,最終形成了Go。
  • Go技術日報(2021-01-23)
    /go/godailyGOCN 每日新聞--2021-01-23 1.k8s-client-go 源碼剖析 (三) [2]2.圖書《Go 語言標準庫》更新了:io/fs 包講解3.Go 進階 52:開發擴展 SSH 的使用領域和功能
  • AI足球大數據爬蟲分析(golang)
    程序採用golang開發,項目模塊化結構清晰完整,非常容易入手並進行二次開發分析. AI球探為程序全自動處理,全程無人為參與幹預足球分析預測程序. 避免了人為分析的主觀性及不穩定因素. 同時也是一個學習golang的一個入門級項目. 項目來由熱衷於足球多年,之餘也會去研究一下,時間久了,都會有自己的心得.
  • 「under」是在下面,「cloud」是雲,那「under a cloud」是啥?
    於是我輕輕的走到了那片雲的下面,因為我要引出今天的詞組under a cloud。「under」是在下面,「cloud」是雲,那「under a cloud」是啥?1. Under a cloud「under a cloud」是「在雲下面」嗎?你猜是好事還是壞事呢?
  • 一個Julia開發人員重新回歸Go | Gopher Daily (2021.02.27) ʕ◔ϖ◔ʔ
    Go技術新聞Go觀察:一個julia開發人員重新回歸go - https://erik-engheim.medium.com/golang-observations-6421f760498b基於kqueue編寫一個簡單的tcp server - https://dev.to/frosnerd/writing-a-simple-tcp-server-using-kqueue-cah快速構建Solid
  • cloud是雲,nine是九,那be on cloud nine是什麼意思?
    我們知道cloud有「雲,雲朵」的意思,nine是數字九,那be on cloud nine是什麼意思呢?be on cloud nine的意思是「to be extremely happy and excited」,即「異常興奮,樂不可支,高興極了」。
  • Mix PHP V2.2 發布,與 go-micro 深度集成的 PHP 微服務開發框架
    本次版本更新主要是增加微服務開發相關的組件與開發骨架,從上一次 Mix V2.1 非常激進的切換為單線程協程後 [為何從 Reactor+Manager+Worker 多進程改為單線程協程],Mix V2.2 在微服務方面也非常激進的選擇了和其他 Swoole 框架截然不同的路徑:與 go-micro 微服務生態深度集成,借用 golang 微服務生態的治理工具
  • 辭舊迎新,谷歌正式關停Cloud Print
    本周,谷歌就要正式關停雲端列印服務Cloud Print。 從谷歌支持頁面上關於這項服務的更新顯示,自2021年1月1日起,用戶將無法再使用谷歌Cloud Print(基於雲的列印解決方案)服務。
  • Google Cloud推出Game Servers遊戲託管雲後端服務
    據悉,Game Servers 依託於谷歌和育碧於 2018 年首次宣布的 Agones 開源遊戲伺服器、以及 Kubernetes 容器編排平臺之上。通過在 Game Servers 之外使用 Agones 的開發人員、以及向 Game Servers API 註冊這些伺服器,谷歌還致力於讓他們駕輕就熟地擁抱這一生態。Van Woudenberg 指出:實際上,幾乎每款遊戲都需要藉助某種雲後端來運行。比如在多人遊戲模式下,雲後端需要負責比賽安排、或持久的數據統計。
  • Facebook宣布推出免費雲遊戲服務 與谷歌、亞馬遜等展開競爭
    【TechWeb】10月27日消息,據國外媒體報導,當地時間周一,Facebook宣布推出自己的雲遊戲平臺,與谷歌、亞馬遜和微軟等展開競爭。Facebook表示,將首先在美國推出這項服務,稍後將在英國推出。
  • Go 擺脫了 C,又惹上了 Java?
    talks.golang.org 前幾天放出了 PPT《Go in Go》和 《The State of Go》講解最近 Go 的開發動態和成果:隨著 Go 1.5 版本的開發,
  • 騰訊雲與新加坡ADBC將聯合開發解決方案
    近日,據外媒報導,騰訊雲與新加坡亞洲數字銀行公司籤署了一份諒解備忘錄,雙方將共同開發基於雲的銀行技術。本文屬於原創文章,如若轉載,請註明來源:騰訊雲與新加坡ADBC將聯合開發解決方案http://cloud.zol.com.cn/748/7481216.html http:/
  • Sabre與谷歌共同開發行業首創的旅行人工智慧技術
    我們很榮幸能夠與谷歌合作開發技術,以尋求重新定義旅行公司的業務方式,並將分析得出的各種見解轉化為可重複、可拓展的運營方針。Sabre旅行人工智慧的開發標誌著我們技術轉型的一個裡程碑,也是實現2025年個性化零售願景的重要一步。通過創建Sabre旅行人工智慧,我們將基於雲原生的數據驅動技術來重建平臺,該技術可以集成到Sabre現有的和未來的產品之中。
  • 谷歌Stadia 趕上雲遊戲的「黃金年代」?
    圖片來源@視覺中國谷歌推出的 Stadia 重新點燃了網際網路對於雲遊戲服務的希望,而上一個受到這麼多關注的雲遊戲服務商 OnLive 經歷了幾年波折已被索尼收購。谷歌在 E3 中公開了更多信息,比如將在今年於美國與歐洲大部分地區推出,以及收費模式:圖片來源於谷歌官網Stadia 與所謂「 遊戲界Netflix」有很大區別,它並非Netflix那種訂閱後即可享用龐大免費內容的收費模式,而是更像是 Steam ,在其中你仍然需要單獨購買遊戲內容;而對於雲遊戲這個服務,收費模式分為了免費版與Pro 版:免費版可以免費享受1080P
  • 谷歌宣布Cloud Firestore文檔資料庫新進展 覆蓋10個新區域
    谷歌今天宣布了 Cloud Firestore 文檔資料庫的最新拓展,作為一款無伺服器(serverless)型 NoSQL 資料庫,其主要面向移動、Web 和物聯網應用。普遍推出之後,其引入了一些新功能,並且覆蓋了 10 個新區域。據悉,新版為開發人員提供了在單個區域中運行資料庫的選項。
  • Go技術日報(2021-01-08)
    8.influxdb 的免費網絡監控模板 [13]9.油管視頻:當 pod 被刪除時發生了什麼 [14]10.Serverless 在 SaaS 領域的最佳實踐11.日產汽車源碼洩露[15]12.用於製作神經網絡圖的 latex 代碼[16]13.城市交通模擬器[17]來源:https://gopher-daily.com/碼農桃花源每日分享--2021-01-08 文章推薦go 並發編程之深入理解 errgroup[18]面試問題每日算法
  • 口袋妖怪go谷歌帳號註冊教程大全 谷歌帳號登不上怎麼辦
    導 讀 口袋妖怪go國服還沒有正式上線,而玩家想要登陸遊戲也必須通過谷歌帳號。那麼pokemon go谷歌帳號怎麼申請註冊?舊帳號登錄不了怎麼辦?