我正在尝试使用多个VM实现集中逻辑。 我有一个应用程序在5个VM上运行。只有1个VM负责执行一项任务。 为了让我将VM的主机名写入数据库。但是要将该名称更新为数据库,我必须使用java客户端API实现锁定,因为同时可以有2-3个VM出现。 如何实现?
更新: 我可以使用findandModify。但我的代码看起来像这样
{
if(collection.getCount({"taskName" :"Task1"}) == 0){
//insert record ------ **I can use findAndModify here**
}
}
但是如果两个VM同时出现,那么两个VM都会在阻塞时进入,因为文档不可用。
我知道findAndModify是原子的。因此在1 VM发出findAndModify命令之后,我们将有1条带有主机名的记录。但是下一个VM也会执行相同的操作,并使用其主机名再次更新记录。
如果我不清楚我的问题,请告诉我。