HTTP服务平滑重启

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服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值