Это проблема двух генералов , и поэтому она неразрешима. Подтверждение подтверждения - это просто еще одно сообщение для подтверждения, и, таким образом, учитывая конечное время, возвращаясь назад и вперед, вы никогда не сможете точно подтвердить, что исходное сообщение отправлено, и обе стороны точно знают его.
В практической жизни вы будете нужно выбрать, какой риск вы принимаете. На сообщениях с низким уровнем риска, таких как друзья, согласившиеся встретиться друг с другом, обычно достаточно одного подтверждающего ответа, чтобы продолжить, несмотря на вероятность того, что ответ так и не был получен. Теперь подумайте об оплате через GPRS ED C. Всегда существует вероятность того, что соединение прервалось сразу после полной доставки инструкции по оплате и не вернется до того, как клиент решит уйти. Без распечатанного квитанции о подтверждении, магазин обычно рассматривает платеж как никогда не выполненный, а только возвращает транзакцию позже. И магазин, и покупатель принимают этот риск.
Сообщение «Ваша кофейня не использует двухфазную фиксацию» действительно хорошее прочтение при разработке вашей системы. Рассмотрим требования. Откат недопустим? Есть ли определенный уровень несоответствия, который терпим или даже ожидается? Возможно, вы даже можете уменьшить роль клиента, чтобы просто попытаться отправить команду и затем выполнить обратное чтение с сервера, отбрасывая его собственную.