哪个更好:使用多个通道或在单个通道中具有多个条件?



我正在使用Rails ActionCable。

我主要可以在两个选项之间进行选择。其中之一是为不同的功能使用多个通道。另一种选择是使用具有多个锥形的同一通道来创建相同的功能。

扩大规模时哪一个更好?在构建应用程序时过分依赖websockets(Actioncable(有什么缺点?

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

感谢你们的积极回应。

虽然我认为这个问题是"多个 websocket 通道,单个 ws 对象?"的重复,但我将添加一些特定的 ActionCable 注意事项来澄清。

扩大规模时哪一个更好?

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

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

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

在构建应用程序时过分依赖websockets(Actioncable(有什么缺点?

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

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

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

但是

话虽如此,请注意,目前Actioncable实现速度非常慢。

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

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

延伸阅读

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

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

最新更新