假设有50w人在线,线上分布式部署,想请问下sendToGroup 和 sendToClientID这两者的使用效率有什么差别?例如CPU、内存、是否会阻塞这种区别?
并发上来的话,如果sendToGroup意味着要广播50w-1次数据给其他客户端
sendXX接口都不会阻塞。sendToGroup性能更好。
我刚刚看下一下sendToGroup的源码,发现本质上是在joinGroup的时候,把当前客户端的连接保存起来,也就是每个group映射多个connection,最终sendToGroup的时候实际上是编辑当前group的所有connection,然后走Tcpconnect去下发一次。那么有个问题请教下,例如我们后台需要推送一个商品,当前群聊可能有50w在线客户端,推送商品的时候会先转发到gateway,那如果转发到的gateway处理了20w后出现繁忙或者busy的时候,这时候会怎么处理后面的30w的推送??请教一下
我们是分布式部署
或者说有个场景是:并发连接数现在很高了 ,同时向一个群组推送3个不同的内容(例如商品),群组可能有2w人在线,这种场景能够确保这个群组的所有人都可以同时收到3个推送的商品吗???
2万在线服务端可以保证同时发出去,但是客户端是否同时收到看具体网络环境。如果客户端网络不好或者服务器带宽不够可能会延迟。
sendXX接口都不会阻塞。sendToGroup性能更好。
我刚刚看下一下sendToGroup的源码,发现本质上是在joinGroup的时候,把当前客户端的连接保存起来,也就是每个group映射多个connection,最终sendToGroup的时候实际上是编辑当前group的所有connection,然后走Tcpconnect去下发一次。那么有个问题请教下,例如我们后台需要推送一个商品,当前群聊可能有50w在线客户端,推送商品的时候会先转发到gateway,那如果转发到的gateway处理了20w后出现繁忙或者busy的时候,这时候会怎么处理后面的30w的推送??请教一下
我们是分布式部署
或者说有个场景是:并发连接数现在很高了 ,同时向一个群组推送3个不同的内容(例如商品),群组可能有2w人在线,这种场景能够确保这个群组的所有人都可以同时收到3个推送的商品吗???
2万在线服务端可以保证同时发出去,但是客户端是否同时收到看具体网络环境。如果客户端网络不好或者服务器带宽不够可能会延迟。