我正在开发一个应用程序,并且希望能够快速迭代版本(修复错误和添加功能等),因此实现此目的的明显途径是开发CI / CD工作流程。前端非常简单,只需用新的版本交换我的服务器所服务的资产,当人们访问该站点时,这些资产将得到服务。但是,我不确定如何更新由Express和Node驱动的生产后端服务器。在开发中,我可以轻松地重新启动服务器以反映新的更改,但是在生产环境中进行此操作可能会对那些在更新时使用我的服务的人造成不利影响。
总的来说,我的问题是将新的后端服务器更新推送到生产环境而不停机或中断使用的最佳方法是什么?
答案 0 :(得分:0)
理想情况下,您需要运行某种类型的进程集群。
此操作的第一步是确保您的应用程序完全无状态,并且可以同时运行Express服务器的同时副本以实现负载平衡。
如果确实需要维护某种状态,则可以使用基于内存的存储(例如Redis)在服务器实例之间共享状态。
一旦有了这样的体系结构,就可以以某种方式引导和限制流量,从而使群集中的每个服务器实例都有机会重新启动,而不会将任何流量定向到该实例。
假设您有4个实例在运行服务器。您将关闭实例1,并且您的负载平衡会将您的流量发送到2、3和4。
在这段时间内,您可以热重载或完全重载实例1。然后重新打开实例1,并用2、3和4重复该过程。
这种过程称为“滚动更新”