То, что вы описываете, немного похоже на механизм репликации Google File System архитектуры.Вы будете наиболее заинтересованы в разделах 3.1 и 3.2 документа вместе с иллюстрацией на рисунке 2.
Краткое изложение (с упрощениями) применительно к вашему случаю:
- ПРОИЗВОДИТЕЛЬ отправляет данные, ожидает ответа.
- ПОТРЕБИТЕЛЬ (s) ответ: «Я получил все данные».
- PRODUCER отправляет команду «завершить запись», ожидает ответа.
- CONSUMER (s) отвечают: «Я сбросил данные на диск».
- Теперь (и только сейчас) рассматриваем данные как «сохраненные».
GFS, как описано в документе, реализует ряд оптимизаций, включая конвейеризацию записи для потребителей вместо разделения одной машины.пропускная способность одновременно на n машинах.
Чтобы повысить гарантии безопасности при сбоях, вы можете сделать операции записи идемпотентными, используя Intent Log .Это может быть либо только в конце производителя (например, повторная попытка после истечения времени ожидания), либо в конце потребителя (при перезагрузке продолжить работу).