PM2 NodeJS 集群——使用 pm2 时我应该考虑同步吗

PM2 NodeJS cluster - Should I consider synchronizing when using pm2

我的快递服务器做了一个非常简单的工作——将请求 url 保存到一个文件中(通过 fs.appendFile)。

我想它在不使用 pm2 时工作正常,因为它只有一个进程,所以没有其他 process/thread 同时保存同一个文件。

但是在使用pm2的时候,不知道会不会出现两个进程同时写同一个文件的情况?谢谢。

是的,当多个进程同时 writing/appending 同一个文件时,它可能会混乱。那么最好的方法就是只使用一个进程来写文件,或者你必须同步它们

When you use pm2 on cluster mode, request routing will happen using Round Robin algorithm. That means the cluster master accepts all the incoming connections and routes them to the child processes (one request to one child process).

因此,一个请求将被路由到一个子进程,而同一请求将不会被另一个进程处理。

对于您的上述情况,当您收到来自两个不同客户端的两个不同请求时,它们将由两个不同的进程处理。

只要您有创建唯一文件名的逻辑,即使同时处理请求,您也不会遇到任何问题。

只有当您尝试通过两个不同的进程使用相同的文件名写入文件时,您才会遇到问题。

如果您使用不同的文件名从不同的客户端写入不同的文件,那将不是问题。

注意:由于一个客户端的请求会被一个进程处理,所以两个或多个进程不会处理同一个请求,也不会写同一个文件两次.

如果您使用相同的文件名从不同的客户端写入不同的文件,就会出现此问题。

希望你明白:-)