从通信的角度分析一下微信推送的长连接的弊端——网易面试题

本文深入探讨了微信推送机制中的长连接技术,从通信角度剖析其工作原理,并指出其在Android网络环境下的缺陷与优化方向。重点介绍了信令风暴的概念、心跳包的作用及维护长连接的必要性,同时分析了智能手机网络特性和推送应用的挑战,如信令风暴、信令资源浪费和电量消耗等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网易那场面试整体水平很高,也让我知道如何去准备android方面的面试

印象比较深的就是这个问题  从通信的角度分析一下微信推送的长连接的弊端 这个问题把通信跟android网络很好地结合在一起,查了一下资料发现为了这个问题当年腾讯还跟运行商发生了摩擦

首先了解一下信令风暴

信令风暴:网络受到终端信令的请求超过了网络各项信令处理的能力,引发拥塞甚至雪崩效应,导致网络不可用,我们称之为“信令风暴”

由于手机QQ,微博,微信这种应用的使用往往会有后台推送消息,一般socket连接1对服务器消耗太大,现在常用MQTT这种轻量级消耗的协议来维护一个长连接,维护一个长连接我们需要使用心跳包来通知连接双方彼此之间没有断开,客户端给服务器发一个心跳,服务器收到后进行应答,如果超过一个时间阈值没有收到服务器的应答,那么客户端断开原来的连接,再与服务器重新建立一个连接

由于智能手机使用的移动无线网络跟Internet区别很大,造成以下缺陷:

1、高于正常频率发送心跳包来维持长连接,这样无疑会带来信令风暴

2、这类心跳包频率很短 造成信令资源的浪费

3、造成手机电量的耗费

造成这种原因是由于智能手机连上移动网络时并没有连上真正的Internet。运营商通过NAT(network adddress translation)来转换移动内网ip和外网ip,从而最终实现连上Internet,其中GGSN(gateway GPRS support Node)模块来实现NAT的过程,但是大部分运营商为了减少网管NAT的映射表的负荷,若一个链路有一段时间没有通信就会删除其对应表,造成链路中断,因此运营商采取的是刻意缩短空闲连接的释放超时,来节省信道资源,但是这种刻意释放的行为让这些推送app不得不以高于平常的频率来发送心跳来维护推送的长连接,从而导致了上面提到的三个缺陷


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值