概览
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 Engine 托管,并由单个操作系统内核运行(比虚拟机占用更少的系统资源)。
云开发者使用 Docker 管理他们的 Go 代码并支持多个平台,因为 Docker 支持开发工作流和部署过程。
Kubernetes 是一个用 Go 编写的开源容器编排系统,用于自动化 Web 应用程序部署。Web 应用程序通常使用容器构建(如上所述),并打包其依赖项和配置。Kubernetes 有助于大规模部署和管理这些容器。云程序员使用 Kubernetes 快速构建、交付和扩展容器化应用程序,通过控制容器如何运行的 API 管理日益增长的复杂性。
特色用户
客户 | 简介 | 使用 Go 的项目 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
开始使用
用于云计算的 Go 书籍
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 token 的 Go 实现