Кластер Tomcat с несовместимыми статическими ресурсами - PullRequest
1 голос
/ 17 декабря 2010

Предположим, есть веб-приложение java, которое позволяет пользователям загружать файлы изображений, оно просто сохраняет эти изображения в файловой системе сервера tomcat и будет служить им в качестве статических ресурсов при дальнейшем запросе.Теперь это приложение должно быть масштабировано и развернуто в большом кластере серверов Tomcat, которые находятся за сервером Apache с mod_jk в качестве балансировщика нагрузки.

Поскольку загруженные изображения находятся в файловой системе, они не будут доступны на остальных серверах tomcat, кроме того, на котором происходит событие загрузки.Если один пользователь заходит, загружает изображение и через некоторое время запрашивает изображение снова, его запрос, к сожалению, может быть перенаправлен на другой сервер из-за политики балансировки нагрузки циклического перебора, поэтому он не увидит свое изображение!

Есть ли какой-нибудь традиционный способ решения такой проблемы?или я должен изменить дизайн системы загрузки, используя внутреннюю базу данных?

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

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

0 голосов
/ 21 декабря 2010

Один способ - с общей файловой системой. Конечно, это не всегда возможно. Другой способ - хранить все в базе данных. Из-за синхронизации я бы так предложил. Для контента я бы рекомендовал использовать крольчонка. Хорошее введение в кластеризацию и крольчиху можно найти здесь: http://wiki.apache.org/jackrabbit/Clustering

...