2012-01-16 7 views
0

Я думаю о проблеме, о которой идет речь: если мне нужно запросить агрегат в распределенной архитектуре, где хранилище распределенных событий может в конечном итоге ждать, пока будут распространены последние события. Как я могу узнать, не заполнит ли агрегат, который я читаю с помощью модели чтения, обновленный на другом сервере сети?Создание моментального снимка в распределенной архитектуре

У меня есть http-сервер, который принимает события для сохранения в магазине. Магазин не существует на самом деле, но я хочу реализовать его в ближайшее время. События, связанные с огромным агрегатом, который сериализуется в формате json, составляет 4 МБ

Другой вопрос, какое хранилище вы рекомендуете для моментального снимка?

EDIT

Я не понимаю, если вопрос не написано хорошо, или если я выбрал неправильные теги ...

ответ

0

Способность знать, когда «последний» событие в распределенной магазин обрабатывается, зависит от двух факторов:

  1. Можете вы определить "последний"?
  2. Предоставляет ли распределенный механизм хранения вам это?

The CAP theorem - это хорошая ссылка на те проблемы, которые у вас возникнут с обоими из распределенных хранилищ данных; в общем, если вы не откажетесь от доступности, вы не сможете обладать свойствами, необходимыми для получения того, что вы хотите.

С другой стороны, если вы можете определить последний в значимом ключе, вы все равно можете иметь то, что хотите. Например: истекают ли ваши события через некоторое время? Если, например, они истекают через 12 часов, вы знаете, что вы всегда можете осмысленно определить последний как «момент времени 12 часов назад», потому что любое необработанное событие старше этого устарело ...

Чтобы ответить на ваши вопросы вопрос, я настоятельно рекомендую механизм хранения, который вы не пишете сами, потому что распределенное хранилище данных - это ужасно трудные проблемы, которые делают для вас очень много умных людей, работающих в компаниях, которые ничего не делают, кроме решения проблем в этом пространстве.

Используйте вместо этого свою работу.

+0

На данный момент я решил использовать «локальный» моментальный снимок, где я отвечаю на события, которые распространяются в хранилище событий. Каждый раз, когда мне нужно получить снимок, я сначала проверяю, есть ли какие-то события в распределенном хранилище, которые новее, чем последние, воспроизведенные в моем «личном» «локальном» снимке. –