我们有一个接受用户上传文件的应用程序。
每当我们部署应用程序时,我们都会停止应用程序进程并再次启动它。所有冗长的处理都是在我们实际停止应用程序之前完成的,因此实际的停机时间相当短(几秒钟)。
但是,当停止进程时,我们也会终止对应用程序的事件请求(即文件上传)。
处理这个问题的好方法是什么?我有几个想法:
- 将文件上传处理程序提取到单独的服务中?
- 使重启更加“智能”,并告诉进程不要接受任何新请求,并等待当前事件的请求停止后再终止进程
您刚刚列出了我能想到的三个解决方案中的两个:-)第三种是具有智能负载均衡器的多层部署,并且部署过程足够智能,可以知道要重新启动哪个 Node 以及何时重新启动。如果它是一个较小规模的应用程序,没有重大影响,我会使用在我看来更简单的版本:跟踪事件下载并在重新启动时监视它。只维护一个应用程序,你知道吗?但它使上传逻辑变得更加复杂。
但是,如果上传的内容足够重要(而且看起来确实如此),那么将其提取到单独的服务中可能是值得的。不仅是因为新的部署,而且还可以保护您免受意外崩溃和关闭的影响。然后,您必须决定一种方式来传达服务中已完成的上传,并处理客户端响应等。
在我看来,维护和部署一个应用程序比两个应用程序更简单,但当然也不太健壮。
所以答案实际上取决于您的需求和资源,对吧?
我是一名优秀的程序员,十分优秀!