概述
Go 協助企業建置和擴充雲端運算系統
隨著應用程式和處理移往雲端,並行運算已成為一大議題。雲端運算系統本質上會共用和擴充資源。協調對共用資源的存取是一個影響雲端中每項應用程式處理的議題,並需要「專為開發高度可靠的並行應用程式而設計」的程式語言。
隨著公司的成長,Go 讓擴充变得非常容易,這點非常重要,因為隨著我們的工程團隊成長,每個服務都可以由不同的部門管理。
主要優點
解決開發週期時間與伺服器效能的取捨
Go 是用來滿足這些擴展應用程式、微服與雲端發展中並行化需求而建立的。事實上,雲端原生運算基金會中超過 75% 的專案都是以 Go 編寫的。
Go 透過它的快速建構執行時間能支援互動開發並降低記憶體與 CPU 使用率,進而減少了進行權衡取捨的需求。使用 Go 建構的伺服器能體驗即時啟動時間,並且在按使用量計費和無伺服器部署中,執行成本較低。
運用標準慣用語 API 來處理現代雲端中的挑戰
Go 處理開發人員在現代雲端中所面臨的眾多挑戰,提供標準慣用語 API 並內建並行化功能以善用多核心處理器。Go 的低延遲和無調整功能在效能和生產力之間取得極佳的平衡,讓工程團隊能夠選擇並移轉。
使用案例
用於雲端運算的 Go
在建構服務方面,Go 的優點顯而易見。它的速度和內建並行化支援,讓服務能快速且有效率執行;同時靜態型別、強大的工具,以及對簡潔度和易讀性的重視,有助於建構可靠且可維護的程式碼。
Go 有一個強大的生態系統來支援服務發展。標準函式庫 中包含許多常見需求套件,像是 HTTP 伺服器和用戶端、JSON/XML 剖析、SQL 資料庫以及範圍廣泛的安全性/加密功能,而 Go 執行時間則包含 競爭偵測、基準/剖析、程式碼產生和靜態程式碼分析工具。
主要的雲端供應商 (GCP, AWS, Azure) 已為其服務提供 Go API,而普及的開源程式庫提供 API 工具 (Swagger)、傳輸 (通訊協定緩衝區, gRPC)、監控 (OpenCensus)、物件關聯式對應 (gORM) 和驗證 (JWT) 的支援。開放原始碼社群也提供數個服務架構,包括 Go Kit、Go Micro 和 Gizmo,這些架構可以作為快速入門的絕佳方式。
針對雲端運算的 Go 工具
Docker 是一個平台即服務,以容器的形式提供軟體。容器會將軟體、函式庫和組態檔打包,由 Docker 引擎主機,並由單一作業系統核心執行(使用比虛擬機器少的系統資源)。
雲端開發人員使用 Docker 來管理他們的 Go 程式碼和支援多個平台,因為 Docker 支援開發工作流程和部署程序。
Kubernetes 是一個使用 Go 編寫的開放原始碼容器編排系統,用於自動化 Web 應用程式部署。Web 應用程式通常會使用容器(如上所述)與其相依性和組態打包建立。Kubernetes 協助以規模化方式部署和管理這些容器。雲端程式設計師使用 Kubernetes 來快速建置、傳送和擴充套件容器化應用程式,透過控制容器執行方式的 API 來管理日益增長的複雜性。
特色使用者
客戶 | 簡要介紹 | 使用 Go 的專案 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
開始使用
雲端運算 Go 書籍
Web 框架
-
Echo
效能高、可延伸的 Go 網頁框架,且簡約時尚
-
Flamingo
一個快速的開源框架,以 Go 開發,搭配乾淨且可擴充的架構
-
Gin
以 Go 編寫的網頁框架,搭配類似的 Martini API。
-
Gorilla
為 Go 程式語言的網頁工具組。
路由器
-
net/http
標準函式庫 HTTP 套件
-
julienschmidt/httprouter
輕巧高效能 HTTP 請求路由器
-
gorilla/mux
強大的 HTTP 路由器和 URL 比對器,可以用來打造包含 🦍 的 Go 網頁伺服器
-
Chi
輕巧、習慣用語且可組合的路由器,可用來打造 Go HTTP 服務
資料庫與驅動程式
-
database/sql
標準函式庫介面,支援 MySQL、Postgres、Oracle、MS SQL、BigQuery 和大多數 SQL 資料庫的驅動程式
-
mongo-driver/mongo
Go 支援的 MongoDB 驅動程式
-
elastic/go-elasticsearch
Go 的 Elasticsearch 應用程式
-
GORM
Go 的 ORM 函式庫
-
Bleve
Go 的全文搜尋和索引
-
CockroachDB
資料庫的演化,旨在建構一個雲端,提供有彈性、一致、可廣泛使用的分散式 SQL