не могу что то нагуглить правильное решение, или хотя бы возможные списочком, все научные паперы лезут)
вопрос к знатокам:
есть децентрализованная система, то есть есть N систем с N базами, которые коммуницируют друг с другом с помошью эвентов. Появилась необходимость реализовать такую комманду А, что существуют следующие гарантии:
1. команда А выполняется строго на одной системе из N(то есть если на одной она началась, то другие системы не могут ее принять)
2. команда А синхронно дает ответ за конечное и предсказуемое время
то есть нужно как то, где то синхронизироваться, что бы как то дать понять другим системам о начале работы. вот о чем я успел подумать на данный момент:
1. синкаться на мьютексах в базе. но репликация требует времени, есть шанс нарушить консистентность
2. опрашивать все системы на предмет, не работают ли они над задачей А - явная проблема отсутствия барьеров между проверками
3. обратный вариант 2 - всегда нотифицировать всех о команде, которую сейчас кто то выполняет и кто. перед исполнением проверять свой список - пока что лучший вариант, но что то оч накладный по памяти.
чувствую я хочу и консистенси и авалабилити одновременно, и таки придется чем то жертвовать или вводить какие то ограничения на саму задачу. пока что интересно, как вообще принято синкаться в децентрализованных системах. зоокипер не предлагать. желательно штатными джавовыми средствами