Масштабируемое решение для продвижения на стороне сервера? - PullRequest
3 голосов
/ 31 июля 2010

Я хотел бы реализовать механизм, который будет предоставлять RESTful API, который позволяет клиенту регистрировать интерес к теме с помощью сервера и получать асинхронные уведомления от сервера после регистрации интереса. В корпоративной (обмен сообщениями) архитектуре это называется шаблоном публикации / подписки.

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

Существует ли (предпочтительно с открытым исходным кодом) инфраструктура или библиотека, которая позволяет применять шаблон публикации / подписки к веб-приложениям?.

Технология на стороне сервера может быть на любом из следующих языков: C, C ++, PHP, Python, Ruby.

Я работаю в Linux Ubuntu 10.0.4

Ответы [ 3 ]

3 голосов
/ 31 июля 2010

Взгляните на протокол pubsubhubbub: http://en.wikipedia.org/wiki/PubSubHubbub

Вот источник проекта: http://code.google.com/p/pubsubhubbub/

2 голосов
/ 31 июля 2010

Если вы знаете заранее, у вас будет много подписчиков (людей / приложений), которые хотят получать уведомления по определенной теме, в то время как с другой стороны у вас будет несколько разных тем, которые в любом случае рассматривают технологию pull.

RSS, Atom довольно успешны, хотя и используют pull. Причина: нет необходимости иметь администрацию на сервере людей, которые подписаны, чтобы обнаруживать, кто больше не заинтересован (клиент не работает в течение длительного времени) или иметь механизм для передачи всех данных подписчикам. Используя push, вам нужно делать очень мало на сервере, в то время как клиенты будут извлекать только небольшое количество данных каждый раз.

Pull стоит немного больше пропускной способности, но в любом случае это дешево, но экономит много времени на обслуживании ЦП и программного обеспечения, что довольно дорого.

0 голосов
/ 02 августа 2010

Я предлагаю вам взглянуть на протокол STOMP и его клиенты Python (я использую stomp.py ). Это должно удовлетворить все ваши потребности.

...