Kubernetes含金量最高CKA首个包过培训班文末报名啦!

Go 语言团队发布了一个新的开源项目 Go Cloud,用于开发具有可移植性的云端应用程序。

7 月 24 日,Go 语言团队发布了一个新的开源项目 Go Cloud。Go Cloud 是一个可在开放云平台上进行开发的库和工具集,旨在让 Go 语言成为开发构建可移植云端应用程序的首选语言。

1

为什么瞄准具有可移植性的云端编程?为什么是现在?

谷歌的 Go 语言是当今发展最快的编程语言之一,在全球拥有约 100 万的活跃开发人员。Go 语言为包括 Kubernetes,Istio 和 Docker 在内的许多关键云基础架构项目提供支持,并凭借其高效性,内置并发性和低延迟受到很多云端开发人员的喜爱。

Go 语言团队从合作伙伴当中了解到,很多公司都对跨云的可迁移性有共同的需求,他们想要在多云或混合云环境中部署健壮的应用程序,并希望无需对代码进行大量更改就能在不同的云服务之间迁移工作负载。

为实现这一目标,一些团队尝试将应用程序与特定云服务的 API 分离,以生成更简单,更可移植的代码。然而,功能的快速迭代需求必将牺牲长期的可移植性。因此,云中运行的大多数 Go 应用程序都与其初始云服务紧密耦合。

现在,团队可以使用 Go Cloud(一组开放的通用云端 API)编写更简单,可移植的云端应用程序。Go Cloud 使团队能够实现其功能开发目标,同时能保持在多云和混合云架构中迁移的灵活性。

2

Go Cloud 是什么

Go 语言团队识别了云端应用程序使用的通用服务,并创建了可跨云进行应用的通用 API。Go Cloud 采用 blob 存储,可访问 MySQL 数据库,可进行运行时配置,还有一个具有内置日志记录,跟踪和运行状况检查的 HTTP 服务器。Go Cloud 目前提供对 Google Cloud Platform(GCP)和 Amazon Web Services(AWS)的支持。后期 Go 团队计划与其他云服务和 Go 语言社区合作,尽快为其他云厂商添加支持。

Go Cloud 旨在为各种云中最常用的服务提供中立于厂商的 API,这样可以轻松地将 Go 应用程序进行跨云迁移。Go Cloud 还为其他编写跨云的库的开源项目奠定了基础。来自社区各级各类开发人员的反馈将决定 Go Cloud 中未来 API 的优先级。

3

如何使用 Go Cloud

Go Cloud 的核心是一组进行便携云端编程的通用 API 集合。 我们来看一个使用 blob 存储的例子。你可以使用 * blob.Bucket 这个通用类型将文件从本地磁盘复制到云服务中。 首先使用附带的 s3blob 包打开一个 S3 bucket:

// setupBucket opens an AWS bucket.

func setupBucket(ctx context.Context) (*blob.Bucket, error) {

// Obtain AWS credentials.

sess, err := session.NewSession(&aws.Config{

Region: aws.String("us-east-2"),

})

if err != nil {

return nil, err

}

// Open a handle to s3://go-cloud-bucket.

return s3blob.OpenBucket(ctx, sess, "go-cloud-bucket")

}

一旦程序有了* blob.Bucket,就可以创建一个可以实现 io.Writer 的 blob.Writer。 然后这个程序程序可以使用 * blob.Writer 将数据写入 bucket,确保 Close 不会报告错误。

ctx := context.Background()

b, err := setupBucket(ctx)

if err != nil {

log.Fatalf("Failed to open bucket: %v", err)

}

data, err := ioutil.ReadFile("gopher.png")

if err != nil {

log.Fatalf("Failed to read file: %v", err)

}

w, err := b.NewWriter(ctx, "gopher.png", nil)

if err != nil {

log.Fatalf("Failed to obtain writer: %v", err)

}

_, err = w.Write(data)

if err != nil {

log.Fatalf("Failed to write to bucket: %v", err)

}

if err := w.Close(); err != nil {

log.Fatalf("Failed to close: %v", err)

}

注意:使用 Bbucket 的逻辑不适用于AWS S3。通过更改用于打开 * blob.Bucket 的功能,Go Cloud 可以交换云端存储。这样应用程序可以使用 gcsblob.OpenBucket 构建一个 * blob.Bucket,不更改复制文件的代码就能使用 Google Cloud Storage:

// setupBucket opens a GCS bucket.

func setupBucket(ctx context.Context) (*blob.Bucket, error) {

// Open GCS bucket.

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

}

// Open a handle to gs://go-cloud-bucket.

return gcsblob.OpenBucket(ctx, "go-cloud-bucket", c)

}

虽然访问不同云服务中的 bucket 需要不同的步骤,但应用程序使用的结果类型是一样的:* blob.Bucket。这将应用程序代码与特定云服务的代码隔离开来。为了提高与现有 Go 库的互操作性,Go Cloud 利用了 io.Writer,io.Reader 和 * sql.DB 等已建立的接口。

4

如何开始

官方教程地址:

https://github.com/google/go-cloud/tree/master/samples/tutorial

