Настройка:
Представьте себе услугу «Twitter», где пользователь отправляет сообщение, которое затем считывается многими (сотнями, тысячами или более) пользователями.Архитектура для кеша Redis & Mongo для сохранения
Мой вопрос касается наилучшего способа архивирования кэша & базы данных для оптимизации для быстрого доступа & многие читают, но при этом сохраняют исторические данные, чтобы пользователи могли (если захотят) видеть старые сообщения. Предположение здесь состоит в том, что 90% пользователей будут интересоваться только новыми вещами, и что старые материалы получат доступ к ним изредка. Другое предположение здесь состоит в том, что мы хотим оптимизировать 90%, и это нормально, если более старые 10% занимают немного больше времени для извлечения.
Имея это в виду, мои исследования, похоже, указывают на использование кеша на 90%, а затем также сохраняют сообщения в другой долговременной постоянной системе. Поэтому до сих пор моя идея - использовать Redis для кеша. Преимущества в том, что Redis работает очень быстро, а также встроен в паб/sub, который идеально подходит для публикации сообщений многим людям. И затем я рассматривал возможность использования MongoDB в качестве более постоянного хранилища данных для хранения тех же сообщений, которые будут доступны по мере истечения срока действия Redis.
Вопросы:
1. Поддерживает ли эта архитектура воду? Есть лучший способ сделать это?
2. Что касается механизма хранения сообщений как в Redis & MongoDB, я думал о том, что приложение делает 2 записи: 1-й - напишите Redis, он сразу же доступен для подписчиков. 2-й - после успешного хранения в Redis, немедленно напишите MongoDB. Это лучший способ сделать это? Должен ли я вместо этого использовать Redis, нажимая истекшие сообщения в MongoDB? Я подумал об этом, но я не мог найти много информации о том, как напрямую обращаться к MongoDB от Redis.
Redis не будет настаивать на MongoDb. Вы должны сделать это сами. Или просто напишите оба места одновременно (как вы сказали). –
Я всегда стремился к более надежному магазину сначала (MongoDB в этом случае), или, как предложил Серджио, асинхронно в то же время. Никогда наоборот. –
Вопрос в том, сохраняете ли вы только идентификаторы сообщений в кеше или целые списки почтовых объектов в кеше? – user636525