Я пытаюсь сравнить каналы Phoenix с новым Rails ActionCable, когда дело доходит до работы с WebSockets.Каким образом трансляция с канала Phoenix ударила клиентов по другим узлам?
В некоторых случаях ActionCable использует Redis для обработки PubSub при передаче сообщения всем клиентам. Пример сценария: 1 из 3 процессов rails на отдельном узле будет иметь возможность транслировать на клиентов, подключенных на всех веб-серверах. Это делается ударом Redis, который, в свою очередь, публикует все серверы rails, которые затем нажимают на всех своих подключенных клиентов.
Я недавно прочитал о подключениях в сети 2 million websocket connections achieved by Phoenix.
Также нашел эту перл: Примечания к выпуску Phoenix 1.0 упоминает об этом в отношении каналов:
Даже на кластере машин, ваши сообщения транслируются через узлы автоматически
Как Phoenix может транслировать клиентов через узлы? Используется ли почтовый ящик и/или какая-либо другая межпроцессная связь под капотом?
Это похоже на вопрос 2) в этом post.
Спасибо!
Спасибо! Все это звучит великолепно. Мне любопытно, как веб-серверы знают друг о друге, чтобы включить одноранговую трансляцию, но я сохраню это для своих собственных исследований. Похоже, эта модель также применима для рабочей очереди. Настоящая фреймворческая фреймворческая фреймворк не будет использовать redis, например sidekiq или [exq] (https://github.com/akira/exq), но будет использовать этот подход. – dimroc
Это для следующего прохода читателя. Каждый узел (в данном случае веб-сервер) знает, как взаимодействовать с другими узлами, потому что они развернули приложение как распределенную систему. Нажмите ссылку ниже для получения более подробной информации: http://benjamintan.io/blog/2014/05/25/connecting-elixir-nodes-on-the-same-lan/ – dimroc