В статье http://www.cometdaily.com/2008/05/15/the-many-shades-of-bayeuxcometd-2/index.html автор описывает:CometD службы по сравнению с широковещательным каналом
Часто с PubSub, разработчики чувствуют необходимость создания канала для каждого пользователя, чтобы доставить личные сообщения клиенту. Например, если торговая система хочет уведомить пользователя о завершенных сделках, возникает соблазн создать канал, например/trades/a_user_id, и каждый пользователь будет подписаться на свой собственный канал. Этот подход работает, но не является самым ресурсоемким способом решения этой проблемы и требует кода безопасности для предотвращения несанкционированного доступа клиентов к другим каналам пользователей.
Каковы компромиссы между службами и широковещательными каналами для реализации сообщений для конкретного пользователя? Я понимаю аспекты безопасности компромисса, но как насчет ресурса? Я не понимаю, почему было бы больше ресурсов, используемых с широковещательным каналом, чем для службы с настраиваемым маршрутом. Если бы вы могли объяснить, почему лучше для другого использовать прецеденты, а не просто для того, чтобы быть разумным или нет, это могло бы помочь мне принять решение.
Благодарим за быстрый ответ! Я понимаю, что подкрадывая уязвимость, и не будем забывать об этом на секунду. Если мы создадим такое же поведение маршрутизации, как и широковещательный канал в канале обслуживания, отслеживая подписчиков для идентификатора пользователя, то не будет ли он потреблять одинаковое количество ресурсов или есть больше, чем просто память? От взгляда на код кажется, что для канала есть несколько частей накладных расходов, таких как подметание и инициализация. Это сильно влияет на производительность сервера, когда есть много каналов? – Chap
Вы _could_ используете один служебный канал для каждого 'user_id', но это было бы необязательно. Сказав, что CometD был протестирован в масштабе до десятков тысяч каналов без проблем, но вы все равно хотите обратить внимание на ненужные ресурсы, если это не обязательно. API CometD позволяет эффективно отправлять сообщения одному клиенту, поэтому очень просто написать такие приложения. – sbordet