当前位置:  开发笔记 > 编程语言 > 正文

Phoenix Channel的广播如何击中其他节点上的客户端?

如何解决《PhoenixChannel的广播如何击中其他节点上的客户端?》经验,为你挑选了1个好方法。

在使用WebSockets时,我正在尝试将Phoenix Channels与新的Rails ActionCable进行比较.

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

我最近读到了关于Phoenix websocket连接实现的200万个 websocket连接.

还发现了这个宝石:Phoenix 1.0发行说明提到了有关频道的信息:

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

Phoenix如何能够跨节点向客户端广播?它是否在引擎盖下使用邮箱和/或其他一些进程间通信?

这类似于在这个问题2)职位.

谢谢!



1> Chris McCord..:

Phoenix的PubSub层仅使用标准库实现.Erlang VM的并发模型是开箱即用的.因此,邮箱/消息传递模型Just Works,您在本地send(some_local_pid, :a_message)或全局发送消息send(some_pid_on_another_machine, :a_message).这是关于Elixir和Erlang的令人惊奇的事情之一,它允许凤凰城摆脱像Redis这样的依赖.如果您对Phoenix的PubSub系统在其实现中如何利用这些功能感到好奇,请参阅此博客文章:

http://www.zohaib.me/guts-of-phoenix-channels/?utm_campaign=elixir_radar_28&utm_medium=email&utm_source=RD+Station

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


这是为了下一位读者经过.每个节点(在本例中为webserver)都知道如何与其他节点通信,因为它们将应用程序部署为分布式系统.点击以下链接了解更多详情:http://benjamintan.io/blog/2014/05/25/connecting-elixir-nodes-on-the-same-lan/
推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有