Распределенный кеш с низкой задержкой для Java & C ++ Object - PullRequest
3 голосов
/ 10 сентября 2010

[фон]

Я работаю над процессом на стороне сервера Java, который предназначен для анализа сигналов / обработки изображений. Процесс основного сервера будет принимать запросы / входные параметры (XML / изображение) от пользователей. Затем он будет распределять запрос / ввод для нескольких обработчиков. Механизмы обработки написаны на Java. Они будут выполнять вызов JNI для обработки изображений / сигналов. Они будут сообщены через RMI.

Тот же запрос будет обработан снова с другими входными параметрами, а входные параметры очень велики (размер изображения: 1-2 МБ). Мы не хотим каждый раз отправлять запрос обработчикам. Мы кешируем запросы / входные данные в обработчике. Объект JNI находится в состоянии и также хранится в обработчике. Один и тот же расчет всегда будет рассчитываться одним и тем же механизмом обработки.

[Проблема]

Мы не можем точно предсказать использование в реальном времени, а распределение рабочей нагрузки неравномерно. Поскольку один и тот же запрос всегда обрабатывается одним и тем же механизмом обработки, некоторые процессоры могут быть перегружены, пока некоторые находятся в режиме ожидания.

[Требование]

Вот то, чего я хочу достичь: - Динамическое распределение рабочей нагрузки: запросы могут обрабатываться другим механизмом. - Кэширование данных с малой задержкой (большой XML / Imagine): вместо отправки ввода / данных в движок через RMI, мы хотим использовать распределенный кеш. - Объект JNI также будет храниться в распределенном кеше и будет сохранять свое состояние

[Вопрос]

  1. Существует ли какой-либо распределенный кэш с низкой задержкой для Java, который подходит для моих требований (особенно для кэширования объекта JNI)?
  2. Я раньше не использовал распределенный кеш и смотрел на терракоту. Любая другая рекомендация?

Спасибо за любой вклад!

1 Ответ

2 голосов
/ 10 сентября 2010

Ehcache популярен на нескольких разных сайтах, с которыми я работал.Признаки, которые я слышал, положительные, но их вариант использования был несколько проще.Несмотря на это, кешированный элемент не должен иметь никакого значения для производительности кэша, за исключением, возможно, проблем с размером (и вы сказали, что ваши элементы довольно большие).Вы не хотите каждый раз отправлять параметры, но они разные для каждого запроса.Попытка кэшировать или связать что-то, что отличается каждый раз, не поможет вам, и вам гораздо лучше в этом случае вообще забыть о кэше и просто перенести накладные расходы на отправку параметров запроса.Возможно, я что-то пропустил!?

...