轻松搭建基于Serverless的Go应用(Gin、Beego 举例)
首先介紹下在本文出現(xiàn)的幾個(gè)比較重要的概念:
函數(shù)計(jì)算(Function Compute): 函數(shù)計(jì)算是一個(gè)事件驅(qū)動(dòng)的服務(wù),通過函數(shù)計(jì)算,用戶無需管理服務(wù)器等運(yùn)行情況,只需編寫代碼并上傳。函數(shù)計(jì)算準(zhǔn)備計(jì)算資源,并以彈性伸縮的方式運(yùn)行用戶代碼,而用戶只需根據(jù)實(shí)際代碼運(yùn)行所消耗的資源進(jìn)行付費(fèi)。函數(shù)計(jì)算更多信息?參考。
Fun: Fun 是一個(gè)用于支持 Serverless 應(yīng)用部署的工具,能幫助您便捷地管理函數(shù)計(jì)算、API 網(wǎng)關(guān)、日志服務(wù)等資源。它通過一個(gè)資源配置文件(template.yml),協(xié)助您進(jìn)行開發(fā)、構(gòu)建、部署操作。Fun 的更多文檔?參考。
備注: 本文介紹的技巧需要 Fun 版本大于等于 3.6.4。
轉(zhuǎn)存失敗重新上傳取消
效果預(yù)覽
本文涉及到的兩個(gè)應(yīng)用示例部署后的鏈接,點(diǎn)擊預(yù)覽效果:
環(huán)境準(zhǔn)備
首先按照 Fun 的安裝文檔里介紹的方法將 Fun 安裝到本機(jī)。
PS: 本文介紹的方法,不需要安裝 Docker,僅僅安裝 Fun 即可,最簡(jiǎn)單的方式就是直接下載可執(zhí)行的二進(jìn)制文件。
安裝完成后,可以執(zhí)行 fun --version 檢查 Fun 是否安裝成功。
示例一:遷移 gin 示例到函數(shù)計(jì)算
首先我們按照官方示例的步驟,安裝 gin(需要 golang 版本在 1.11+ 以上):
go get -u github.com/gin-gonic/gin創(chuàng)建一個(gè) example.go,內(nèi)容填寫如下:
package mainimport "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") }使用下面的命令啟動(dòng)應(yīng)用:
go run example.go然后訪問?localhost:8080/ping,可以看到返回結(jié)果如下:
最后直接使用 fun deploy 即可部署。
fun deploy我們這里詳細(xì)介紹下第一次部署流程:
部署完成后,可以看到會(huì)自動(dòng)生成一個(gè)可以測(cè)試訪問的臨時(shí)域名?14118335-1911504709953557.test.functioncompute.com,通過這個(gè)臨時(shí)域名,可以用于開發(fā)、測(cè)試時(shí)預(yù)覽應(yīng)用。
使用該臨時(shí)域名,訪問應(yīng)用的 API 接口?14118335-1911504709953557.test.functioncompute.com/ping?測(cè)試,效果如下:
備注:臨時(shí)域名僅僅用作演示以及開發(fā),是有時(shí)效的,如果用作生產(chǎn),請(qǐng)綁定已經(jīng)備案的域名。
示例二:遷移 beego 示例到函數(shù)計(jì)算
首先我們按照官方示例的步驟,搭建 beego 應(yīng)用:
go get github.com/astaxie/beego創(chuàng)建一個(gè) hello.go,內(nèi)容填寫如下:
package mainimport "github.com/astaxie/beego"func main(){beego.Run() }使用下面的命令啟動(dòng)應(yīng)用:
go run hello.go然后訪問?localhost:8080,可以看到返回結(jié)果。
最后部署,直接使用 fun deploy 經(jīng)歷類似示例一的流程后,就可以通過 Fun 返回的臨時(shí)域名預(yù)覽應(yīng)用了。
示例三:遷移 gin 搭建的博客應(yīng)用到函數(shù)計(jì)算
示例三我們選擇一個(gè)稍微復(fù)雜一些的應(yīng)用,我們按照官方幫助文檔的步驟,搭建一個(gè)基于 gin 的 blog 應(yīng)用:
1. 克隆項(xiàng)目到本地(直接下載 zip 包也可以):
git clone https://github.com/tanhe123/mdblog.git2. 修改配置文件
在?config?目錄下,有一個(gè)配置文件?config.example.toml,將其復(fù)制一份,并修改名稱為?config.toml,然后修改里面的幾個(gè)配置:
- 將 port = 8091 修改為 port = 9000,表示應(yīng)用啟動(dòng)時(shí),啟動(dòng)在 9000 端口。
- 將 debug = true 修改為 debug = false,表示使用生產(chǎn)版本
- 將 dir = "logs" 修改為 dir = "/tmp",表示日志寫到 /tmp 目錄(不掛載 NAS 的情況下,函數(shù)計(jì)算只有該目錄是可以寫的)
3. 編譯并運(yùn)行應(yīng)用
go build # 會(huì)生成一個(gè) mdblog 的二進(jìn)制可執(zhí)行程序 ./mdblog # 直接運(yùn)行該可執(zhí)行程序如果遇到網(wǎng)絡(luò)問題,可以使用?https://goproxy.cn/?加速。
訪問?http://localhost:9000?預(yù)覽效果
4. 部署
最后,本地測(cè)試沒問題后,我們需要發(fā)布到函數(shù)計(jì)算上,雖然這個(gè)示例比起上面兩個(gè)代碼層面要復(fù)雜很多,但部署流程是一樣的,直接執(zhí)行?fun deploy?然后一路回車即可。
本示例生成的臨時(shí)域名為:https://14118335-1911504709953557.test.functioncompute.com
打開可以看到如下效果:
打開具體的一篇博客,效果如下:
總結(jié)
我們通過三個(gè)示例介紹了如何部署一個(gè) go 應(yīng)用到函數(shù)計(jì)算上,從這三個(gè)例子我們可以發(fā)現(xiàn),遷移一個(gè) go 應(yīng)用到函數(shù)計(jì)算是非常容易的,主要精力還是放在了如何在本地配置并啟動(dòng)應(yīng)用,然后部署只需要簡(jiǎn)單的通過?fun deploy?命令即可。部署完成后,即可享受到函數(shù)計(jì)算帶來的彈性伸縮、按量付費(fèi)、免運(yùn)維等特性。
更多參考
“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢(shì)、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開發(fā)者的技術(shù)圈?!?/p>
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的轻松搭建基于Serverless的Go应用(Gin、Beego 举例)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SaaS模式云数据仓库:持续保护云上数据
- 下一篇: 对话阿里云总裁张建锋:解密阿里云再生长的