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