概述

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

随着应用程序和处理迁移到云端,并发性成为一个非常大的问题。云计算系统,就其本质而言,共享和扩展资源。协调对共享资源的访问是一个影响云中每个应用程序处理的问题,并且需要“明确适用于开发高度可靠的并发应用程序”的编程语言.

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 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。Google Cloud 的所有 API 和运行时都完全支持 Go.
Capital One Capital One Capital One Capital One 使用 Go 来支持 Credit Offers API,这是一项关键服务。工程团队也在用 Go 构建他们的无服务器架构,引用 Go 的速度和简单性,并提到“[他们]不想在没有 Go 的情况下实现无服务器架构.”
Dropbox Dropbox Dropbox Dropbox 是基于 Python 构建的,但在 2013 年决定将他们的性能关键包迁移到 Go。今天,公司的大部分基础设施都是用 Go 编写的.

快速开始

Go 云计算书籍

  • 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

查看更多
查看更多
  • gopherjs

    从 Go 到 JavaScript 的编译器,允许开发人员在 Go 中编写可在所有浏览器中运行的前端代码.

查看更多