请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

群聊消息分发疑问

图片描述
老师,群聊消息分发给群成员这处代码,遇到面试官问了这么一个问题,如果是一个万人群,并且每个群成员又是多端登陆的,这个发送会不会有性能问题?有没有优化的方法?我不知道该怎么回答,老师能解答一下吗?

正在回答 回答被采纳积分+3

1回答

conan老师 2023-07-18 06:32:18

万人群就得有万人群的方式不适用普通群,万人群可以这样直接广播给所有netty节点,直接分发。

0 回复 有任何疑惑可以回复我~
  • 提问者 我爱PQ #1
    每个netty节点通过http调用根据groupId获取群成员memberId,再从本地的SessionSocketHolder缓存中获取对应的连接写入消息?
    回复 有任何疑惑可以回复我~ 2023-07-18 11:38:16
  • 不是,有几个手段:
    1.聚合下发。服务端等待一段时间的消息之后下发最后一条消息的id给客户端,客户端再通过http的方式拉消息
    2.把群消息拆出来一个单独的服务,独立维护群成员的缓存,消息下发时采用广播模式,广播模式在前面章节有介绍
    万人群聊的优化究其根本就是想办法聚合,合并。减少消息风暴。
    回复 有任何疑惑可以回复我~ 2023-07-18 11:44:38
  • 提问者 我爱PQ 回复 conan老师 #3
    广播模式下每个netty节点都会消费到这条消息,但是有些netty节点不会有这个群成员对应的连接,所以每个netty节点还需要对消费的消息进行一次过滤,只有该netty节点上确实有对应群成员的连接时,才会向连接写消息,通知客户端的sdk通过http的方式拉消息?
    回复 有任何疑惑可以回复我~ 2023-07-18 12:24:12
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信