Дизайн приложений Java EE - PullRequest
       41

Дизайн приложений Java EE

1 голос
/ 17 сентября 2011

Я пишу приложение Java EE, которое должно использовать SAP BAPI / RFC с использованием JCo и предоставлять их в качестве веб-сервисов другим системам ниже по течению. Приложение должно масштабироваться до огромных объемов в масштабе десятков тысяч и тысяч одновременных пользователей.

Я хотел бы получить предложения о том, как разработать это приложение, чтобы оно могло соответствовать требуемому объему.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

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

По моему опыту, это не обязательно относится к интеграции SAP, подумайте о корзине покупок, которую вы хотите заполнить, основываясь на продуктах, доступных в SAP. Возможно, вы захотите сохранить эту корзину в своем приложении и отправить только окончательную корзину в SAP. В противном случае вы в конечном итоге создадите приложение электронной коммерции внутри своего бэкэнда.

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

Кроме того, я рекомендую создать правильный слой абстракции поверх JCo, включая JCO.PoolManager для пула соединений. Вам также может понадобиться продуманная концепция авторизации, если вы работаете с пулом соединений, управляемым только одним техническим пользователем.

Просто некоторые (не очень хорошо структурированные) мысли ...

0 голосов
/ 19 сентября 2011

Хорошо, что вы думаете о масштабируемости прямо на этапе проектирования. Мартин Эбботт и Майкл Фишер (PayPal / eBay Fame) создают макет под названием AKF Scale для масштабирования веб-приложений. Основной принцип - масштабировать ваше приложение по 3 осям.

  1. Ось X: клонирование сервисов / данных таким образом, что работа может быть легко распределена по экземплярам. Для веб-приложения это означает возможность добавления дополнительных веб-серверов (кластеризация).

  2. Ось Y: разделение рабочей ответственности, действия или данных. Так, например, в вашем случае у вас могут быть разные вызовы API на разных серверах.

  3. Ось Z: разделение работ заказчиком или заказчиком. В вашем случае вы могли бы сказать, что запрашивающие из региона 1 получат доступ к Серверу 1, запрашивающие из региона 2 получат доступ к Серверу 2 и т.д.

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

Вы можете оформить заказ на книгу "Искусство масштабируемости" указанных авторов. http://amzn.to/oSQGHb

...