首页 > 解决方案 > 通过文件系统窗口跨多台机器同步多个进程

问题描述

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

标签: architecturesynchronizationanti-patterns

解决方案


您可以使用任何介质来存储您的数据(无论如何,它将以一种或另一种方式最终存储在文件系统中)。您可能应该问自己的主要问题是您想要手头有什么功能:缩放原始文件可能很成问题,可能难以实现安全层(例如基于角色的访问)等。

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

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


推荐阅读