首页 > 解决方案 > 哪个更好:使用多个通道或在单个通道中有多个条件?

问题描述

我正在使用 Rails ActionCable。

我主要可以在两种选择之间进行选择。其中之一是将多个渠道用于不同的功能。其他选项是使用具有多个条件的相同通道来创建相同的功能。

放大时哪个更好?在构建应用程序时过度依赖 websockets (Actioncable) 的缺点是什么?

有人可以向我推荐一些很好的文章,它解释了 websockets、redis 缓存及其在应用程序扩展时的效果。

感谢你们期待积极的回应。

标签: ruby-on-railswebsocketactioncable

解决方案


虽然我认为这个问题与“多个 websocket 通道,单个 ws 对象? ”重复,但我将添加一些具体的 ActionCable 考虑因素以澄清。

放大时哪个更好?

扩展时,单个 WebSocket 连接(通常)更好。

服务器对其可以处理的连接数有限制,这意味着为每个客户端添加 WebSocket 连接将消耗有限的服务器资源。

例如,如果每个客户端需要 2 个 WebSocket 连接而不是 1 个,则服务器的容量减少一半(从 100% 下降到 50%)。

在构建应用程序时过度依赖 websockets (Actioncable) 的缺点是什么?

一些机器运行不支持 WebSockets 的旧版浏览器。此外,WebSocket 应用程序和客户端通常更难编码,这意味着更高的维护成本。

话虽如此,WebSockets 是解决困扰 Web 应用程序多年的问题的绝佳解决方案,并且优于轮询技术。

总而言之,我认为应该忽略缺点,因为优点远远超过成本。

但是

话虽如此,请注意目前的Actioncable实施速度很慢。

事实上,有人可能会争辩说实施速度太慢了,轮询会更好。

ActionCable 与 AnyCable或服务器端Iodine WebSocket + Pub/Sub 解决方案进行比较将立即突出一个事实,即 ActionCable 应该被其他解决方案替换,直到它被修复为止。

进一步阅读

我刚开始阅读这篇关于 Ruby WebSockets、Push 和 Pub/Sub的文章,看起来写得很好。

我还写了一篇关于 WebSocket 的 Ruby 实现的主要问题以及服务器端 WebSocket 解决方案如何解决这些问题的文章。你可以在这里阅读


推荐阅读