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

时间:2018-07-04 11:12:40

标签: ruby-on-rails websocket actioncable

我正在使用Rails ActionCable。

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

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

有人可以推荐我一些不错的文章来解释websocket,redis缓存及其在应用程序扩展时的作用。

感谢你们积极响应。

1 个答案:

答案 0 :(得分:0)

尽管我认为问题是“ Multiple websocket channels, single ws object?”的重复,但我还是要添加一些具体的ActionCable注意事项。

  

扩大规模时,哪个更好?

按比例放大时,单个WebSocket连接通常更好。

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

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

  

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

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

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

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

但是

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

实际上,有人可能会说实施速度太慢,以至于轮询会更好。

比较ActionCable to AnyCable或服务器端Iodine WebSocket + Pub/Sub solution会立即强调一个事实,即在解决问题之前,应将ActionCable替换为其他解决方案。

进一步阅读

我刚刚开始阅读this article about Ruby WebSockets, Push and Pub/Sub,看来写得很好。

我还写了一篇有关WebSocket的Ruby实现的主要问题以及服务器端WebSocket解决方案如何解决这些问题的文章。您可以read it here