Как обычно, я думаю, что ответ зависит от природы бизнес-приложения, которое вы создаете. Какие SLA для вашего приложения? Насколько критически важна миссия?
Если ваша инфраструктура обмена сообщениями выходит из строя, продолжает ли приложение функционировать вне службы блокировки? Если это так, то вы, вероятно, обязаны убедиться, что ваш механизм управления параллелизмом не является единственной точкой отказа.
Кроме того, тема достижения действительно распределенного, отказоустойчивого пессимистического механизма блокировки требует решения проблемы консенсуса . Большинство алгоритмов пессимистической блокировки полагаются на наличие единого сериализованного органа, который может отвечать на запросы на блокировки (т. Е. Есть таблица «блокировки» или, возможно, сервер одноэлементной блокировки).
Такой дизайн имеет единую точку отказа, написанную на всем протяжении. Чтобы ответить на ваш первый вопрос - да, я видел, как бизнес-приложения используют обмен сообщениями для обеспечения пессимистичной блокировки. Однако полное решение проблемы отказоустойчивости кажется излишним для большинства бизнес-приложений, с которыми я столкнулся.
Оптимистическое управление параллелизмом не имеет этой проблемы по своей природе, поэтому оно обычно предпочитается в распределенных отказоустойчивых приложениях. Тем не менее, я понимаю, что бизнес-требования часто побеждают простоту реализации.
Если тема вас интересует, Google опубликовал статью об их службе пухлой блокировки , в которой используется протокол согласия Paxos .