Обновления аукциона в реальном времени - Comet? Торнадо? ActiveMQ? - PullRequest
0 голосов
/ 28 ноября 2011

Я нахожусь в процессе принятия решения о том, как написать онлайн-заявку на аукцион. Я хотел бы предоставлять обновления в режиме реального времени пользователям сайта. Мой опыт работы с LAMP (хотя, в моем случае, «P» будет больше для Perl, чем для PHP). Я рассмотрел ActiveMQ, но мне интересно, есть ли лучшие варианты.

Мои главные проблемы - это масштабируемость и скорость. Он может иметь несколько одновременных аукционов, при этом [надеюсь] много пользователей участвуют в каждом аукционе. Какое бы решение я ни выбрал, оно должно учитывать такой сценарий. Конечно, это все теоретически, поэтому я не знаю, сколько у меня может быть одновременно работающих пользователей, но я бы хотел иметь средства для поддержки десятков тысяч пользователей.

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

Я надеялся использовать веб-фреймворк, такой как Codeigniter (PHP) или Catalyst (Perl), потому что я намереваюсь заплатить подрядчику или двум за помощь в части кодирования, и мне нравится идея наличие основы для некоторого обеспечения соблюдения шаблона проектирования. Тем не менее, чем больше я смотрю на это, тем не менее я не вижу очевидного решения: 1) использовать фреймворк и 2) предоставлять обновления аукциона в реальном времени (кроме «Торнадо», я думаю - возможно, я отвечаю самостоятельно) вопрос.;)).

Итак, несмотря на все сказанное, за исключением использования опроса (что мне не очень интересно), есть ли способ, которым я могу выполнить эти обновления в режиме реального времени, используя язык как Perl или PHP для моего сервера. код стороны? Я знаю, что ActiveMQ поддерживает STOMP, и у меня фактически это работает на моем локальном компьютере (используя Jetty, так как он требует сервлета для публикации / приема сообщений из клиентского JavaScript), но есть ли лучший вариант здесь?

Извините, что у меня нет более прямого вопроса, но после нескольких дней просмотра документов и учебников я теряюсь больше, чем когда-либо!

1 Ответ

1 голос
/ 29 ноября 2011

Частью вашей проблемы является то, что вы смешиваете различные концепции вместе.Если я правильно читаю, у вас есть сообщение о проблеме:

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

Теперь между Браузером и Сервером вы, вероятно, будете использовать шаблон запроса в стиле Comet для обработки сообщений, вы также можете рассматривать socket.io как шаблон резервного копирования.Для этого опроса потребуется сервер, способный обрабатывать множество одновременных открытых соединений, что является хорошим кандидатом для Tornado (есть и другие, но, учитывая, что вас спросили в отношении Tornado, это хорошо).

Теперь, когда мы 'Перейдя от 1000+ браузеров к нескольким серверам Tornado, вам нужен способ связи между ними.В последнем из шаблонов сообщений публикации / подписки у вас есть несколько вариантов:

  • RabbitMQ (AMQP)
  • ZeroMQ
  • Redis Pub / Sub

Все три хороших варианта, со своими плюсами / минусами.Лично я использовал Redis и Rabbit в разных проектах и ​​просто играл с ZeroMQ.Посредник сообщений - это целое дерево решений, которое будет основано на том, что у вас есть.

...