最近打算用go来把我的网站重新做一下,之前用的php,后来换成了nodeJs。现在想换个口味,试试go语言吧。
go和PHP这种脚本语言不一样,需要编译后,重启才能生效(不讨论扩展),因此引出了一个问题:如果我正在更新服务,在重启服务时,如果正好有用户发过来请求,就会出现错误,无法获得正确的数据;
因此,诞生了新的需求:在更新web服务时,不要断开网络请求,不要对服务的正常运行有中断。baidu\google\chatgpt都提供了一些库,但是都基本上没有更新了,无维护状态。另外,其他支持无缝更新的是一些很全面的框架,可是我仅仅想用gin来开发而已。不希望移步到其他框架,而且那些框架多是重启多个服务器上的实例,而我比较穷,只会将web服务部署在一台服务器上。
没有办法,只好自己动手,实现这个小功能了。
具体项目已经放在了github和gitee上,地址如下: