如何有效扩展Websocket服务器?

时间:2019-03-22 18:42:21

标签: websocket architecture scalability publish-subscribe event-bus

因此,让我们考虑一组Websocket应用程序。每个用户都连接到这些服务器之一。我需要实现聊天应用程序,其中每个用户都可以向任何用户发送消息。

我正在寻找快速,可靠,可扩展的方法,该怎么做。

我认为,我需要一些df['match'] = df['my_val']==df['db_val'] z = (df .groupby('ID') .agg({'my_val': lambda x: x.value_counts().to_json(), 'db_val': 'first', 'match': 'mean'}) ).reset_index() z['my_val'] = z['my_val'].str.replace('[{"}]','').str.replace(',',';') z['match'] = np.select( [z['match'] > 0.5, z['match'] > 0], ['full_match', 'partial_match'], 'no_match') print(z) 的良好实现。每个用户在连接到Websocket时,都必须在事件总线中进行注册(或订阅)。然后,当另一个用户向给定用户发送消息时, ID my_val db_val match 0 a X:2;Y:1 X full_match 1 b Y:2;X:1 Y full_match 2 c Z:2;X:1 X partial_match 将消息发布给给定用户。

那么,我应该使用哪种事件总线?

我当然知道Redis Pub/Sub,但是我不确定这是2019年的最佳选择。

1 个答案:

答案 0 :(得分:1)

Redis Pub / Sub是一个非常好的选择。您真正需要担心的一件事是在某些情况下的连接限制数。因为您知道WebSockets是长期连接,所以此负载均衡与Http几乎没有什么不同。我建议您阅读此书,我相信您会为此找到一些好的资源。