如何在没有冲突的情况下从服务列表中访问一组文件夹
How access a set of folders from a list of services without a conflict
我在不同服务器上有一组服务 运行,它们都访问共享资源,例如;包含需要某些处理的视频的文件夹列表。
我想实现一些锁定机制来防止服务同时访问同一个文件夹,到目前为止,我的想法是在文件夹中创建一个文本文件作为 "in-folder-lock" 并检查该文件之前是否存在处理其中的视频文件。
我很确定这个测试在服务寻找要处理的文件夹的真实生产环境中不会很好。
有什么想法吗?
感谢任何帮助,提前致谢。
你可以使用一些分布式锁定机制,例如Redis Redlock
or Consul lock
,但是如果你有多个服务器争夺这个共享文件夹,你为什么不考虑将文件分片在多个文件夹中(使用一致的哈希算法)然后让您的服务器(使用相同的一致性哈希算法)只为它们的专用文件夹处理文件?这样您就可以并行处理,而不是让所有 N-1 个服务器等待第 N 个服务器处理您拥有的单个文件夹中的所有内容。
我在不同服务器上有一组服务 运行,它们都访问共享资源,例如;包含需要某些处理的视频的文件夹列表。
我想实现一些锁定机制来防止服务同时访问同一个文件夹,到目前为止,我的想法是在文件夹中创建一个文本文件作为 "in-folder-lock" 并检查该文件之前是否存在处理其中的视频文件。
我很确定这个测试在服务寻找要处理的文件夹的真实生产环境中不会很好。
有什么想法吗?
感谢任何帮助,提前致谢。
你可以使用一些分布式锁定机制,例如Redis Redlock
or Consul lock
,但是如果你有多个服务器争夺这个共享文件夹,你为什么不考虑将文件分片在多个文件夹中(使用一致的哈希算法)然后让您的服务器(使用相同的一致性哈希算法)只为它们的专用文件夹处理文件?这样您就可以并行处理,而不是让所有 N-1 个服务器等待第 N 个服务器处理您拥有的单个文件夹中的所有内容。