Go 適用於雲和網路服務

概覽

Go 幫助企業構建和擴充套件雲計算系統

隨著應用程式和處理遷移到雲端,併發性成為一個非常大的問題。雲計算系統本質上是共享和擴充套件資源的。協調對共享資源的訪問是一個影響雲中每個應用程式處理的問題,並且需要“明確旨在開發高度可靠的併發應用程式”的程式語言。

Go 使得公司可以非常容易地進行擴充套件。這非常重要,因為隨著我們工程團隊的壯大,每個服務都可以由不同的單元進行管理。

主要優點

權衡開發週期時間和伺服器效能

Go 的建立正是為了滿足這些針對規模化應用、微服務和雲開發的併發需求。事實上,雲原生計算基金會中超過 75% 的專案都是用 Go 編寫的。

Go 憑藉其快速的構建時間(支援迭代開發)、更低的記憶體和 CPU 利用率,有助於減少這種權衡的必要性。用 Go 構建的伺服器啟動時間即時,並且在按需付費和無伺服器部署中執行成本更低。

應對現代雲挑戰,提供標準慣用 API

Go 解決了開發者在現代雲中面臨的許多挑戰,提供標準慣用 API 和內建併發以利用多核處理器。Go 的低延遲和“免調”特性使其在效能和生產力之間達到了很好的平衡,賦予工程團隊選擇和行動的權力。

用例

將 Go 用於雲計算

Go 在構建服務方面的優勢尤為突出。它的速度和內建的併發支援帶來了快速高效的服務,而靜態型別、強大的工具以及對簡潔性和可讀性的強調有助於構建可靠且可維護的程式碼。

Go 擁有強大的生態系統來支援服務開發。標準庫包括用於常見需求(如 HTTP 伺服器和客戶端、JSON/XML 解析、SQL 資料庫以及一系列安全/加密功能)的包,而 Go 執行時包括用於競態檢測基準測試/效能分析、程式碼生成和靜態程式碼分析的工具。

主要的雲提供商(GCPAWSAzure)為其服務提供了 Go API,流行的開源庫為 API 工具(Swagger)、傳輸(protocol buffersgRPC)、監控(OpenCensus)、物件關係對映(gORM)和身份驗證(JWT)提供支援。開源社群還提供了幾個服務框架,包括Go KitGo MicroGizmo,這些框架是快速入門的好方法。

用於雲計算的 Go 工具

Docker Docker

Docker 是一個平臺即服務,透過容器交付軟體。容器將軟體、庫和配置檔案捆綁在一起,由 Docker Engine 託管,並由單個作業系統核心執行(比虛擬機器佔用更少的系統資源)。

雲開發者使用 Docker 管理他們的 Go 程式碼並支援多個平臺,因為 Docker 支援開發工作流和部署過程。

Kubernetes Kubernetes

Kubernetes 是一個用 Go 編寫的開源容器編排系統,用於自動化 Web 應用程式部署。Web 應用程式通常使用容器構建(如上所述),並打包其依賴項和配置。Kubernetes 有助於大規模部署和管理這些容器。雲程式設計師使用 Kubernetes 快速構建、交付和擴充套件容器化應用程式,透過控制容器如何執行的 API 管理日益增長的複雜性。

客戶 簡介 使用 Go 的專案
Google Google Google Google Cloud 在其產品和工具生態系統(包括 Kubernetes、gVisor、Knative、Istio 和 Anthos)中廣泛使用 Go。Go 在 Google Cloud 的所有 API 和執行時中都得到全面支援。
Capital One Capital One Capital One Capital One 使用 Go 為其關鍵服務 Credit Offers API 提供支援。工程團隊也正在使用 Go 構建其無伺服器架構,他們提到 Go 的速度和簡潔性,並表示“他們不想在沒有 Go 的情況下使用無伺服器”。
Dropbox Dropbox Dropbox Dropbox 最初基於 Python 構建,但在 2013 年決定將其對效能要求很高的後端遷移到 Go。如今,該公司的大部分基礎設施都用 Go 編寫。

開始使用

用於雲計算的 Go 書籍

  • Echo

    一個高效能、可擴充套件、極簡的 Go Web 框架

  • Flamingo

    一個基於 Go 的快速開源框架,具有清晰可擴充套件的架構

  • Gin

    一個用 Go 編寫的 Web 框架,具有類似 martini 的 API。

  • Gorilla

    一個用於 Go 程式語言的 Web 工具包。

檢視更多
  • net/http

    一個標準庫 HTTP 包

  • julienschmidt/httprouter

    一個輕量級高效能 HTTP 請求路由器

  • gorilla/mux

    一個強大的 HTTP 路由器和 URL 匹配器,用於使用 🦍 構建 Go Web 伺服器

  • Chi

    一個輕量級、慣用且可組合的路由器,用於構建 Go HTTP 服務。

檢視更多
檢視更多
  • database/sql

    一個帶有 MySQL、Postgres、Oracle、MS SQL、BigQuery 和大多數 SQL 資料庫驅動支援的標準庫介面

  • mongo-driver/mongo

    MongoDB 官方支援的 Go 驅動

  • elastic/go-elasticsearch

    一個用於 Go 的 Elasticsearch 客戶端

  • GORM

    一個用於 Go 的 ORM 庫

  • Bleve

    Go 的全文搜尋和索引

  • CockroachDB

    資料庫的演進——專為雲設計,以大規模提供彈性、一致、分散式 SQL

檢視更多
檢視更多
  • gopherjs

    一個將 Go 編譯成 JavaScript 的編譯器,允許開發者用 Go 編寫前端程式碼,並在所有瀏覽器中執行。

檢視更多