首先介绍下在本文出现的几个比较重要的概念:git
函数计算(Function Compute): 函数计算是一个事件驱动的服务,经过函数计算,用户无需管理服务器等运行状况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。 Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它经过一个资源配置文件(template.yml),协助您进行开发、构建、部署操做。Fun 的更多文档 参考。github
备注: 本文介绍的技巧须要 Fun 版本大于等于 3.6.4。golang
本文涉及到的两个应用示例部署后的连接,点击预览效果:shell
首先按照 Fun 的安装文档里介绍的方法将 Fun 安装到本机。 PS: 本文介绍的方法,不须要安装 Docker,仅仅安装 Fun 便可,最简单的方式就是直接下载可执行的二进制文件。bootstrap
安装完成后,能够执行 fun --version 检查 Fun 是否安装成功。windows
首先咱们按照官方示例的步骤,安装 gin(须要 golang 版本在 1.11+ 以上):服务器
go get -u github.com/gin-gonic/gin
建立一个 example.go,内容填写以下:网络
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") }
使用下面的命令启动应用:less
go run example.go
而后访问 localhost:8080/ping,能够看到返回结果以下:运维
最后直接使用 fun deploy 便可部署。
fun deploy
咱们这里详细介绍下第一次部署流程:
部署完成后,能够看到会自动生成一个能够测试访问的临时域名 14118335-1911504709953557.test.functioncompute.com,经过这个临时域名,能够用于开发、测试时预览应用。
使用该临时域名,访问应用的 API 接口 14118335-1911504709953557.test.functioncompute.com/ping 测试,效果以下:
备注:临时域名仅仅用做演示以及开发,是有时效的,若是用做生产,请绑定已经备案的域名。
首先咱们按照官方示例的步骤,搭建 beego 应用:
go get github.com/astaxie/beego
建立一个 hello.go,内容填写以下:
package main import "github.com/astaxie/beego" func main(){ beego.Run() }
使用下面的命令启动应用:
go run hello.go
而后访问 localhost:8080,能够看到返回结果。
最后部署,直接使用 fun deploy 经历相似示例一的流程后,就能够经过 Fun 返回的临时域名预览应用了。
示例三咱们选择一个稍微复杂一些的应用,咱们按照官方帮助文档的步骤,搭建一个基于 gin 的 blog 应用:
git clone https://github.com/tanhe123/mdblog.git
在 config
目录下,有一个配置文件 config.example.toml
,将其复制一份,并修更名称为 config.toml
,而后修改里面的几个配置:
go build # 会生成一个 mdblog 的二进制可执行程序 ./mdblog # 直接运行该可执行程序
若是遇到网络问题,可使用 https://goproxy.cn/ 加速。
访问 http://localhost:9000 预览效果
最后,本地测试没问题后,咱们须要发布到函数计算上,虽然这个示例比起上面两个代码层面要复杂不少,但部署流程是同样的,直接执行 fun deploy
而后一路回车便可。
本示例生成的临时域名为:https://14118335-1911504709953557.test.functioncompute.com
打开能够看到以下效果:
打开具体的一篇博客,效果以下:
咱们经过三个示例介绍了如何部署一个 go 应用到函数计算上,从这三个例子咱们能够发现,迁移一个 go 应用到函数计算是很是容易的,主要精力仍是放在了如何在本地配置并启动应用,而后部署只须要简单的经过 fun deploy
命令便可。部署完成后,便可享受到函数计算带来的弹性伸缩、按量付费、免运维等特性。
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,作最懂云原生开发者的技术圈。”