概述
帮助企业构建和扩展云计算系统
随着应用程序和处理迁移到云端,并发性成为一个非常大的问题。云计算系统,就其本质而言,共享和扩展资源。协调对共享资源的访问是一个影响云中每个应用程序处理的问题,并且需要“明确适用于开发高度可靠的并发应用程序”的编程语言.
Go 使公司规模化变得非常容易。这非常重要,因为随着我们工程团队的壮大,每项服务都可以由不同的部门管理.
主要优势
解决开发周期时间和服务器性能之间的权衡
Go 的创建正是为了满足这些扩展应用程序、微服务和云开发的并发需求。事实上,云原生计算基金会中超过 75% 的项目都是用 Go 编写的.
Go 有助于减少进行这种权衡的需要,其快速构建时间可实现迭代开发、降低内存和 CPU 利用率。使用 Go 构建的服务器体验即时启动时间,并且在即用即付和无服务器部署中运行成本更低.
使用现代云解决挑战,提供标准惯用 API
Go 解决了开发人员在现代云中面临的许多挑战,提供标准惯用 API,并内置并发性以利用多核处理器。Go 的低延迟和“无旋钮”调整使 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 管理日益增长的复杂性.
精选用户
客户 | 简单介绍 | 使用 go 的项目 |
---|---|---|
Google Cloud 在其产品和工具生态系统中使用 Go,包括 Kubernetes、gVisor、Knative、Istio 和 Anthos。Google Cloud 的所有 API 和运行时都完全支持 Go. | ||
Capital One 使用 Go 来支持 Credit Offers API,这是一项关键服务。工程团队也在用 Go 构建他们的无服务器架构,引用 Go 的速度和简单性,并提到“[他们]不想在没有 Go 的情况下实现无服务器架构.” | ||
Dropbox 是基于 Python 构建的,但在 2013 年决定将他们的性能关键包迁移到 Go。今天,公司的大部分基础设施都是用 Go 编写的. | ||
MercadoLibre 使用 Go 扩展其电子商务平台。Go 生成高效的代码,可以随着 MercadoLibre 在线商务的增长而轻松扩展。Go 在简化和扩展 MercadoLibre 服务的同时提高了他们的生产力. | ||
《纽约时报》采用 Go 来“构建更好的后端服务”。随着 Go 在公司中的使用不断扩大,他们觉得需要创建一个工具包来“帮助开发人员快速配置和构建微服务 API 和发布订阅守护进程”,他们已经开源了这些工具包. | ||
Twitch 使用 Go 为其许多最繁忙的系统提供支持,这些系统为数百万用户提供实时视频和聊天服务. | ||
优步使用 Go 为其多项关键服务提供支持,这些服务影响着全球数百万司机和乘客的体验。从他们的实时分析引擎 AresDB 到他们的地理查询微服务 Geofence 和他们的资源调度程序 Peloton. |
快速开始
Go 云计算书籍
Web 框架
-
Buffalo
在 Go 中进行快速 Web 开发的框架,将 Go 和 JS 库组合在一起.
-
Echo
一个高性能、可扩展、极简的 Go web 框架
-
Flamingo
一个基于 Go 的快速开源框架,具有干净且可扩展的架构
-
Gin
用 Go 编写的 Web 框架,具有类似martini的 API.
-
Gorilla
Go 编程语言的web工具包.
路由
-
julienschmidt/httprouter
一个轻量级的高性能 HTTP 请求路由
-
gorilla/mux
一个强大的 HTTP 路由器和 URL 匹配器,用于使用 🦍 构建 Go web服务
-
Chi
用于构建 Go HTTP 服务的轻量级、惯用且可组合的路由组件.
-
net/http
一个标准库 HTTP 包
数据库和驱动
-
database/sql
标准库接口,支持 MySQL、Postgres、Oracle、MS SQL、BigQuery 和大多数 SQL 数据库的驱动程序
-
mongo-driver/mongo
MongoDB 的 Go 驱动程序
-
olivere/elastic
一个用于 Go 的 Elasticsearch 客户端
-
GORM
一个用于 Go 的 ORM 库
-
Bleve
Go 的全文搜索和索引
-
CockroachDB
数据库的进化——为云而设计,可大规模提供弹性、一致、分布式的 SQL
Web 库
-
markbates/goth
Web 应用程序的身份验证
-
jinzhu/gorm
一个用于 Go 的 ORM 库
-
dgrijalva/jwt-go
一个 json web token的 Go 实现