可按照此教程进行操作并尝试自行构建应用程序。如果你已经在使用 AWS 或 GCP,可以尝试迁移现有的应用程序的一部分来尝试使用 Go Cloud。如果你使用的是其他云服务或本地服务,则可以通过实现驱动程序接口(如 driver.Bucket)来扩展 Go Cloud 进行支持。

Go Cloud 开源地址:

https://github.com/google/go-cloud

Go Cloud项目开源发布:Go语言将成为云端应用开发的首选语言?相关推荐

  1. Google 希望将 Go 打造成云端应用开发的首选语言

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   Google 的 Go 语言是当今发展最快的编程语言之一,目前在全球约有 100 万的活跃开发者.但 Google 认为 Go 仍然具备增长 ...

  2. GO语言凭什么是区块链的首选语言

    GO语言凭什么是区块链的首选语言 区块链的火热也带动了GO语言开发者的突增,那凭什么GO语言会成为最主要的区块链构建语言之一.我认为这得益于GO语言的性能.抽象度.简单性和现代性.并且,当下最成功.最 ...

  3. apache c语言源码,Apache模块开发/用C语言扩展apache(2:APR编程介绍)

    Apache模块开发/用C语言扩展apache(2:APR编程介绍) by linux_prog 可以看到apache代码中使用了大量的以apr_开头的结构或者函数,这些其实是APR. 什么是apr  ...

  4. c8051f c语言编程,C8051F系列单片机开发与C语言编程

    C8051F系列单片机开发与C语言编程 维普资讯 http://doc.xuehai.net 雎 A 21进行控制,这样可以选择不同的地址,进而控制的读写. S D1 5 E 6对应的内存和寄存器. ...

  5. c语言 大数相加,c/c++开发分享C语言计算大数相加的方法

    c/c++开发分享 问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准 输入格式 输入包括两行,第一行为一个非负整数 ...

  6. 为什么说python是世界上最好的语言-Python才是世界上最好的语言

    [文末领取限免课程] Python是人工智能的未来. 前不久中国经济学会(CEA)发布了顶级编程语言交互排行榜:Python超越Java高居首位. 而且随着大数据和人工智能的发展,Python受到了越 ...

  7. 区块链技术开发的常备语言总结

    现在有很多的区块链技术开发者在不断的尝试和学习区块链开发知识,开发区块链需要什么程序语言呢?这些语言分别有什么优势?下面为大家整理了四种区块链技术比较主要的开发言语,希望对大家有所帮助. 区块链开发语 ...

  8. C语言k=xm gt xn gt p,C语言学习001:让程序跑起来

    编译工具下载 编译运行 #include int main(){ puts("C rocks!"); return ; } 编译运行程序 在命令提示符窗口中输入" gcc ...

  9. 阿里巴巴云生态 9 大开源项目重磅发布

    11 月 3 日,2022 云栖大会·云计算加速开源创新论坛上,阿里巴巴 9 大开源项目宣布首发或重磅升级,覆盖数据库.云原生.搜索引擎.大数据.基础软件和工具等多个领域. 中国科学院院士.中国计算机 ...

最新文章

  1. 【BZOJ1801】【DTOJ2004】 [Ahoi2009]chess 中国象棋 【DP】
  2. Install Redis on CentOS 6.4--转
  3. 白话Elasticsearch31-深入聚合数据分析之bucket与metric
  4. mybatis源码阅读(一):SqlSession和SqlSessionFactory
  5. android屏幕录制鸿洋,Android之自定义View笔记(鸿洋)
  6. arm平台下linux c语言编程,简单分析针对ARM平台的C语言程序的编译问题
  7. mysql如何查看dbid_如何获得数据库的DBID
  8. Common lisp编译成C的bin(二)
  9. ATM取款机java的实现--练习代码
  10. rsa算法的java实现,RSA算法的实现——java版
  11. Segment Routing MPLS介绍
  12. 蓝桥杯省赛2013年Java组B组
  13. eoffice key8.0.php_Office2019增强版永久密钥key
  14. tlwdr5660间歇性掉线_tl-wdr7660无线掉线?tl-wdr7660路由不稳定怎么办?
  15. 什么是AAR文件以及如何在Android开发中使用
  16. 关于成功和努力的一些想法
  17. heka study
  18. 移动支付服务商加盟/微信支付宝扫码支付代理加盟
  19. [小知识] WPS恢复本地历史数据
  20. java 调停者模式_[Java教程]《JAVA与模式》之调停者模式

热门文章

  1. 教你win10怎么从电脑查找隐藏视频
  2. 前端框架是什么意思?
  3. QT打包软件在另一电脑运行后出现Cannot load library XXX.dll之解决方案-MSVC编译器
  4. 虚拟机无法在更新服务器,今win10更新导致VMware workstation pro无法打开的解决方法...
  5. ios10怎么设置电池颜色_苹果手机电池颜色变黄了怎么调
  6. 大二单片机笔记,串口通信代码【郭天祥】【700字】【勿笑】【原创】
  7. 我见众生皆无意,唯有见你动了情(表白日记分享篇)
  8. [转载] Ruby、Rails、Agile的启示
  9. HM编码器代码阅读(16)——帧间预测之AMVP模式(四)预测MV的获取
  10. JavaFXGL框架笔记