默认

长连接网关技术专题(四):爱奇艺WebSocket实时推送网关技术实践

查看数: 96720 | 评论数: 9 | 收藏 5
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-05-17 00:30

正文摘要:

本文由爱奇艺技术团队原创分享,原题《构建通用WebSocket推送网关的设计与实践》,即时通讯网收录时有优化和改动。 1、引言 丛所周之,HTTP协议是一种无状态、基于TCP的请求/响应模式的协议,即请求只能由客户端发 ...

评论

JackJiang 发表于 3 年前
引用:wx_PzhXHaGK 发表于 2021-06-17 11:58
1. serverA和serverB 从 rocketmq 均拉取到 消息M
2. clientA 收到了serverA推送的消息M
3. clientA 断 ...

你说的这种情况,就只能依赖客户端的去重策略了
wx_PzhXHaGK 发表于 3 年前
引用:JackJiang 发表于 2021-06-17 11:33
接收两次?你理解的是怎么发生接收两次的?

1. serverA和serverB 从 rocketmq 均拉取到 消息M
2. clientA 收到了serverA推送的消息M
3. clientA 断连,重连到 serverB
     此时serverB上消息M可能还没有被处理
4. clientA接收到serverB推送的消息M
JackJiang 发表于 3 年前
引用:wx_PzhXHaGK 发表于 2021-06-17 11:22
rocketmq广播到consumer之后,各个consumer的消费速度是不一样的。
在这种情况下,如果发生客户端重连,可 ...

接收两次?你理解的是怎么发生接收两次的?
wx_PzhXHaGK 发表于 3 年前
rocketmq广播到consumer之后,各个consumer的消费速度是不一样的。
在这种情况下,如果发生客户端重连,可能同一条消息会被客户端接收两次。

如果系统的qos要求是至多一次,是否就得进行一些调整

这个问题是怎么解决的
JackJiang 发表于 3 年前
引用:Gangan_Master 发表于 2021-05-24 20:45
这种用MQ广播的方式,应该是比较适合这种关系简单的推送,对于群组,朋友圈这种复杂关系推送应该就捉襟见肘 ...

这方案确实还不够完美,但足够简单,也算是一种取舍吧
Gangan_Master 发表于 3 年前
这种用MQ广播的方式,应该是比较适合这种关系简单的推送,对于群组,朋友圈这种复杂关系推送应该就捉襟见肘了
云飞落灯花 发表于 3 年前
引用:JackJiang 发表于 2021-05-18 14:56
是的,文中的这个方案是不够优雅的。

比较优化的方案就是建一个全局的用户列表服务,比如用redis来做 ...

说的对

但这样的架构好像只适合于那种单聊的消息,给某一个用户去推送,从redis里就可以拿到对应的机器ip然后进行下推,那像那种群的类型,或者直播如果使用这种方式会不会不合适,因为一条消息要循环去查某所有用户,消息量一旦大起来了一点点后 整体的量级就是 消息数 * 群人数(或者在线人数) 这种要怎么解决嘞~
JackJiang 发表于 3 年前
引用:云飞落灯花 发表于 2021-05-17 16:25
提问:解决会话共享的问题这块,该文使用的方式是MQ的广播,比如我只想推一个用户,但却需要所有机器进行消 ...

是的,文中的这个方案是不够优雅的。

比较优化的方案就是建一个全局的用户列表服务,比如用redis来做,向指定用户发送时,由路由层先查询这个用户所在的接层实例,向指定的实例通过RPC或者MQ都可以实现。
云飞落灯花 发表于 3 年前
提问:解决会话共享的问题这块,该文使用的方式是MQ的广播,比如我只想推一个用户,但却需要所有机器进行消费处理这样会不会比较浪费资源。还有其他更优的方法没,欢迎评论区交流讨论

返回顶部