Я сталкивался с этой проблемой, и до сих пор кажется, что единственным решением является более сильная модель согласованности. Сервис Amazon S3, который обеспечивает возможную согласованность. Мы используем его как хранилище BLOB-объектов.
Проблема в том, что мы ввели шаблон обмена сообщениями в наше приложение, и нам это нравится. Там нет сомнений о его преимуществах. Тем не менее, кажется, что это требует большей последовательности. Сценарий:
- подсистема получает данные от пользователя
- данные сохраняются в S3
- сообщение отправлено
- сообщение получено другой подсистемой
- данные считываются с S3
- ... сверчки. Это старые данные? Иногда это так.
Итак. Мы постарались на очевидное, отправив данные в сообщение, чтобы избежать непоследовательного чтения из S3. Но это довольно неприятная вещь: сообщение становится излишне большим, и когда получатель слишком занят или выходит из строя и получает сообщение с опозданием, в то время как уже доступны новые данные, происходит сбой.
Есть ли решение для этого или нам действительно нужно сбросить S3 для более согласованного бэкэнда, такого как RDBMS или MongoDB?