当前位置: 首页 > news >正文

哈尔滨seo服务seo网页优化工具

哈尔滨seo服务,seo网页优化工具,wap手机网站开发,iis 网站启动不了目录 前言 直接关闭的缺陷 平滑关闭的使用场景 例子 思悟项目: golang qq邮件发送验证码——思悟项目技术1 前言 平滑关闭(graceful shutdown)是指在停止服务时,能够让现有的连接、任务或者操作优雅地完成,而不是…

目录

前言

直接关闭的缺陷

平滑关闭的使用场景

例子


思悟项目:

golang qq邮件发送验证码——思悟项目技术1


前言

平滑关闭(graceful shutdown)是指在停止服务时,能够让现有的连接、任务或者操作优雅地完成,而不是直接中断。

平滑关闭的核心思想是在系统接收到停止信号后,不再接收新请求,只处理当前正在执行的请求,确保所有请求完成后,系统才正式关闭。

直接关闭的缺陷

比如说有一个web服务,我们要升级web服务,也就是版本迭代。但是在升级前,要先把服务关闭。我们可以直接包里终止程序,然后启动新的服务,但是这样做存在缺陷:

  • 当前的请求可能会被中断,导致数据丢失。
  • 未完成的后台任务会被强行中断。(用户体验感也会很差)
  • 数据库连接、文件等资源可能没有机会释放,导致潜在的资源泄漏。

平滑关闭的使用场景

  1. 项目版本迭代
  2. 服务重启维护
  3. 服务迁移
  4. 防止数据丢失

(例如王者荣耀更新时,正在打游戏的玩家不会更新,等到这局游戏结束后才会进行更新。)

例子

package mainimport ("context""errors""github.com/gin-gonic/gin""log""net/http""os""os/signal""syscall""time"
)var i = 0func main() {router := gin.Default()// 创建两个接口,一个延迟9秒钟返回信息router.GET("/a", func(c *gin.Context) {time.Sleep(9 * time.Second)i++c.JSON(http.StatusOK, gin.H{"num": i,})})// 一个立刻返回信息router.GET("/b", func(c *gin.Context) {i++c.JSON(http.StatusOK, gin.H{"num": i,})})// 创建一个 http.Serversrv := &http.Server{Addr:    ":8080",Handler: router,}// 在协程中启动服务器go func() {if err := srv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {log.Fatalf("listen: %s\n", err)}}()// 创建信号通道,监听 SIGINT 和 SIGTERMquit := make(chan os.Signal, 1)signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)// 阻塞直到收到信号si := <-quitlog.Println("Shutting down server...", si)// shutdown方法需要传入一个上下文参数,有两种写法:// 1.带超时,接收到信号之后,9秒之后无论当前请求是否完成都强制断开ctx, cancel := context.WithTimeout(context.Background(), 9*time.Second)// 2.不带超时,等待当前请求全部完成再断开// ctx, cancel = context.WithCancel(context.Background())defer cancel()// 调用 Shutdown 方法平滑关闭if err := srv.Shutdown(ctx); err != nil {// 当请求还在的时候强制断开了连接将产生错误,err不为空log.Fatal("Server forced to shutdown:", err)}log.Println("Server exiting")
}

步骤具体为:

  1. 捕获信号:使用 os/signal 包捕获终止信号。
  2. 创建 context:创建一个 context,当捕获到信号时触发 context 的取消,从而让正在进行的任务停止接收新的请求。
  3. 调用 Shutdown 方法:http.Server 提供了一个 Shutdown 方法,接受一个 context,它会让服务器停止接收新的请求,等待处理完当前正在进行的请求,等待时间由 context 决定。

参考:Golang 平滑重启之优雅关机

http://www.yidumall.com/news/107966.html

相关文章:

  • 用asp制作动态网站外贸营销平台
  • 网站开发可以在哪个操作系统在线代理浏览网址
  • 网站制作与网站建设实际报告推广百度百科
  • 平度好的建设网站网站开发框架
  • 网站建设教学工作总结东莞seo搜索
  • 网站建设哪家最好用如何推广自己的产品
  • 杭州定制网站建设关键词优化seo优化
  • 如何给国外网站做seo站长推广工具
  • wordpress新建用户优化设计六年级下册语文答案
  • 营销型网站模版线上推广费用
  • 网站建设色在线建站模板
  • 长沙装修公司口碑最好的是哪家保定关键词优化软件
  • 哪些网站是用iframe官方百度
  • 网站建设费怎么做会计分录上海培训机构排名
  • 广州建站网络公司百度热议怎么上首页
  • 珠海做公司网站的网上推广怎么做
  • 温州营销网站制作费用网络营销工具的特点
  • 深圳做网站比较好星乐seo网站关键词排名优化
  • 厦门企业制作网站鹤壁网站seo
  • 深圳企业网站推广项目推广平台排行榜
  • wordpress缓存首页不正常麒麟seo
  • 各大网站vip接口建设sem优化服务公司
  • 襄阳哪里有做网站的吉林seo关键词
  • 做app直接打开新闻网站排名优化公司哪家效果好
  • 设计型网站案例bt磁力搜索神器
  • 怎么分析网站建设的优缺点十大看免费行情的软件下载
  • 软件发展的四个阶段seo优化范畴
  • 品质好可以说品质什么抖音seo查询工具
  • 沈阳快速排名优化长沙关键词优化首选
  • 网站毕设代做百度网站收录提交