导读:本文介绍了常见的移动网络以及弱网络出现的场景,然后针对即时通讯APP的网络通讯方案进行了解,在此基础上,对互联网APP网络通讯的优化方案给出一定的建议。
运营商 |
手机网络 |
含义 |
理论峰值 |
移动 |
G |
GSM |
114Kbps |
E |
EDGE |
384Kbps |
|
T/H |
TD-SCDMA |
R4, 378.2Kbps |
|
4G |
TD-LTE |
80M~1Gbps |
|
联通 |
G |
GSM |
114Kbps |
E |
EDGE |
384Kbps |
|
3G/H |
HSDPA, 3~3.5G |
7.2Mbps |
|
H+ |
HSDPA, 3.75G |
42Mbps |
|
电信 |
1X |
CDMA 1X |
144Kbps |
3G |
CDMA2000(EVDO.A), |
290Kbps |
协议标准 |
理论峰值 |
IEEE802.11b |
11Mbps |
IEEE802.11a |
54Mbps |
IEEE802.11g |
54M~108Mbps |
IEEE802.11ac |
1Gbps |
当手机信号不稳定时,就会在几个频段中进行切换,来保证通话和网络,如联通手机会出现无网络/G/E/3G/H/H+。除了频道切换,移动设备还会从固定网络的一个接入点转换到另外一个接入点。在蜂窝电话和移动网络中,这样的连接点称为基站(BS),在无线LAN(WLAN)中,将它们称为接入点(AP)。移动网络是一种混合网络,它将涉及到移动设备的链接从一个BS/AP转换到领一个BS/AP,在BS和AP之间转换或者相反。在每个切换过程中,需要考虑话音业务与数据业务的无损和时延。
因用户在移动,基站信号时强时弱,手机网络频段不停切换,在即时消息通讯建立、传输和关闭等三个阶段,网络不停切换(如联通用户会在No service/G/E/3G/H+之间切换)。
弱网络通讯的困难点:
1、文字、图片、音频和视频传输过程中,终端设备网络会切换,数据传输需要根据网络协议进行适应性转变。
2、移动网络存在线和离线频繁转换,连接不稳定,网络高延迟,资费敏感
主流即时通讯APP常用协议有SIP与XMPP,两者比较如下:
基础协议 |
SIP |
XMPP |
数据包大小 |
较大 |
较小 |
延迟 |
一般 |
较小 |
成熟度 |
较为成熟 |
新兴技术 |
功能 |
支持各种即时消息通讯 |
支持各种即时消息通讯 |
可扩展性 |
一般 |
很强 |
主流厂家支持 |
微软,IBM |
SUN,ORACLE,GOOGLE |
微信、陌陌等软件的通讯协议均在XMPP协议的基础上进行改进而来。
l 概述
XMPP:Extensible Messaging and PresenceProtocol
可扩展:XML;
即时通讯:Jabber
开放的:opensystem
安全:SASL,TLS
标准:IETF,RFC3920,RFC3921 (RFC6120,RFC6121)
l 架构
体系架构:XMPP server其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。其包含的功能有:
1.会话管理器:负责客户端会话认证,在线状态,用户联系表等;
2.数据存储器(XDB):连接数据库系统,保持用户信息、通信日志等;
3.连接器管理器:管理与客户端之间的连接;
4.服务器连接器:管理xmpp服务器之间的连接;
5.传输器:建立xmpp服务器与非xmpp服务器通信;
工作原理:所有从一个client到另一个client的jabber消息和数据都要通过xmpp server。
1.client连接到server;
2.server利用本地目录系统的证书对其认证;
3.client制定目标地址,让server告知目标状态;
4.server查找,连接并进行相互认证;
5.client间进行交互;
l 协议
XMPP地址:JID=[ node”@” ] domain [ “/” resource]
其中node代表用户名,domain代表服务器域名,resource属于用户的位置或设备。一个用户可以同时以多种资源与同一个XMPP服务器连接。
XMPP消息格式:<stream><presence/><message/><iq/></stream>
Presence:确定用户状态
Message:两个用户之间发送消息
Iq:管理XMPP服务器上两个用户的转换,允许他们通过相应的xml格式的查询和响应
示例:
<stram> <presence from=cyber1@jabber.org/contact to=cyber2@jabber.org/contact> <status>online</status> </prensence> <message from=cyber1@jabber.org/contact to=cyber2@jabber.org/contact type="chat"> <body>Hello</body> </message> <iq from=cyber1@jabber.org/contact id=“id1” type=“result”> </iq> </stream> |
l 安全
XMPP采用SASL作为身份认证协议,采用TLS的“START-TLS”扩展来为通信双方提供加密性和数据完整性服务
XMPP为网络的消息传递提供了一个通用框架。
在线游戏中大量使用了XMPP。XMPP为在线游戏提供了一组关键的功能,包括验证、到场信息、聊天以及可扩展的游戏状态信息的实时交流。
云计算中也大量使了XMPP。云计算和存储依赖不同层次和形式的通讯,XMPP应用在不同的层次,作为理想的中间件协议。
优点:
开放,标准,证实可用;分散式,安全,可扩展,弹性佳,具有多样性。
缺点:
数据量大,负载重;不支持二进制数据。
参考即时通讯APP在网络架构一块的应用,互联网APP有不少可以借鉴的地方,来提升稳定、安全和可靠。
互联网APP的心跳机制一般是由APP自身包办,缺少XMPP的协议支持。
互联网APP的心跳机制的特点:
1、心跳信息是单方向的,只有由终端发送到服务器;
2、心跳信息的周期比较长,一般由30s(QQ)~300s(微信)~1680s(Google原生应用)
3、心跳信息除宣告在线外,还需要实时获取终端即时地址,方便服务器寻址
4、心跳信息有副作用,让终端更耗电,耗流量,资费敏感,容易引起信令风暴或者网络堵塞
在心跳机制方面的优化建议:
心跳频率的智能设置。合理的心跳频率,既能让电耗和流量损耗能被终端接受,有方便服务端监管业务。可以针对网络特点,区分出移动网络、WLAN网络,甚至进一步细分,在不同的网络下智能调整心跳包的发送频率。在移动网络接入时,降低心跳包的发送频率,这样虽然服务器推送的信息会有一些延迟,但是终端更省电,移动网络更稳健。在WLAN或高速网络接入时,提高心跳包的发送频率,增强实时交互,提升用户体验。
公用的位置寄存器。心跳机制是不可避免的,很多APP作为一个壳,里面包含的应用很多,应该建立或直接使用公用的位置寄存器,使用统一的心跳即可。
与话音业务部一样,互联网APP一般是使用移动设备的数据业务。话音网络采用电路交换,数据网络采用分组交换,后者的时延要低。数据网络的切换是依赖移动运营商的算法,我们能优化的方面有:
网络适配。不同的网络使用不同的数据包,比如WLAN可以用高清的图片,G/E网络下用普通的图片,这些原则已经被很多APP采用。此外,切换的时候要考虑无损和缓存。
交互报文的合理设计。针对交互报文进行合理设计,报文流量要小,交互简单,以便于快速收发。设计考虑断点、容错、续传和重发。
压缩再压缩。选用优秀的压缩算法,对大数据进行压缩,轻量是一贯的原则,不同大小的报文采用不同的压缩方案传递。
性能的表现是建立在以下几个功能上:开机时间、页面loading的状态、切换页面动画的流畅度、误差和等待时间。
从这几个功能上重点优化,除了上述网络和通讯原因,影响性能的因素还有以下几个方面:
原文地址:http://blog.csdn.net/ahpo/article/details/46412807