google/go-cloud

GitHub: google/go-cloud

Go CDK 提供了一套云服务通用 API,让 Go 应用可以一次编写、部署到任意云平台。

Stars: 9900 | Forks: 855

# Go Cloud Development Kit (Go CDK) _一次编写,在任意云上运行 ☁️_ [![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/cas/6b/6b52945adbf8d9e421fe243515ae54cfbd3da263f16b1eabda37cdc0b797b8eb.svg)](https://github.com/google/go-cloud/actions) [![Go Report Card](https://goreportcard.com/badge/github.com/google/go-cloud)](https://goreportcard.com/report/github.com/google/go-cloud) [![PkgGoDev](https://pkg.go.dev/badge/mod/gocloud.dev)][PkgGoDev] [![覆盖率](https://codecov.io/gh/google/go-cloud/branch/master/graph/badge.svg)](https://codecov.io/gh/google/go-cloud) ![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/google/go-cloud) [![许可证](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

Go Cloud Development Kit (Go CDK) 允许 Go 应用开发者无缝地将云应用程序部署到任意组合的云提供商上。它通过为存储和数据库等常见用途提供稳定且符合语言习惯的接口来实现这一点。可以把它想象成云产品的 `database/sql`。 想象一下,编写以下代码来读取 blob 存储(如 Google Cloud Storage 或 S3): ``` ctx := context.Background() bucket, err := blob.OpenBucket(ctx, "s3://my-bucket") if err != nil { return err } defer bucket.Close() blobReader, err := bucket.NewReader(ctx, "my-blob", nil) if err != nil { return err } ``` 并且能够在您想要的任何云上运行该代码,从而避免所有特定于云的授权、追踪、SDK 以及使应用程序跨云平台可移植所需的所有其他繁琐代码。 该项目与一个名为 [Wire](https://github.com/google/wire/blob/master/README.md) 的代码生成器配合得很好。它会生成人类可读的代码,并且只导入您所使用的服务的云 SDK。这使得 Go CDK 能够扩展以支持任意数量的云服务,而不会增加编译时间或二进制文件大小,并避免 `init()` 函数带来的任何副作用。 您可以通过我们的[公告博客文章][]或我们在 Next 2018 大会上的演讲来了解更多关于该项目的信息: [![视频:为开放云构建 Go 应用 (Cloud Next '18)](https://img.youtube.com/vi/_2ZwhvIkgek/0.jpg)][video] ## 安装 ``` # 首先,如果你有项目目录,请 “cd” 进入该目录,以确保 “go get” 正确使用 # Go modules(或不使用)。更多信息请参阅 “go help modules”。 go get gocloud.dev ``` Go CDK 基于 Go 的最新稳定版本进行构建。之前的 Go 版本也许可以编译,但不受支持。 ## 文档 该项目的主要文档位于 https://gocloud.dev/,包括[教程][]。 您也可以在 [pkg.go.dev][PkgGoDev] 上浏览 Go 包参考文档。 ## 项目状态 API 仍处于 alpha 阶段,但我们认为它们已经达到生产可用状态,并且正在积极寻找早期用户的反馈。如果您有任何意见或问题,请提交 issue。 目前,我们更倾向于专注于维护现有的 API 和 driver,不太可能接受将新的 API 和 driver 合并到 `go-cloud` 仓库中。Go CDK 的模块化特性使得在独立的外部仓库中为现有 API 托管新的 API 和 driver 变得非常简单。 如果您认为您拥有的新 API 或 driver 足够重要且成熟,可以将其纳入其中,欢迎提交 issue 进行讨论;我们通常会建议您在独立的仓库中开始开发。我们也很乐意在本 README 中维护一份此类外部 API 和 driver 的列表。 ## 当前功能 Go CDK 为以下功能提供通用 API: * 非结构化二进制(blob)存储 * 发布/订阅(pubsub) * 运行时可更改的变量(runtimevar) * 连接到 MySQL(包括 MariaDB)和 PostgreSQL 数据库(mysql、postgres) * 服务器启动与诊断:请求日志记录、追踪和健康检查(server) ## 法律免责声明 Go CDK 是开源的,并根据 [Apache 2.0 License](https://github.com/google/go-cloud/blob/master/LICENSE) 发布。Copyright © 2018–2019 The Go Cloud Development Kit Authors. 如果您正在寻找与 Go CDK 无关的 GoCloud Systems 网站,请访问 https://gocloud.systems。
标签:EVTX分析, Go, Ruby工具, 云开发工具包, 云计算, 存储, 抽象接口, 日志审计, 规则引擎, 跨云开发