Go 云与网络服务

概述

Go 帮助企业构建和扩展云计算系统

随着应用程序和处理转移到云端,并发性变得非常重要。云计算系统本质上共享和扩展资源。协调对共享资源的访问会影响云中处理的每个应用程序,并且需要“明确针对开发高度可靠的并发应用程序的”编程语言。

Go 使公司非常容易扩展。这一点非常重要,因为随着我们的工程团队的壮大,每个服务都可以由不同的部门管理。

主要优势

解决开发周期时间和服务器性能之间的权衡

Go 的创建是为了解决扩展应用程序、微服务和云开发的这些并发需求。实际上,云原生计算基金会中超过 75% 的项目都是用 Go 编写的。

Go 凭借其快速的构建时间(支持迭代开发)、更低的内存和 CPU 使用率,帮助减少了这种权衡的必要性。用 Go 构建的服务器启动时间极短,并且在按需付费和无服务器部署中运行成本更低。

解决现代云面临的挑战,提供标准的惯用 API

Go 解决了许多开发人员在现代云中面临的挑战,提供了标准的惯用 API 以及内置的并发性来利用多核处理器。Go 的低延迟和“无旋钮”调整使 Go 在性能和生产力之间取得了很好的平衡——赋予工程团队选择和迁移的权力。

用例

将 Go 用于云计算

在构建服务方面,Go 的优势尤为突出。其速度和对并发的内置支持带来了快速高效的服务,而静态类型、强大的工具以及对简洁性和可读性的重视则有助于构建可靠且可维护的代码。

Go 拥有强大的生态系统来支持服务开发。标准库 包含针对 HTTP 服务器和客户端、JSON/XML 解析、SQL 数据库以及各种安全/加密功能等常见需求的包,而 Go 运行时包含用于竞态检测基准测试/分析、代码生成和静态代码分析的工具。

主要的云提供商(GCPAWSAzure)为其服务提供了 Go API,而流行的开源库提供了对 API 工具(Swagger)、传输(协议缓冲区gRPC)、监控(OpenCensus)、对象关系映射(gORM)和身份验证(JWT)的支持。开源社区还提供了一些服务框架,包括 Go KitGo MicroGizmo,这些框架可以成为快速入门的好方法。

用于云计算的 Go 工具

Docker Docker

Docker 是一个平台即服务,用于在容器中交付软件。容器捆绑软件、库和配置文件,由 Docker 引擎托管,由单个操作系统内核运行(比虚拟机使用更少的系统资源)。

云开发人员使用 Docker 管理他们的 Go 代码并支持多个平台,因为 Docker 支持开发工作流程和部署过程。

Kubernetes Kubernetes

Kubernetes 是一个用 Go 编写的开源容器编排系统,用于自动执行 Web 应用程序部署。Web 应用程序通常使用容器(如上所述)构建,这些容器与它们的依赖项和配置一起打包。Kubernetes 有助于大规模地部署和管理这些容器。云程序员使用 Kubernetes 快速构建、交付和扩展容器化应用程序——通过控制容器运行方式的 API 管理不断增长的复杂性。

客户 简介 使用 Go 的项目
Google Google Google Google Cloud 在其产品和工具生态系统中广泛使用 Go,包括 Kubernetes、gVisor、Knative、Istio 和 Anthos。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 编写前端代码,并在所有浏览器中运行。

查看更多