扫码订阅《 》或入驻星球,即可阅读文章!

GOLANG ROADMAP

阅读模式

  • 沉浸
  • 自动
  • 日常
首页
Go友会
  • 城市
  • 校园
Go学院
  • Go小课
  • Go小考
  • Go实战
  • 精品课
Go求职
  • 求职辅导🔥
  • Offer收割社群
  • 企业题库
  • 面试宝典
Go宝典
  • 在线宝典
  • B站精选
  • 推荐图书
  • 每日博文
Go仓库
实验区
  • Go周边
  • Go下载
  • Go月刊
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
author-avatar

GOLANG ROADMAP


首页
Go友会
  • 城市
  • 校园
Go学院
  • Go小课
  • Go小考
  • Go实战
  • 精品课
Go求职
  • 求职辅导🔥
  • Offer收割社群
  • 企业题库
  • 面试宝典
Go宝典
  • 在线宝典
  • B站精选
  • 推荐图书
  • 每日博文
Go仓库
实验区
  • Go周边
  • Go下载
  • Go月刊
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
  • beego简介

  • beego安装升级

  • 快速入门

  • beego的MVC架构-介绍

  • beego的MVC架构-model设计

  • beego的MVC架构-view设计

  • beego的MVC架构-controller设置

  • beego的模块设计

    • beego的模块设计
    • session模块
    • gracemokuai
    • cache模块
    • logs模块
    • httplib模块
    • toolbox模块
    • context模块
    • config模块
    • i18n模块
  • beego高级编程

  • 应用部署

  • beego第三方库

  • 应用例子

  • beego实用库

  • 其他

  • FAQ

扫码订阅《 》或入驻星球,即可阅读文章!

gracemokuai


beego官网

热升级是什么呢?了解 nginx 的同学都知道,nginx 是支持热升级的,可以用老进程服务先前链接的链接,使用新进程服务新的链接,即在不停止服务的情况下完成系统的升级与运行参数修改。那么热升级和热编译是不同的概念,热编译是通过监控文件的变化重新编译,然后重启进程,例如 bee run 就是这样的工具

# 热升级有必要吗?

很多人认为 HTTP 的应用有必要支持热升级吗?那么我可以很负责的说非常有必要,不中断服务始终是我们所追求的目标,虽然很多人说可能服务器会坏掉等等,这个是属于高可用的设计范畴,不要搞混了,这个是可预知的问题,所以我们需要避免这样的升级带来的用户不可用。你还在为以前升级搞到凌晨升级而烦恼嘛?那么现在就赶紧拥抱热升级吧。

# grace 模块

grace 模块是 beego 新增的一个独立支持热重启的模块。主要的思路来源于: http://grisha.org/blog/2014/06/03/graceful-restart-in-golang/

# 如何使用热升级

 import(
   "log"
    "net/http"
    "os"
    "strconv"
   "github.com/astaxie/beego/grace"
 )
  func handler(w http.ResponseWriter, r *http.Request) {
      w.Write([]byte("WORLD!"))
      w.Write([]byte("ospid:" + strconv.Itoa(os.Getpid())))
  }
  func main() {
      mux := http.NewServeMux()
      mux.HandleFunc("/hello", handler)
      err := grace.ListenAndServe("localhost:8080", mux)
      if err != nil {
           log.Println(err)
        }
      log.Println("Server on 8080 stopped")
         os.Exit(0)
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

打开两个终端

一个终端输入:ps -ef|grep 应用名

一个终端输入请求:curl "http://127.0.0.1:8080/hello"

热升级

kill -HUP 进程 ID

打开一个终端输入请求:curl "http://127.0.0.1:8080/hello?sleep=0"

  • 热升级有必要吗?
  • grace 模块
  • 如何使用热升级