Android架构之长连接技术

本文详细探讨了Android架构中的长连接技术,对比了长连接与Http短连接的区别,阐述了长连接的必要性,如降低网络延时、节省带宽、服务端Push数据。还介绍了可能导致长连接断开的情况,如进程被杀、网络切换等,并提出了建立稳定长连接的方法,包括使用Mars框架、心跳机制和断开重连策略。此外,文章讨论了Mars的智能心跳机制,以及长连接的数据协议和加密。最后,提到了长连接通道建设和容灾措施。
摘要由CSDN通过智能技术生成

版权声明:本文原创发布于公众号 wingjay,转载请务必注明出处! https://blog.csdn.net/lanxian837820149/article/details/88628573

上一篇文章《Android 架构之网络框架(上)》中,我们谈过了网络框架OkHttp、网络加速方案如HttpDNS、数据压缩与序列化等技术点。本文我们结合腾讯Mars框架美团Shark体系等业内主流长连接方案,谈一谈长连接技术的各个方面。

本文会包括下面的技术点:

  • 长连接与Http短连接、Keep-Alive傻傻分不清
  • 你为什么需要长连接
  • 长连接何时会断开
  • 如何建立稳定长连接
  • Mars智能心跳机制
  • 长连接数据协议及加密
  • 长连接通道建设及容灾

除了大家常用的Http短连接,大型App几乎都会搭建一套完整的TCP长连接网络通道。我们先来看下美团Shark长连接的线上数据:
image
image

图片来源 《美团点评移动网络优化实践

上面两张图片对比了长/短连接的成功率和网络延时数据,这两个是网络模块最重要的衡量指标。可以看出,无论是成功率,还是网络延时,长连接都明显优于短连接。

另外,大家都知道微信的消息收发非常即时,这便归功于背后稳定高可用的长连接系统。实际上,微信除了消息收发,其他的小数据通信都是通过长连接来实现的。

下面我们来讲解一些长连接的一些核心技术点。

I. 长连接与Http短连接、Keep-Alive傻傻分不清

为防止大家对于长连接和短连接混淆,这里先简单说明下几点区别。

1. 长连接 vs Http短连接

这两者分别对应的是TCP协议层长连接短连接

大家都知道,TCP会通过三次握手,建立与服务端的连接,然后传递数据,只不过短连接在数据传输完后,会主动关闭连接,而长连接会继续保持这条连接,后续的数据读写继续使用这条连接。

2. 长连接 vs Http的Keep-Alive

上一篇文章中提到了连接复用,通过Http1.1的Keep Alive字段,我们可以让一条Http连接保持不被立即关闭。有些同学这时就疑惑了,是不是长连接就是Keep Alive呢?

其实不是的。长连接我们也叫TCP长连接,它是架设在TCP协议上的,而上面说的Keep Alive是Http协议的内容,连协议都不同,两者自然不是一个东西。

开启了Keep Alive是Http连接,我们也称之为持久连接,和长连接并不同。感兴趣可参考此文:《TCP 进阶》

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值