溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么輕松搭建基于Serverless的Go應用

發布時間:2021-12-13 10:45:16 來源:億速云 閱讀:201 作者:柒染 欄目:云計算

怎么輕松搭建基于Serverless的Go應用,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

首先介紹下在本文出現的幾個比較重要的概念:

函數計算(Function Compute): 函數計算是一個事件驅動的服務,通過函數計算,用戶無需管理服務器等運行情況,只需編寫代碼并上傳。函數計算準備計算資源,并以彈性伸縮的方式運行用戶代碼,而用戶只需根據實際代碼運行所消耗的資源進行付費。

Fun: Fun 是一個用于支持 Serverless 應用部署的工具,能幫助您便捷地管理函數計算、API 網關、日志服務等資源。它通過一個資源配置文件(template.yml),協助您進行開發、構建、部署操作。Fun 的更多文檔 參考。

備注: 文中介紹的技巧需要 Fun 版本大于等于 3.6.4。

怎么輕松搭建基于Serverless的Go應用

效果預覽

本文涉及到的兩個應用示例部署后的鏈接,點擊預覽效果:

  1. Gin 簡單示例: http://gentest.functioncompute.com/ping

  2. Beego 簡單示例: http://beegotest.functioncompute.com

  3. Gin 博客網站示例: http://mdblog.functioncompute.com

環境準備

首先按照 Fun 的 安裝文檔里介紹的方法將 Fun 安裝到本機。
PS: 本文介紹的方法,不需要安裝 Docker,僅僅安裝 Fun 即可,最簡單的方式就是直接下載可執行的二進制文件。

安裝完成后,可以執行 fun —version 檢查 Fun 是否安裝成功。

示例一:遷移 gin 示例到函數計算

首先我們按照 官方示例的步驟,安裝 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")
}

使用下面的命令啟動應用:

go run example.go

然后訪問 localhost:8080/ping,可以看到返回結果如下:

怎么輕松搭建基于Serverless的Go應用

最后直接使用 fun deploy 即可部署。

fun deploy

我們這里詳細介紹下第一次部署流程:

  1. Fun 首先檢測到這不是一個 Fun 項目,會提示是否自動創建(按下回車或者輸入 y 即可)

  2. 然后 Fun 又會嘗試去檢測應用的啟動端口(函數計算要求必須啟動在 0.0.0.0:9000),如果不匹配,則會協助修改:
    怎么輕松搭建基于Serverless的Go應用

  3. 按下回車,Fun 會自動檢測構建生成的可執行程序,如果檢測不到,則提示用戶使用指定命令進行編譯
    怎么輕松搭建基于Serverless的Go應用

  4. 按下回車后,就會自動進行編譯了,編譯完成后,會自動生成 Fun 所需要的 bootstrap 文件以及 template.yml 文件,然后會進行自動部署操作,在部署前,會首先列出本次部署帶來的變更:
    怎么輕松搭建基于Serverless的Go應用

  5. 如果確認上面的變更沒有問題,再按下回車即可開始資源的部署流程。
    怎么輕松搭建基于Serverless的Go應用

部署完成后,可以看到會自動生成一個可以測試訪問的臨時域名 14118335-1911504709953557.test.functioncompute.com,通過這個臨時域名,可以用于開發、測試時預覽應用。

使用該臨時域名,訪問應用的 API 接口 14118335-1911504709953557.test.functioncompute.com/ping  測試,效果如下:

怎么輕松搭建基于Serverless的Go應用

備注:臨時域名僅僅用作演示以及開發,是有時效的,如果用作生產,請綁定已經備案的域名。

示例二:遷移 beego 示例到函數計算

首先我們按照 官方示例的步驟,搭建 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 搭建的博客應用到函數計算

示例三我們選擇一個稍微復雜一些的應用,我們按照 官方幫助文檔的步驟,搭建一個基于 gin 的 blog 應用:

1. 克隆項目到本地(直接下載 zip 包也可以):
git clone https://github.com/tanhe123/mdblog.git
2. 修改配置文件

config 目錄下,有一個配置文件 config.example.toml,將其復制一份,并修改名稱為 config.toml,然后修改里面的幾個配置:

  • 將 port = 8091 修改為 port = 9000,表示應用啟動時,啟動在 9000 端口。

  • 將 debug = true 修改為 debug = false,表示使用生產版本

  • 將 dir = “logs” 修改為 dir = “/tmp”,表示日志寫到 /tmp 目錄(不掛載 NAS 的情況下,函數計算只有該目錄是可以寫的)

3. 編譯并運行應用
go build # 會生成一個 mdblog 的二進制可執行程序
./mdblog # 直接運行該可執行程序

如果遇到網絡問題,可以使用 https://goproxy.cn/ 加速。

訪問 http://localhost:9000 預覽效果

4. 部署

最后,本地測試沒問題后,我們需要發布到函數計算上,雖然這個示例比起上面兩個代碼層面要復雜很多,但部署流程是一樣的,直接執行 fun deploy 然后一路回車即可。

本示例生成的臨時域名為: https://14118335-1911504709953557.test.functioncompute.com

打開可以看到如下效果:

怎么輕松搭建基于Serverless的Go應用

打開具體的一篇博客,效果如下:

怎么輕松搭建基于Serverless的Go應用

關于怎么輕松搭建基于Serverless的Go應用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女