我正在寻找从头开始构建全局应用程序,可以对用户进行透明更新和扩展。
到目前为止,该架构非常简单,应用程序的每个部分都有自己的进程并与其他槽式插槽通信。
通过这种方式,我可以为应用程序的每个部分生成所需的实例,并根据我的需要将它们分布到全球各地。
在系统的前面,我将有一个负载均衡器,它将用户路由到最近的实例,当产生新代码时,我的实例将使用新代码生成新进程并将新请求路由到它并且优雅地关闭。
非常感谢您的任何建议。
编辑:
问题是:在将节点部署到多个实例时,实现零停机的最佳(也是最简单)解决方案是什么?
关于应用:
https://github.com/Raynos/boot用于“套接字”连接, http请求的http, mongo for database
我正在尝试的解决方案:
https://www.npmjs.org/package/thalassa(管理haproxy配置文件和应用实例),如果您不知道,请观看此演讲:https://www.youtube.com/watch?v=k6QkNt4hZWQ并注意crowsnest正在被https://github.com/PearsonEducation/thalassa-consul <替换/ p>
答案 0 :(得分:1)
只有在旧节点和新节点之间共享的数据兼容时,才能实现零停机时间的部署。
因此,如果您更改了结构,则必须构建一个中间版本,它可以在不使用新结构的情况下处理旧的和新的数据结构,直到您用该中间版本替换所有节点。然后推出新版本。
可以使用您的负载均衡器(以及在节点上所有会话到期之前的宽限时间)将节点输入和停止生产(对您的应用程序不够了解)。