云计算网络服务

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

随着应用程序与处理逻辑转移到云端,并发成为一大问题。云计算系统天然地共享与扩展资源,但其同步访问共享资源可能会存在问题,因为它会影响每一个在云端处理的应用程序,此时『专注于开发高可靠与并发的应用程序』的编程语言则成为一大需求。

Go 语言的出现正是为了完全满足这些规模化应用程序、微服务和云开发的并发需求。实际上,云原生计算基金会(CNCF)有超过75%的项目是由 Go 语言编写的

Quotation mark.

作为一家公司,使用 Go 语言开发业务很容易规模化,这一点非常重要,因为随着工程团队不断壮大,每个服务都可以由不同的单元来管理。

服务开发者经常需要在开发周期时间与服务器性能之间权衡利弊。而 Go 语言有助于减少这种权衡的必要,因为 Go 的快速构建使得迭代开发成为可能,并且它可以降低内存和 CPU 占用率。使用 Go 构建的服务器程序可以快速启动,并且在按需付费和无服务器部署中运行成本很低。

Go 解决了开发人员在现代云场景中的诸多挑战:提供了标准化的惯用API,并内置了并发充分利用了多核特性。Go 的低延时和『no knob』调优特性使得 Go 在性能与产出之间取得了一个很好的平衡:将选择的权利交给工程师团队。

云计算如何使用 Go

Go 在构建服务方面的优势很明显。它的速度和内置支持并发可以构建快速高效的服务。而静态类型,强大的工具以及对简单性和可读性的侧重有助于构建可靠且可维护的代码。

Go 拥有一个强大的生态来支持服务开发。标准库包括许多满足常见需求的程序包,比如 HTTP 服务器和客户端,JSON/XML 解析,SQL 数据库以及一系列安全性/加密功能,同时 Go 运行时则包括:用于竞争检测基准测试/性能分析,代码生成和静态代码分析的工具。

主流的云服务供应商(GCP, AWS, Azure)提供了相应服务的 Go APIs,流行的开源库提供对API工具的支持(Swagger),传输(protocol buffers, gRPC),监控(OpenCensus),对象关系映射(gORM),身份验证(JWT)。 开源社区还提供了多个服务框架,包括 Go KitGo MicroGizmo,这是快速入门的好方法。

两种流行的用于云计算的 Go 工具是 DockerKubernetes

Docker 是一种平台即服务(PAAS),可在容器中交付软件。容器中的 Docker Engine 负责打包软件、库、配置文件,它是由单个操作系统内核运行(比虚拟机使用更少的系统资源)。

云开发者使用 Docker 管理他们的 Go 代码,支持多个平台,除此之外,Docker 也支持开发工作流和部署过程。Tiny Shell Script 创始人, Jérôme Petazzoni 写到『Docker 可以帮助我们在一个干净、隔离的环境下编译 Go 代码,且可以在不同的操作系统和平台之间交叉编译。』

Kubernetes 是一个用 Go 编写的开源的容器编排系统,可用于自动化 web 应用程序部署。 Web 应用程序经常使用容器(正如上文提到的)打包他们的依赖与配置。Kubernetes 有助于大规模部署和管理这些容器。云程序员使用 Kubernetes 快速构建、交付和规模化容器化的应用程序,通过使用控制容器运行的 APIs 管理日益增长的复杂性。

关键解决方案

Go 云计算书籍

其他资源