Go Cloud开发工具包有什么新功能

前言

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 的优先级。

介绍

2018年7月,我们推出Go Cloud开发工具包(以前简称为“Go Cloud”),这是一个开源项目,构建库和工具,以改善使用Go开发云的体验。从那时起我们取得了很多进步 - 感谢早期的贡献者!我们期待发展Go CDK社区的用户和贡献者,并很高兴与早期采用者密切合作。

便携式API

我们的第一个计划是一组用于常见云服务的可移植API。您使用这些API编写应用程序,然后将其部署在任何提供程序组合上,包括AWS,GCP,Azure,内部部署或单个开发人员计算机上进行测试。可以通过实现接口添加其他提供程序。

如果满足以下任何条件,这些便携式API非常适合:

  • 您在本地开发云应用程序。
  • 您拥有要在云中运行的内部部署应用程序(永久或作为迁移的一部分)。
  • 您希望跨多个云实现可移植性。
  • 您正在创建一个将使用云服务的新Go应用程序。

与需要为每个云提供商编写新应用程序代码的传统方法不同,使用Go CDK,您可以使用我们的便携式API编写应用程序代码,以访问下面列出的服务集。然后,您可以在任何受支持的云上运行应用程序,只需更改配置。

我们目前的API包括:

  • blob,用于blob数据的持久性。支持的提供商包括:AWS S3,Google云端存储(GCS),Azure存储,文件系统和内存。
  • pubsub用于发布/订阅主题的消息。支持的提供商包括:Amazon SNS / SQS,Google Pub / Sub,Azure Service Bus,RabbitMQ和内存。
  • runtimevar,用于监视外部配置变量。支持的提供程序包括AWS Parameter Store,Google Runtime Configurator,etcd和文件系统。
  • screts,用于加密/解密。支持的提供程序包括AWS KMS,GCP KMS,Hashicorp Vault和本地对称密钥。
  • 用于连接云SQL提供程序的助手。支持的提供商包括AWS RDS和Google Cloud SQL。
  • 我们还在开发文档存储API(例如MongoDB,DynamoDB,Firestore)。

反馈

我们希望您和我们一样对Go CDK感到兴奋 - 查看我们的godoc,浏览我们的教程,并在您的应用程序中使用Go CDK。我们很乐意听取您希望了解的其他API和API提供商的想法。

如果您正在深入了解Go CDK,请与我们分享您的经验:

  • 什么进展顺利?
  • 使用API​​有任何痛点吗?
  • 您使用的API中是否缺少任何功能?
  • 有关文档改进的建议。

要发送反馈,您可以:

谢谢!

来自Google的Go Go Cloud Development Kit团队,Twitter #GoCDK

相关

What’s new in the Go Cloud Development Kit
Go Cloud开源发布:Go将成为云端应用开发的首选语言?

SVN迁移到Git

一直有些网友留言要之前写的部分软件的源码,这些项目差不多是8年前Delphi写的Windows程序,通过SVN托管的,现在打算开源放到GitHub,需要先转为Git仓库。

① 群辉NAS上装一个SVN Server套件,把直接的仓库目录直接复制到NAS svn目录,配置下权限即可。

② git clone

authors.txt指定svn中的提交者和git中的映射关系(svn是没有email的)

1
2
Hou = Jerry <admin@example.com>
hou = Jerry <admin@example.com>

git svn clone --no-metadata --authors-file=authors.txt svn://\<svn server\>/IpMac IpMac

OK。

目前开源之前的软件:

Docker编译Go写的程序报错EOF

环境:

  • MacOS 10.13.2
  • go version 1.9.2
  • docker 17.12.0-ce

报错如下:

import /usr/local/go/pkg/linux_amd64/io.a: reading input: EOF

import /usr/local/go/pkg/linux_amd64/log.a: reading input: EOF

go build -a 全量编译是可以,那么可能就是编译的中间.a文件方面有问题

诊断/修复问题

docker run –rm -it -v $GOPATH:/go golang:1.9 bash

文件有大小,没内容(至少无法读取到内容)

log.a 文件有大小,里面却没内容

docker rmi删除golang的镜像,重新拉取一下就正常了,

可能是当时升级Docker For Mac后,来取的镜像有点问题导致AUFS这块不正常了(猜测)。

Windows服务器上通过PowerShell下载文件

今天要在联通沃云的一个老的Windows服务器上下载安装Docker,部署几年前的一个用nodejs编写的OCSP分布式监测程序分析全球CA的OCSP响应速度,用IE一直没成功,没有curl、wget,想到功能还算强大的Powershell,搜了一段下载脚本,顺利下载:)。

1
2
3
4
5
6
7
8
9
$url = "https://yryz.net/Docker for Windows Installer.exe"
$output = "C:\a.exe"
$start_time = Get-Date

$wc = New-Object System.Net.WebClient
$wc.DownloadFile($url, $output)
#OR (New-Object System.Net.WebClient).DownloadFile($url, $output)

Write-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"

Docker目前提供了最新的Windows版本,只支持windows 10,使用了Hyper-V虚拟机。

由于服务器目前使用的较多的为Windows Server 2008,因此,只能使用支持 Windwos Server 2008 R2的Docker Toolbox,使用的是Oracle VM VirtualBox虚拟机,官网下载地址:
http://www.docker.com/products/docker-toolbox

安装要求

  • 要求安装64位操作系统
  • 要求BIOS开启虚拟化

快速启动一个简单的静态HTTPServer

一个能快速启动的对外发布的HTTP静态服务器,应急使用还是很方便的。

python -m SimpleHTTPServer 不适合长时间运行(会出现无法访问)。

或者

1
2
3
4
5
6
7
package main

import "net/http"

func main() {
http.ListenAndServe(":8080", http.FileServer(http.Dir(".")))
}

Go1.9值得我们关注的一些细节

  1. 类型别名
  2. 支持并行编译,多核同时编译包
  3. x*y + z 不舍入中间结果x*y。强制中间舍入,写float64(x*y) + z。
  4. Resolver.Dial 允许自定义DNS解析的拨号,通常可以用于代理或者拦截。
  5. httputil.ReverseProxy 支持代理HTTP2,可以用户做代理转发使用。
  6. 在Unix系统中SSL_CERT_FILE 、SSL_CERT_DIR环境变量可以代替系统默认的证书信任库。
  7. http.Transport现在支持使用SOCKS5代理(之前只支持HTTP代理),通过 Transport.Proxy 指定。
  8. 现在支持文件IO操作的异步poller机制,之前只有网络socket才支持,1.8以前文件的并发读写将会导致创建多个线程,现在网络一样可以高效并发。

    Read More

清除CRL和OCSP吊销缓存

默认情况下系统会缓存证书的CRL和OCSP证书吊销信息,以加速证书验证过程。

我们为了测试证书是否成功被吊销,可以通过 myssl.com 这个网站在线进行检查,也可以清系统吊销空缓存后通过浏览器更直观的去查看。

!证书被吊销后浏览器不会让你选择忽略继续访问。

Read More