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 编写前端代码,并在所有浏览器中运行。

查看更多