Architecture 通过文件系统窗口跨多台计算机同步多个进程

Architecture 通过文件系统窗口跨多台计算机同步多个进程,architecture,synchronization,anti-patterns,Architecture,Synchronization,Anti Patterns,我正在编写一个应用程序,它通过网络接收一些包,然后一些客户端从这个应用程序接收这些包。现在,我想让架构具有可伸缩性。软件包临时存储在文件系统中,直到消费者应用程序收到它们为止。如果我将准备发送的包存储在某个文件夹中,我需要某种方法来区分正在处理的包和仍在等待处理的包。其想法是在包文件夹中创建特殊的锁定文件,并将其锁定,直到包传输完成(完成后删除此锁定文件和包文件夹本身)。另一种想法是使用某种共享资源(例如,消息队列或数据库)。问题是使用文件系统进行这种进程间通信是否足够安全?您可以使用任何介质来

我正在编写一个应用程序,它通过网络接收一些包,然后一些客户端从这个应用程序接收这些包。现在,我想让架构具有可伸缩性。软件包临时存储在文件系统中,直到消费者应用程序收到它们为止。如果我将准备发送的包存储在某个文件夹中,我需要某种方法来区分正在处理的包和仍在等待处理的包。其想法是在包文件夹中创建特殊的锁定文件,并将其锁定,直到包传输完成(完成后删除此锁定文件和包文件夹本身)。另一种想法是使用某种共享资源(例如,消息队列或数据库)。问题是使用文件系统进行这种进程间通信是否足够安全?

您可以使用任何介质来存储数据(不管怎样,它最终会以某种方式出现在文件系统中)。您可能应该问自己的主要问题是您希望手头有什么功能:扩展原始文件可能会有很大问题,实现安全层(例如基于角色的访问)可能会很困难,等等

RabbitMQ似乎很好地解决了您的问题,因为它提供了多功能的排队机制以及持久性和可伸缩性。我不知道您的项目的细节,但我建议您查看Redis,了解类似的功能以及修改“队列”中对象的能力

无论如何,基于文件的存储可能是一个好主意,可以尝试(创建MVP),但我建议以后不要使用它