程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> 一分鐘實現平滑重啟Golang HTTP服務

一分鐘實現平滑重啟Golang HTTP服務

編輯:PHP基礎知識
 

Golang是一種與C語言類似的編譯型語言,這意味著如果我們修改了代碼就需要重新編譯部署,但在很多大型系統中停止服務就意味著損失大筆的收入,破壞完美的用戶體驗。goGrace就是為解決這個問題而開發的。

我們通常會這樣實現一個Golang的HTTP服務
 

package main

import (
"fmt"
"log"
"net/http"
"os"
"strconv"
)

func main() {

http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "Welcome to the home page!"+strconv.Itoa(os.Getpid()))
})

err := http.ListenAndServe(":6086", nil)
if err != nil {
log.Println(err)
}
}
 

goGrace提供了非常簡單的方式使您的HTTP服務幾乎不需要修改就能支持平滑重啟,您需要做的只有如下三步:
Step1:
在命令行執行goGrace安裝命令
# go get github.com/pantsing/gograce

package main

import (
"fmt"
"log"
"net/http"
"strconv"

"github.com/pantsing/gograce/ghttp" // Step2: 導入goGrace的Pacekage
)

func main() {
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "Welcome to the home page!"+strconv.Itoa(os.Getpid()))
})


// Step3: 是的,將http改為ghttp
err := ghttp.ListenAndServe(":6086", nil)
if err != nil {
log.Println(err)
}
}
 

 

It’s so easy, right?! 你現在就可以通過向服務進程發送SIGHUP信號平滑重啟服務了,或者發送SIGQUIT信號平滑退出。當收到退出信號後默認的等待請求執行完畢關閉connection退出的時間是60秒,您可以在服務啟動前通過ghttp.SetListenerCloseTimeout(second int64)函數設置等待時間。或者如果您實例化了GraceServer對象,也可以直接設置其ListenerCloseTimeout屬性。

目前goGrace只支持HTTP服務,之後還將會擴展到TCP服務。歡迎關注goGrace

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved