概述
帮助企业构建和扩展云计算系统
随着应用程序和处理迁移到云端,并发性成为一个非常大的问题。云计算系统,就其本质而言,共享和扩展资源。协调对共享资源的访问是一个影响云中每个应用程序处理的问题,并且需要“明确适用于开发高度可靠的并发应用程序”的编程语言.
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 的项目 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
快速开始
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 实现