玩命狂奔的间隙,莫忘记抬头看看前路的星光

0%

发布了一个单台服务器web服务无缝热更新的项目:GoSmoothServe

最近打算用go来把我的网站重新做一下,之前用的php,后来换成了nodeJs。现在想换个口味,试试go语言吧。

go和PHP这种脚本语言不一样,需要编译后,重启才能生效(不讨论扩展),因此引出了一个问题:如果我正在更新服务,在重启服务时,如果正好有用户发过来请求,就会出现错误,无法获得正确的数据;

因此,诞生了新的需求:在更新web服务时,不要断开网络请求,不要对服务的正常运行有中断。baidu\google\chatgpt都提供了一些库,但是都基本上没有更新了,无维护状态。另外,其他支持无缝更新的是一些很全面的框架,可是我仅仅想用gin来开发而已。不希望移步到其他框架,而且那些框架多是重启多个服务器上的实例,而我比较穷,只会将web服务部署在一台服务器上。

没有办法,只好自己动手,实现这个小功能了。
具体项目已经放在了github和gitee上,地址如下:

简单介绍下,有需要的朋友可以直接点上面的链接过去(如果发现问题请提bug或者帮忙修复吧):

GoSmoothServe介绍

GoSmoothServe 是一个用于为单台服务器上Web服务提供无缝热更的反向代理服务,可以平滑重启和停止,不丢失请求。

  • 它可以实现在更新服务时无需重启,同时保持现有连接的连续性,从而确保用户无感知地享受到服务的稳定和持续性。

  • 通过 GoSmoothServe,您可以轻松管理和扩展您的 Web 服务,提供高效的负载均衡和无缝的更新体验。

  • 如果没有特别的需要,可以直接使用GoSmoothServe代替nginx 的web代理服务。

    不过如果有防火墙需求,还是建议先用nginx在前面,然后将请求传递到GoSmoothServe。GoSmoothServe仅关注无缝热更和平滑停止和重启。