Синхронизация кэшей
От: Аноним  
Дата: 17.10.07 15:03
Оценка:
Подскажите, пожалуйста, идеи для такой вот задачи:

Есть некий Cache Processor (C++). Все стандартно: получить запрос, проверить наличие файла в кэше, проверить валидность файла, отдать закэшированный файл или забрать файл из внешнего источника и положить его в кэш. Файлы храняться на диске, кэш на запрос отдает полный путь к файлу. Все работает на ура.

Появилась такие задачи:
1. Хранить файлы не локально, а в сети (в существующем процессоре решена, имена файлов == GUID)
2. Сделать из процессоров кластер, то есть процессор будет запущен на нескольких машинах, но будет использовать общее хранилище для файлов. Естесвтенно, кэши должны быть синхронизированы между собой. (Кэш представляе собой, грубо говоря, map<string, string>).

Подскажите, плз, best approaches для такой задачи, наверняка они есть.
Re: Синхронизация кэшей
От: adontz Грузия http://adontz.wordpress.com/
Дата: 17.10.07 15:15
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>Появилась такие задачи:

А>1. Хранить файлы не локально, а в сети (в существующем процессоре решена, имена файлов == GUID)
А>2. Сделать из процессоров кластер, то есть процессор будет запущен на нескольких машинах, но будет использовать общее хранилище для файлов. Естесвтенно, кэши должны быть синхронизированы между собой. (Кэш представляе собой, грубо говоря, map<string, string>).
А>Подскажите, плз, best approaches для такой задачи, наверняка они есть.

Ну, например, каждый кеш может хранить локальный индекс файлов (которые есть в общем хранилище) и при добавлении файла в общее хранилище рассылать TCP/UDP/UDP broadcast сообщение другим узлам кластера, в результате обработки которого они скорректируют свой локальный индекс.

Хотя, файловое хранилище в окружении где файл запросто могут захотеть открыть множество процессов, практически всегда плохой выход и имеет смысл переехать на БД и уже средствами БД кластеризировать.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Синхронизация кэшей
От: GlebZ Россия  
Дата: 17.10.07 16:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите, плз, best approaches для такой задачи, наверняка они есть.

Хорошую вводную дал Cyberaxздесь
Автор: Cyberax
Дата: 27.07.07
Re: Синхронизация кэшей
От: WolfHound  
Дата: 17.10.07 17:19
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Подскажите, плз, best approaches для такой задачи, наверняка они есть.

Посмотри на http://en.wikipedia.org/wiki/Memcached или тебе обязательно нужен дисковый кэш?
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: Синхронизация кэшей
От: ilnar Россия  
Дата: 17.10.07 18:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите, пожалуйста, идеи для такой вот задачи:


А>Есть некий Cache Processor (C++). Все стандартно: получить запрос, проверить наличие файла в кэше, проверить валидность файла, отдать закэшированный файл или забрать файл из внешнего источника и положить его в кэш. Файлы храняться на диске, кэш на запрос отдает полный путь к файлу. Все работает на ура.


А>Появилась такие задачи:

А>1. Хранить файлы не локально, а в сети (в существующем процессоре решена, имена файлов == GUID)
А>2. Сделать из процессоров кластер, то есть процессор будет запущен на нескольких машинах, но будет использовать общее хранилище для файлов. Естесвтенно, кэши должны быть синхронизированы между собой. (Кэш представляе собой, грубо говоря, map<string, string>).

А>Подскажите, плз, best approaches для такой задачи, наверняка они есть.


memcached, mogilefs
Re: Синхронизация кэшей
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 17.10.07 18:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите, плз, best approaches для такой задачи, наверняка они есть.


http://www.rsdn.ru/Forum/message/1772726.1.aspx
Автор: Андрей Коростелев
Дата: 10.03.06
-- Андрей
Re: Синхронизация кэшей
От: ivb22  
Дата: 25.10.07 07:42
Оценка:
Посмотрите Memcached
http://www.danga.com/memcached/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.