golang 服务器优雅的停机

这次用中文写,表达得清晰些。

最近 看了几个程序,结合自己的思考,给出golang 服务其 优雅停机的处理方式。这里以http服务器为对象描述。

这里的"优雅",表示服务器有计划,按部就班的退出。具体表现在,友好地终止与客户端的连接;关闭其他活动的进程,线程,协成;完成资源的释放;完整的log。

1. 分类

服务器停机可以分两类:服务器主动停机 和 服务器被动停机。

1)服务器主动停机,即在没有外界影响(客户端调用)的情况下,服务器自发的停止。定时停机,以及Idle超时停机是常见的情形。下面 我主要描述Idle超时停机来描述。

2)服务器被动停机,即在外界条件影响下(外界命令控制,外界函数调用),服务器停止。 在这里讨论两张情况:client request 和 函数调用。

2. 下面以golang socket 服务器为例子描述两种停机情形。

1)服务器主动停机-Idle超时

2) 服务器被动停机

2.1) client sending requet

2.2) Stop()函数显式调用

时间: 2024-07-30 13:44:37

golang 服务器优雅的停机的相关文章

Golang 服务器返回公网地址

gitee地址: https://gitee.com/wang_li/ReturnOutIP 代码 package main import ( "flag" "fmt" "log" "net/http" "os" "strings" "time" ) var ( h bool LitenAddr string ListenRoute string ) func ini

如何保证windows服务器的安全

随着时代在发展,身处于信息时代的我们对windows服务器的安全问题越来越引起重视,不管是个人还是企业,对服务器安全尤为关注.而windows服务器安全如何保障相信对大部分人还是陌生的,下面将科普下怎样保证windows服务器安全,希望能够有所帮助. 一.增强个人信息安全知识 不管是作为个人还是一名技术人员,对维护自身信息安全和保障企业信息安全都是要引起重视,在面临一些紧急境况时,自身的安全知识的缺乏会使得我们不知所措,所以在遇到此类突发情况时,学习信息安全技能尤为重要. 二.运用PKI保障Wi

创建超小的Golang docker 镜像

原文: http://colobu.com/2015/10/12/create-minimal-golang-docker-images/ 本文对于创建超小的镜像非常有用 Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.正如DockerPool在免费Docker电子书Docker -- 从入门到实践中这样提到的: 作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具

使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?(非常稳定、捕获所有异常、非常适合从头开始,但大公司已经有现成的C++框架、所以不会使用)

使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?和C Socket服务器比起来有什么优劣?可行性怎么样? 从2013年起,经朋友推荐开始用Golang编写游戏登陆服务器, 配合C++做第三方平台验证. 到编写独立工具导表工具GitHub - davyxu/tabtoy: 跨平台的高性能便捷电子表格导出器. 以及网络库GitHub - davyxu/cellnet: 简单,方便,高效的Go语言的游戏服务器底层. 最终使用这些工具及库编写整个游戏服务器框架, 我的感受是很不错的 细节看来,

Python与Golang对比

一:前言 刚看了一篇软文,说什么“才华是改变人生最有效的途径”,反正呢,大体就是科技进步,要想一直在车上,就得不断的学习,刚好最近也准备学习Golang,最近火的不能在火了吧,刚好也有些Python基础,所以就想在学习Golang的同时,对比着Python,查漏补缺下Python的知识,我终相信语言是相同的,只是个别语法不一样,翻看以前写的Python笔记,现在回过头看看,挺潦草的哈,所以也准备借这个机会,把Python的笔记该重构的重构,该补充的补充,同时记录下Golang的学习历程. 二:特

LNMP动静分离&&memcache缓存服务器

博文大纲:一.MemCache简介 1.协议 2.事件处理 3.存储方式 4.通信分布式 5.memcached的应用场景 6.memcached应用中的工作流程 7.memcached的一致性Hash算法二.部署LNMP动静分离&&memcache缓存服务器 1.环境准备 2.部署Nginx服务器 3.部署PHP服务器 4.部署MySQL数据库 5.部署Memcached服务器 6.部署memcache客户端 7.使用 memcache 实现 session 共享 8.测试memcach

部署LNMP动静分离并搭建memcache缓存服务器

一.MemCache简介MemCache 是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度. MemCaChe 是一个存储键值对的 HashMap,在内存中对任意的数据(比如字符串.对象等)所使用的 key-value 存储,数据可以来自数据库调用.API调用,或者页面渲染的结果.MemCache 设计理念就是小而强大,它简单的设计促进了快速部署.易于开发并解决面对大规

OpenLDAP学习笔记(基于OpenLDAP-2.4.x)

1.1.什么是目录服务(Directory Services)? 目录是一个特殊的数据库,专门用于搜索和浏览,另外也支持基本的查询和更新功能. 目录是一个为查询.浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样.目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理.回滚等复杂功能,不适于存储修改频繁的数据.所以目录天生是用来查询的,就好象它的名字一样. 基于X.500 目录访问协议,以及基于X.500基础发展而来的LD

Unity官方公布热更新方案性能对比

孙广东  2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda ?  什么是热更新 ?  为何要热更新 ?  如何在iOS 上对Unity 应用进行热更新 ?  支持Unity iOS 热更新的各种Lua 插件的对比 什么是热更新 ? 广义定义 ? 无需关闭服务器,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码. ? 狭义定义( iOS热更新) ? 无需将代码重新打包提交至AppStore,即可更新客户端的执行代码,即