概述
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)、传输(Protocol Buffers、gRPC)、监控(OpenCensus)、对象关系映射(gORM)以及认证(JWT)提供了支持。开源社区还提供了多个服务框架,包括Go Kit、Go Micro和Gizmo,这些都是快速上手的好方法。
用于云计算的Go工具
Docker是一个平台即服务,它在容器中交付软件。容器将软件、库和配置文件打包在一起,由Docker引擎托管,并由单个操作系统内核运行(比虚拟机使用更少的系统资源)。
云开发者使用Docker来管理他们的Go代码并支持多个平台,因为Docker支持开发工作流和部署过程。
Kubernetes是一个用Go编写的开源容器编排系统,用于自动化Web应用的部署。Web应用通常使用容器(如上所述)打包其依赖项和配置。Kubernetes有助于大规模部署和管理这些容器。云程序员使用Kubernetes来快速构建、交付和扩展容器化应用——通过控制容器如何运行的API来管理日益增长的复杂性。
Featured users
| Customer | Brief introduction | Projects using go |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
开始学习
云计算领域的Go书籍
-
Building Microservices with Go
-
Hands-On Software Architecture with Golang
-
Building RESTful Web services with Go
-
Mastering Go Web Services
Web框架
-
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
Web库
-
markbates/goth
Web应用程序的身份验证
-
jinzhu/gorm
一个Go语言的ORM库
-
dgrijalva/jwt-go
JSON Web Tokens的Go实现