[фон]
Я работаю над процессом на стороне сервера Java, который предназначен для анализа сигналов / обработки изображений.
Процесс основного сервера будет принимать запросы / входные параметры (XML / изображение) от пользователей.
Затем он будет распределять запрос / ввод для нескольких обработчиков.
Механизмы обработки написаны на Java. Они будут выполнять вызов JNI для обработки изображений / сигналов. Они будут сообщены через RMI.
Тот же запрос будет обработан снова с другими входными параметрами, а входные параметры очень велики (размер изображения: 1-2 МБ).
Мы не хотим каждый раз отправлять запрос обработчикам.
Мы кешируем запросы / входные данные в обработчике.
Объект JNI находится в состоянии и также хранится в обработчике.
Один и тот же расчет всегда будет рассчитываться одним и тем же механизмом обработки.
[Проблема]
Мы не можем точно предсказать использование в реальном времени, а распределение рабочей нагрузки неравномерно.
Поскольку один и тот же запрос всегда обрабатывается одним и тем же механизмом обработки, некоторые процессоры могут быть перегружены, пока некоторые находятся в режиме ожидания.
[Требование]
Вот то, чего я хочу достичь:
- Динамическое распределение рабочей нагрузки: запросы могут обрабатываться другим механизмом.
- Кэширование данных с малой задержкой (большой XML / Imagine): вместо отправки ввода / данных в движок через RMI, мы хотим использовать распределенный кеш.
- Объект JNI также будет храниться в распределенном кеше и будет сохранять свое состояние
[Вопрос]
- Существует ли какой-либо распределенный кэш с низкой задержкой для Java, который подходит для моих требований (особенно для кэширования объекта JNI)?
- Я раньше не использовал распределенный кеш и смотрел на терракоту. Любая другая рекомендация?
Спасибо за любой вклад!