Мне нужно сохранить переменную условия, к которой необходимо получить доступ и обновить несколько модулей.Сохранение переменной в очереди сообщений
В системе имеется веб-интерфейс (контейнер сервлетов), который принимает HTTP-вызовы и переводит их на запросы сообщений, отправленных в очередь сообщений.
Сообщения потребляются несколькими модулями обработки, имеющими те же функциональные возможности, каждый из которых работает в отдельном экземпляре JVM.
Для получения новой информации для обработки новых модулей может потребоваться внешняя веб-служба. Существует 4 альтернативных веб-сервиса, и решение, которое служба вызова должна основываться на среднем времени отклика веб-службы в течение последних 10 минут.
Мой вопрос: Как хранить информацию о времени отклика веб-службы?
Моей идеей было НЕ использовать общую БД для этого и попытаться сохранить общую переменную (в выделенном разделе в очереди), которые могут быть прочитаны и обновлены путем обработки модулей всякий раз, когда им необходимо принять решение какую веб-службу вызывать. Обновление действительно просто, поскольку мы говорим о среднем времени отклика (должно быть достаточно предыдущего среднего, первого и последнего обновления TS и текущего времени отклика).
Параллелизм не является проблемой, потому что есть только 20-30 модулей обработки, а средняя скорость запроса - 1 раз в несколько секунд. Даже если есть некоторые столкновения, у нас есть определенная толерантность к устаревшим значениям.
так, я должен передавать время отклика веб-службы на все модули обработки? Звучит как хорошая идея. – aviad
@aviad Это то, что я сделал бы. Стоимость хранения одной и той же информации, которую я предполагаю, является небольшой, поэтому наличие большого количества независимых копий будет оптимальным (и простым) –