首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >凤凰频道的广播是如何影响其他节点的客户端的?

凤凰频道的广播是如何影响其他节点的客户端的?
EN

Stack Overflow用户
提问于 2015-12-14 02:22:56
回答 1查看 1.9K关注 0票数 9

当涉及到使用Rails ActionCable时,我正在尝试将凤凰频道与新的WebSockets进行比较。

对于某些上下文,ActionCable在向所有客户端广播消息时使用Redis来处理PubSub。示例场景:一个单独节点上的3个rails进程中的一个将能够向连接在所有web服务器上的客户端广播。这是通过点击Redis来实现的,Redis反过来将发布到所有rails服务器,然后rails服务器推送到所有连接的客户端。

我最近读到了关于菲尼克斯实现了200万个websocket连接 websocket连接的文章。

还找到了这个宝石:菲尼克斯1.0发行说明提到了这个关于频道的内容:

即使在一组机器上,您的消息也会自动在节点上广播。

凤凰如何能够跨节点向客户广播?它是在使用邮箱和/或其他进程间通信吗?

这类似于帖子中的问题2)。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-14 03:33:46

菲尼克斯的PubSub层仅用标准库实现。Erlang的并发模型是按箱外分发的。因此,邮箱/消息传递模型只适用于您是在本地send(some_local_pid, :a_message)还是全局send(some_pid_on_another_machine, :a_message)发送消息。这是关于Elixir和Erlang的奇妙之处之一,它允许菲尼克斯摆脱像Redis这样的依赖。如果您对菲尼克斯的PubSub系统如何在其实现中利用这些特性感到好奇,请参阅下面的博客文章:

source=RD+Station

tldr;我们使用本地ETS表来保存节点本地进程的PubSub订阅,并使用每个PubSub.Local服务器都是其成员的单个:pg2组跨节点进行广播。当PubSub.Local服务器接收到广播时,它通过查找本地ETS订阅将消息在本地转发给所有订阅者。实际的IPC详细信息和节点<->节点通信完全由运行时处理。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34258853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档