Подходит ли JMS (или любое решение для обмена сообщениями) для последователя / следующей модели

Ради простоты, давайте предположим, что я клонирую твиттер (а я нет). Таким образом, каждый пользователь может следовать за другими пользователями, и за ними могут следовать другие пользователи. За каждого подписчика вы получаете все твиты, которые он отправляет. Все хранится в хранилище данных (будь то решение NoSQL или сегментированная реляционная база данных).

Однако, когда пользователи находятся в сети , считаете ли вы целесообразным, чтобы они получали твиты через JMS, вместо опроса базы данных и получения новых твитов:

  • , когда пользователь регистрируется (или когда он входит в систему), создается JMS-тема, названная в его честь (или его идентификатором)
  • , когда пользователь входит в систему, он подписывается на тему JMS каждого из пользователей, за которыми он следует
  • , объект в области сеанса (для каждого пользователя) действует как прослушиватель сообщений JMS
  • , все принятые сообщения сохраняются в сеансе (в памяти)
  • пользовательский интерфейс обновляется с помощью опроса ajax объекта в области сеанса
  • , когда пользователь выходит из системы или время ожидания его сеанса, слушатель сообщения уничтожается

Идея этого предположительно заключается в повышении производительности - то есть не для того, чтобы запрашивать хранилище данных слишком часто, а для того, чтобы кэшировать непосредственные данные в памяти.

Конечно, ожидается, что все это будет работать в кластере и быть масштабируемым.

Однако я не уверен:

  • стоит ли это на самом деле (с точки зрения повышения производительности и масштабируемости)
  • , не добавляет ли JMS нежелательные накладные расходы, что равносильно запросу хранилища данных (и, следовательно, делает все осложнение бесполезным)

В какой-то момент (когда все будет функционировать) я сделаю несколько тестов, но я бы хотел услышать некоторые начальные замечания.

5
задан Bozho 31 August 2010 в 12:58
поделиться