Ключевые соображения/подводные камни для веб-приложения Java, которое должно работать в кластерной среде?

У нас есть веб-приложение Java, использующее Spring и Hibernate и имеющее довольно стандартную архитектуру. В настоящее время приложение поддерживает клиентов на основе SOAP в дополнение к клиенту Flex GUI, который взаимодействует через AFM/HTTP с серверной частью BlazeDS. На сегодняшний день приложение работает только в Tomcat, но ожидается поддержка JBoss и Websphere.

Теперь мы должны убедиться, что приложение может работать в кластерной среде в целях масштабируемости и аварийного переключения. Этот вопрос в первую очередь касается уровня сервера приложений Java (а не уровня базы данных). Помимо информации о сеансе входа в систему, которой управляет Spring Security, приложение не имеет состояния.

Что нужно учитывать при поддержке кластерной среды?

Нужны любые советы по ведению журналов, JNDI, настройке, файловому вводу-выводу, сеансам входа в систему и т. д. - что угодно!


person HDave    schedule 23.11.2010    source источник


Ответы (2)


  • Если у вас есть файловый ввод-вывод, обязательно используйте семафоры или что-то подобное, чтобы убедиться, что операции ввода-вывода происходят так, как вы хотите.
  • Если вы используете какие-либо продукты SSO (единый вход), убедитесь, что они работают правильно после кластеризации.
  • SSL-сертификаты должны быть установлены/обслуживаться на всех серверах.
  • Если вы используете JBoss, можно использовать либо mod_cluster, либо mod_proxy, в зависимости от вашей среды/требований.
  • Если вы используете WebSphere, вы можете установить менеджер развертывания на одну из физических машин, где присутствует один узел.
  • Тщательно протестируйте свои изображения и другие статические ресурсы, чтобы убедиться, что все они работают правильно.
  • Храните журналы отдельно для каждого сервера.
  • Я не уверен, используете ли вы какие-либо балансировщики нагрузки — просто убедитесь, что нагрузка распределена между серверами более или менее равномерно.
  • Все стандартные вещи: управление сессиями, аутентификация и т.д.
person crnlx    schedule 23.11.2010

Что нужно учитывать при поддержке кластерной среды?

Это зависит от многих вещей, и самый полезный совет почти всегда будет самым конкретным, но я полагаю, что вы ищете здесь общий опыт/предложения. :-)

Хотя эта эта статья немного устарела, она довольно хорошо объясняет основы кластеризации Java EE. .

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

Наиболее важной частью работы с кластеризацией будет «проверка», работает ли кластеризация. Я знаю, это звучит так очевидно, но это часто упускается из виду. Обязательно проведите тщательные тесты производительности и регрессионные тесты, чтобы убедиться, что:

  • Кластеризация работает
  • Это не влияет на правильность вашего веб-приложения.

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

О, и, кстати, удачи вам в интеграции с "Websphere"... ;-)

person Sanjay T. Sharma    schedule 23.11.2010