教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang 服务器零停机热重启原理详解

golang 服务器零停机热重启原理详解

发布时间:2022-01-17   编辑:jiaochengji.com
教程集为您提供golang 服务器零停机热重启原理详解等资源,欢迎您收藏本站,我们将为您提供最新的golang 服务器零停机热重启原理详解资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg><h4>关于TCP服务的实现过程</h4>

首先需要了解tcp服务器,socker机制,这些和语言无关。

一个简单的tcp server实现过程:
创建socket资源,socker1 ,是一个打开的文件描述符。
bind绑定到Hosu, Port。
开始监听listen。

经过以上过程,一个tcp服务就搭建好了。

客户端发起tcp连接请求
操作系统与其完成三次握手阶段,此连接就算建立了,操作系统根据tcp协议中的端口号标识将此连接放入指定的 backlog 队列中。

tcp server 从 backlog 队列中 accept 请求,也就是消费此队列,那么,它该从哪个 backlog 中消费呢,所以 accept 操作时需要带上自己的 socket1 。
被成功 accept 的请求才算和 tcp server 建立了连接,在此之前只是完成了三次握手。

于是 client 和 server 之间开始 read & write 。

于是,只要你得到了 socket1 ,你就可以冒充 tcp server ,也就可以 accept 客户端,并与之通讯。

<h4>
关于fork子进程</h4>

我们还知道 fork 出的子进程会继承父进程的 socket 资源,于是便有了通常的操作:产生多个子进程来并行接受请求以达到提高并发能力的效果。

但是fork出的子进程是继承了父进程的上下文,和父进程用有相同的程序和代码,然而我们希望子进程加载新的程序从而实现热重启,所以fork操作显然无法满足需求。

<h4>
关于exec系统调用</h4>

到此这篇关于“golang 服务器零停机热重启原理详解”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang 服务器零停机热重启原理详解
笔记本电脑散热不好什么原因,笔记本散热差的解决办法
(图)cwRsync server服务启动失败的解决方法
Golang热更新原理
mysql数据库表损坏的解决办法
支持多语言的微服务框架Tars-Go
电脑频繁重启怎么办 电脑频繁重启解决办法
sysservers 中找不到服务器,请执行 sp_addlinkedserver 将该服务器添加到sysserver 的解决方法
golang debug 配置_golang如何优雅的实现重启服务(fvbock/endless)
还在担心服务挂掉?Sentinel Go 让服务稳如磐石

[关闭]
~ ~