2015-05-06 2 views
0

Food Мы используем WAS 7.0 с настраиваемым локальным кешем в кластерной среде. В нашем приложении есть очень часто используемая (и очень редко обновляемая) справочная информация, которая извлекается из базы данных и хранится в настраиваемом кеше при запуске сервера (мы не используем кеш через сервер приложений). Новые ссылочные значения могут быть введены через приложение, когда это будет сделано, данные в базе данных будут обновлены, и будут сохранены кэшированные данные на этом одном сервере (1 из 3). Если пользователь нажимает на любой из других серверов в этом кластере, они не будут видеть вновь введенные ссылочные значения (если сервер не отскочил). Перезапуск кластера не является приемлемым решением, так как оно снижает производительность. Мой вопрос в том, как я могу сказать другим серверам также обновить свой локальный кеш?WebSphere, распространяющий изменения в настраиваемый кеш на всех серверах в кластере

Я рассмотрел механизм публикации/подписки JMS. Я думал о публикации сообщения каждый раз, когда я обновляю значения любой ссылочной таблицы, а другие серверы могут выступать в качестве подписчиков и получать сообщение и обновлять свой кеш. Серверы должны действовать как издатель, так и подписчик. Я не уверен, как включить это решение в мое приложение. Я открыт для предложений и других решений.

ответ

0

В целом вам следует рассмотреть возможность использования динамического кеша, предоставляемого сервером приложений. У него уже есть варианты репликации. Проверьте Using the DistributedMap and DistributedObjectCache interfaces for the dynamic cache для более подробной информации.

И в отношении вашего пользовательского решения JMS - вы должны иметь MDB в своем приложении, которое будет настроено на эту тему. После изменения кеша ваше приложение опубликует изменения в этой теме. MDB считывает это сообщение и обновляет локальный кеш.

Но, поскольку это довольно сложное изменение, я бы настоятельно подумал о переходе на встроенный кеш.