взаимное исключение в распределенной системе

#distributed #mutex

#распределенный #мьютекс

Вопрос:

каков факт, что следует использовать алгоритм распределенного мьютекса (например, алгоритм Маекавы) поверх простого мьютекса. В какой ситуации простой блокировки мьютекса не хватило бы для обеспечения взаимного исключения или хорошей производительности в распределенной системе? Кто-нибудь может привести мне конкретный пример?

Комментарии:

1. Как бы вы использовали простой мьютекс в распределенной системе? Мьютексы работают в рамках единой системы, поскольку существуют необходимые конструкции, гарантирующие эксклюзивность.

Ответ №1:

Под простым мьютексом вы подразумеваете обычный мьютекс, который вы используете в многопоточном программировании? Обычный мьютекс виден только на одной машине и, следовательно, ничего не сделает для предотвращения условий гонки между заданиями на удаленных машинах. Это делает его не стартовым.

Тем не менее, вы получаете более высокую среднюю производительность, не используя распределенный мьютекс. Поэтому вы можете использовать выбор ведущего, чтобы выяснить, кто отвечает за набор мьютексов, а затем попросить выбранного ведущего обслуживать недолговечные мьютексы. Если мьютексы никогда не удерживаются дольше периода времени, необходимого для принятия решения о том, что мастер отключен, и выбора нового мастера, это безопасно.

Однако эта стратегия приведет к блокировке получения мьютекса во всем процессе выбора мастера. Ожидается, что мастер будет тратить очень мало времени на отключение, но когда он отключен, это оказывает серьезное влияние на задержку. Если вы заботитесь о максимальной задержке больше, чем о среднем использовании ресурсов и средней задержке, это может оказаться неприемлемым, и вам нужно будет использовать распределенный мьютекс каждый раз.