首先介紹下在本文出現的幾個比較重要的概念: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 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的技術圈。」