взаимное исключение в распределенной системе - PullRequest
0 голосов
/ 05 апреля 2011

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

1 Ответ

0 голосов
/ 05 апреля 2011

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

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

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

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