默认
打赏 发表评论 8
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
整篇文章看下来收益颇丰,但整体感觉就是文章中的措辞太过「专业」,可能对新手来讲理解难度比较大,这里我对文章中提到的一些内容写一下我自己的一些通俗的理解,如有错误还请指正:

引用:推送连接不稳定
| 通过降级短连接来规避业务网络请求持续失败所带来的成功率下降问题。
| 但如果通道不能快速恢复的话就会造成业务消息投送失败,将直接影响消息投递成功率。

指的是长连接无法建立时,利用轮询请求来拉取最新的消息。但由于这种请求是单向的,只能客户端主动向服务端拉取消息,服务端无法主动向客户端推送消息。
且轮询请求存在时间差,无法保证能及时拉取到最新消息。

引用:断线重连
| 使的业务方可以认为在网络没有发生故障的情况下是持续可用的;

指的是在底层去完成重连操作,偶然的断连不影响用户的操作,用户感受不到断连和重连的情况。

引用:分组/聚合消息
| 通过自定义标签来对一组用户进行消息广播;消息聚合表示将短时间内井喷式的消息进行聚合下发以提高系统的吞吐量;


指的是对消息批量下发,减少消息的往返时间。

引用:实现
| 客户端在心跳巡检计时器设置的心跳周期到达时判断是否存在上次心跳超时的异常,如果心跳超时则认为该连接已经不可用了,则会从连接池移除该连接并触发下文的重连机制。


指的是SDK每次发送心跳包时都会设置一个超时时间,如果在超时时间内没有返回则会记录超时异常。
SDK还会额外开启一个定时器,当到达定时时间节点时检查是否有记录的超时异常,有的话则开始重连操作。

引用:上行数据时及时检测
| 在每次发送上行数据的时候都会及时检测上次心跳是否超时,使得心跳探测结果不必等到下次心跳周期到达的时刻才知悉。


指的是心跳周期比较久时,检查心跳超时可能会不及时,因此在每次发送数据(消息、心跳等)时都会主动检查心跳超时。

引用:非固定心跳
| 利用通道的上下行数据包来动态减少心跳包的发送次数。


指的是业务数据包本身可以充当心跳包的作用,当业务数据收发正常时就证明链路是可用的,就不需要额外再发送心跳包了。

引用:在网络持续不可用的情况下避免连续建连使得系统满载。


指的是当重连失败次数越来越多时,表明短时间内重连成功的几率就越小,这个时候就要适当增加一下重连的间隔,以减轻服务器的负载。

引用:累计异常
| 通道巡检的过程中,巡检管理器会不断收集消息收发过程中出现的超时异常,当超时异常次数连续累计超过配置的最大阈值时,Pike 2.0会认为当前通道可用性较低,需要强制关闭并执行一次自启动。


指的是用错误累计的方法判断连接是否失效,避免偶然的断连使一个原本很好的连接被断开。
评论 8
引用:JackJiang 发表于 2021-08-26 15:46
感谢学霸,总结的好!

不敢不敢,得益于在即时通讯网长期浸染您分享的优质文章,才能做出这个总结
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部