因此,让我们考虑一组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年的最佳选择。
答案 0 :(得分:1)
Redis Pub / Sub是一个非常好的选择。您真正需要担心的一件事是在某些情况下的连接限制数。因为您知道WebSockets是长期连接,所以此负载均衡与Http几乎没有什么不同。我建议您阅读此书,我相信您会为此找到一些好的资源。