4

Должен ли я использовать [email protected] Singleton (javax.ejb.Singleton) для статистики или мониторинга или было бы лучше кэшировать статистику в общем @ SessionScoped-Bean? Для того, чтобы очистить мой вопрос, здесь два варианта:EJB- @ Singleton для управления результатами запроса

Сценарий I:

Пользователь, начинает Websession и делает базы данных-запросы для просмотра статистики или DataTables. Эти запросы заполняются в течение всего сеанса. Таким образом, 10.000 пользователей будут делать 10 000 одинаковых запросов к базе данных.

Сценарий II:

Пользователь, начинает Websession и повторит ДАННЫЕ для статистики или DataTables из preinitialized @ Singleton-Bean. @Singleton (javax.ejb.Singleton) выполнил запрос в начале Server-Startup (@Startup). Таким образом, 10.000 пользователей могут читать из кеша ONE (@Singleton) и не должны запрашивать базу данных. My @ Singleton-Bean запускает обновление своих кэшированных данных, если кто-то другой создает/редактирует/удаляет данные.

Так что мои вопросы:

  • ли Сценарий II масштабируется лучше, чем сценарий I? Я думаю да. Я прав?
  • Есть ли какие-либо другие оговорки или вещи, которые следует учитывать?
  • Я знаю, безграждан-Бобы масштабируются намного больше, чем @stateful или @Singleton. Должен ли я использовать @ Stateless-Bean и кэшировать запросы с чем-то вроде JPA/Hibernate Caches.
  • Должен ли я использовать @ApplicationScoped (javax.enterprise.context) вместо @Singleton (javax.ejb.Singleton), чтобы использовать прокси? Было бы лучше?

ответ

2

Да, Сценарий 2 весы лучше 1, мы говорим об эффективности здесь.

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

Использование зависит от того, какой сервер вы используете, используете ли вы полный сервер предприятия, если это так, то лучше использовать транзакции, предлагаемые им, если вы просто используете веб-контейнер, такой как tomcat, тогда лучше использовать управляемый bean-компонент.

+1

Я использую Jboss AS. – nimo23