首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重用mongo内部分布式锁

重用mongo内部分布式锁
EN

Stack Overflow用户
提问于 2013-01-06 01:14:22
回答 1查看 1.6K关注 0票数 4

我需要为我的应用程序实现一个分布式锁。我有许多独立的工作进程,我需要强制限制它们一次只能在一个帐户上工作。

该应用程序是用带有mongo db层的c#编写的。我注意到mongo的cluster balancer使用分布式锁定机制来控制哪个mongos正在进行平衡,我想知道我是否可以在我的应用程序中重用相同的机制?

我不希望有实现我自己的分布式锁机制的开销,因为所有的工作进程都使用mongo接口,所以如果我能重用他们的实现就太好了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-06 13:02:00

MongoDB中没有固有的文档级锁定或分布式锁定驱动程序接口。

MongoDB用于分片、拆分和迁移的内部锁针对shard集群的配置服务器使用两阶段提交模式。您可以自己实现一个类似的模式,MongoDB文档中有一个示例:Perform Two Phase Commits

如果您只需要一个信号量来防止工作人员同时更新相同的帐户文档,那么这可能是大材小用。一种更直接的方法是向您的帐户文档添加一个咨询lock字段(或嵌入式文档),以指示当前正在使用该文档的工作进程。该锁可以在worker启动时设置,在完成时删除。您可能希望锁信息同时包含工作进程ID和时间戳,这样就可以找到并删除过时的锁。

请注意,任何方法都需要在工作进程之间进行协调,以检查和尊重您的锁定实现。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14174255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档