幾個不錯的golang 應用升級以及平滑啟動包


在日常的應用開發中我們我們很多時候都需要處理軟件的升級以及滾動式升級,基於.net 應用clickonce 以及微軟的updte框架都
是一個不錯的選擇對於nodejs 的electron我們有electron-updater ,同時好多桌面應用的開發也會設計自己的更新程序,以下是
關於golang 應用升級的幾個不錯的包

幾個參考

說明

從安全以及規范角度來說使用tuf 框架的實現會比較好,以上介紹的幾個都是不錯的選擇,應該還會有其他的選擇,以上幾個是目前發現
幾個不錯的選擇,實際上設計一個完全可以自動升級以及平滑重啟的服務是有好多知識點,需要很好的處理系統的信號以及對於業務關聯操
作的評估。以上中overseer 使用相對比較簡單,一個參考demo
main.go

 
package main
import (
    "fmt"
    "log"
    "net/http"
    "time"
    "github.com/jpillora/overseer"
    "github.com/jpillora/overseer/fetcher"
)
//create another main() to run the overseer process
//and then convert your old main() into a 'prog(state)'
func main() {
    overseer.Run(overseer.Config{
        Program: prog,
        Address: ":3000",
        Fetcher: &fetcher.HTTP{
            URL:      "http://localhost:8080/binaries/myapp",
            Interval: 1 * time.Second,
        },
        Debug: true,
    })
}
//prog(state) runs in a child process
func prog(state overseer.State) {
    log.Printf("app (%s) listening...", state.ID)
    http.Handle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, " demo app app (%s) says hello\n", state.ID)
    }))
    http.Serve(state.Listener, nil)
}

參考資料

https://theupdateframework.com/
http://www.daemonology.net/bsdiff/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM