【发布时间】:2015-09-17 00:32:30
【问题描述】:
在设计客户端/服务器架构期间,将多个 WEBSOCKET 连接从同一进程多路复用到服务器(即共享一个连接)与在客户端中为每个线程/会话打开一个 WEBSOCKET 连接(如通常在连接到 memcached 或数据库服务器时完成。)
我知道与每个连接相关的开销(例如 RAM ...)。但预计每个客户端最多少于 1K-10K。
具体用例: 假设,我有一个远程服务器,一侧有多个会话,另一侧有多个客户端,每个客户端将通过 websocket 服务器连接到不同的会话。 在远程服务器中,有两种实现方式:(1)每个会话创建自己的 websocket 连接(2)所有会话将使用相同的 websocket 连接。
从连接的角度来看,我喜欢共享解决方案(一个 websocket 连接到所有会话),因为 websocket 服务器受到可用连接数的限制(节省服务器/缩放)。
但是从流量/数据速度/性能的角度来看,如果一个会话会通过连接发送很多小包,那么,如果我们使用一个共享连接,我们将无法利用带宽(有效负载.. ../collect几个小包为一个或将大包拆分为小包),因为我们可能需要从不同的会话向不同的客户端发送不同的包,在这种情况下,我们将无法收集几个包(小包)因为它们有不同的目的地和不同的来源!!,除非我们将创建“虚拟连接”来管理每个会话数据以最大限度地提高速度,但这会产生很多实现复杂性!!!
还有其他意见吗?
谢谢, JB.
【问题讨论】: