Как справиться с условиями гонки в распределенном программировании? - PullRequest
0 голосов
/ 14 октября 2019

Я не могу найти много онлайн об этом. В распределенном программировании существует много сценариев, в которых условия гонки представляют опасность. Например, если у меня есть система чата, где я хочу ограничить количество пользователей в каждой комнате до 100. Многие одновременные объединения могут привести к более чем 100 пользователям в одной комнате из-за условий гонки. Единственное решение, которое я могу придумать, - это использовать распределенную блокировку. Тем не менее, я чувствую, что есть более чистые способы решения этих / этих проблем. Есть ли в Интернете руководства или ресурсы по этому поводу?

1 Ответ

1 голос
/ 14 октября 2019

Все сводится к модели согласованности, которую вы хотите охватить. Если вам нужна строгая согласованность в вашей системе (каждый узел в вашей системе видит одно и то же значение счетчика в любой момент времени, и это значение всегда «допустимо») - вы не сможете избежать этого, используя алгоритм распределенного консенсуса (распределенная блокировка являетсяслучай такого alg).

Но вы можете преодолеть это, изменив свои ожидания. Например, вы можете согласиться с тем, что значение счетчика будет в конечном итоге «действительным» (модель «возможной согласованности»), и использовать CRDT для счетчика и разрешать конфликты транзакций «позже».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...