我们云中有数百台服务器。有一个脚本可以随时由这些服务器调用。我必须确保在任何时候只有一台服务器正在运行脚本。虽然一台服务器获得了对脚本的锁定,而另一台服务器尝试执行,但只需写入日志文件并退出即可。可以有多个这样的脚本,每个脚本都有一个单独的互斥锁。这意味着我想要一个可以容纳多个服务器多个脚本的解决方案。我正在寻找一个非常简单的解决方案。请向我提供任何可用的工具,或者以流行的方式向我提出实现这一点的建议。分布式互斥体
Q
分布式互斥体
2
A
回答
2
你的意思是你想自己实现一些东西,就像控制每个脚本的锁的单个服务器一样吗?
所有其他服务器都必须要求它“运行脚本的权限”,然后在完成时通知它,可能还需要一些超时检查机制。您需要考虑采用一些高可用性机制来确保您的“锁控制器”服务器不会成为整个系统的单点故障。此外,您可能需要检查是否需要对请求进行排队而不是仅仅存在 - 即使现在不需要,如果它可能成为一个,从一开始就可能更容易设计它。
一些常用的方法列在回答这些在这里的问题 - 这些问题是有点老,但我认为仍然具有现实意义:
相关问题
- 1. 分布式系统上的互斥
- 2. 分布互斥:Coterie形成
- 3. 为什么互斥体不需要互斥体(并且该互斥体需要互斥体...)
- 4. Node.js和互斥体
- 5. Ruby和互斥体
- 6. EventQueues和互斥体
- 7. 互斥体机制
- 8. 提升interprocess互斥体vs提升线程互斥体
- 9. 使用Allegro互斥体创建互斥体类
- 10. 在运行时选择互斥体或虚拟互斥体
- 11. 互斥或不互斥互斥?
- 12. 使用ServiceStack Redis进行分布式锁定的互斥体违规
- 13. Silverlight中的互斥体
- 14. Linux内核互斥体
- 15. 线程和互斥体
- 16. Single Cron-Instance /互斥体
- 17. SQLite多线程互斥体
- 18. Windows Phone IsolatedStorageSettings&互斥体
- 19. 互斥体未初始化
- 20. 互斥体如何工作?
- 21. 两个互斥体condvar
- 22. 如何使用互斥体
- 23. Win32中的互斥体
- 24. 用互斥体重建sem_wait()?
- 25. AIX是互斥体sempahores?
- 26. 跨用户C#互斥体
- 27. 与smp的Java互斥体
- 28. 什么是“分裂互斥”?
- 29. 仿生(android libc)互斥体变体
- 30. 为什么我的互斥体类有时不会删除互斥体文件?