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

时间:2018-07-04 08:46:25

标签: architecture synchronization anti-patterns

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

1 个答案:

答案 0 :(得分:0)

您可以使用任何介质来存储您的数据(无论哪种方式,它最终都将存储在文件系统中)。您可能应该问自己的主要问题是您想拥有什么功能:扩展原始文件可能会遇到很大的问题,可能难以实现安全性层(例如,基于角色的访问)等。

RabbitMQ似乎很好地解决了您的情况,因为它提供了通用的排队机制以及持久性和可伸缩性。我不知道您的项目的详细信息,但是我建议您考虑一下Redis的类似功能以及在“队列”中修改对象的功能。

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