Основные соображения / подводные камни для веб-приложения Java, которое должно работать в кластерной среде? - PullRequest
0 голосов
/ 23 ноября 2010

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

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

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

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

Ответы [ 2 ]

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

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

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

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

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

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

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

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

Oh иКстати, удачи в интеграции с Websphere ...; -)

...