网站首页 > 资源文章 正文
在编程语言界,谷歌的Golang语言可以说是当下最流行的语言之一,据官方数据全球约有100万活跃码农在使用Golang开发。同时云计算也是目前技术发展最快的一个领域,并且改变了我们的基础IT架构:大量的网站、应用开始迁移到云上。为了应对这种趋势,促进Golang在云计算领域的繁荣(当然在容器领域 Golang开发的docker是一枝独秀的),谷歌最近推出了Go Cloud(github地址: google/go-cloud),包括开源库和一套工具,可以让每个码农更轻松地使用Golang构建云应用程序。
功能和特性
Go Cloud为开发人员提供了一组用于访问对象存储(比如AWS S3),MySQL数据库和运行时配置的开放式通用云API。还提供内置了一个支持日志记录、跟踪和运行状况检查的HTTP服务器。截止目前,还主要提供对亚马逊AWS和Google Cloud Platform支持。谷歌计划,未来会添加更多的功能以及支持更多云厂商,谷歌也欢迎各云厂商根据现有的类库扩展建立自己适配开发支持。
安装部署
安装部署很简单:
go get github.com/google/go-cloud
go get github.com/google/go-cloud/wire/cmd/wire
实例:
链接到GCP并认证:
package main
import (
"context"
"flag"
"log"
"github.com/google/go-cloud/blob"
"github.com/google/go-cloud/blob/gcsblob"
"github.com/google/go-cloud/gcp"
)
func main() {
ctx := context.Background()
var (
b *blob.Bucket
err error
)
switch *cloud {
case "gcp":
b, err = setupGCP(ctx, *bucketName)
case "aws":
b, err = setupAWS(ctx, *bucketName)
default:
log.Fatalf("Failed to recognize cloud. Want gcp or aws, got: %s", *cloud)
}
if err != nil {
log.Fatalf("Failed to setup bucket: %s", err)
}
}
func setupGCP(ctx context.Context, bucket string) (*blob.Bucket, error) {
creds, err := gcp.DefaultCredentials(ctx)
if err != nil {
return nil, err
}
c, err := gcp.NewHTTPClient(gcp.DefaultTransport(), gcp.CredentialsTokenSource(creds))
if err != nil {
return nil, err
}
// The bucket name must be globally unique.
return gcsblob.NewBucket(ctx, bucket, c)
}
链接到AWS 并认证:
package main
import (
// ...
// listing only new import statements
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/google/go-cloud/blob/s3blob"
)
// ... main
func setupAWS(ctx context.Context, bucket string) (*blob.Bucket, error) {
c := &aws.Config{
// 可以直接指定ID或者使用AWS_REGION.
Region: aws.String("us-east-2"),
// credentials.NewEnvCredentials 需要两个变量参数:
// 1. AWS_ACCESS_KEY_ID, 访问KeyID
// 2. AWS_SECRET_ACCESS_KEY. 密钥访问KEY
Credentials: credentials.NewEnvCredentials(),
}
s := session.Must(session.NewSession(c))
return s3blob.NewBucket(ctx, s, bucket)
}
写bucket存储
package main
// No new imports.
func main() {
// ...
w, err := b.NewWriter(ctx, file, nil)
if err != nil {
log.Fatalf("Failed to obtain writer: %s", err)
}
_, err = w.Write(data)
if err != nil {
log.Fatalf("Failed to write to bucket: %s", err)
}
if err := w.Close(); err != nil {
log.Fatalf("Failed to close: %s", err)
}
}
更多例子请参考官方文档。
展望
谷歌通过推出开源的Go Cloud云基础开发框架希望帮助开发人员构建可以在任何支持的云上运行的应用程序,一次开发,各云皆行!(Write once, run on any cloud ??),希望这个框架能够减轻开发人员的开发工作,避开各家云厂商繁琐,雷点四伏的APK和API(尤其是国内各家云,连文档都不完善)。
欢迎关注虫虫,给虫虫点赞,虫虫会持续给大家普及相关知识和信息。
猜你喜欢
- 2024-10-14 手机内存不足?不要胡乱清理了,学会了让手机空间瞬间释放!
- 2024-10-14 「GCTT 出品」Golang 中的微服务-第二部分-Docker 和 go-micro
- 2024-10-14 口袋妖怪Go新版本更新分析解读 0.23.1更新内容
- 2024-10-14 Oculus CTO: Quest仍然支持安装第三方APK
- 2024-10-14 Pokemongo虚拟定位教程 Pokemongo电脑版虚拟定位怎么设置?
- 2024-10-14 Pokemon go PC版安装教程 pokemongo电脑版gps模拟器安装
- 2024-10-14 口袋妖怪go手环最新消息 手环功能详解
- 2024-10-14 最简单的Go Dockerfile编写姿势,没有之一
- 2024-10-14 512MB内存都不卡 谷歌亲自为安卓开发手机管家
- 2024-10-14 干货分享:用 Go 从头实现一个迷你 Docker—Gocker
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)