SlideShare ist ein Scribd-Unternehmen logo
1 von 4
极光推送技术原理:移动无线网络长连接

移动互联网应用现状

因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 PC

上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时

又要尽可能的保证数据能及时到达客户端。


为了解决数据同步的问题,在手机平台上,常用的方法有 2 种。一种是定时去服

务器上查询数据,也叫 Polling,还有一种手机跟服务器之间维护一个 TCP 长

连接,当服务器有数据时,实时推送到客户端,也就是我们说的 Push。


从耗费的电量、流量和数据送达的及时性来说,Push 都会有明显的优势,但

Push 的实现和维护成本相对较高。在移动无线网络下维护长连接,相对也有一

些技术上的难度。本文试图给大家介绍一下我们极光推送在 Android 平台上是

如何维护长连接。


移动无线网络的特点

因为 IP v4 的 IP 量有限,运营商分配给手机终端的 IP 是运营商内网的 IP,

手机要连接 Internet,就需要通过运营商的网关做一个网络地址转换(Network

Address Translation,NAT)。简单的说运营商的网关需要维护一个外网 IP、

端口到内网 IP、端口的对应关系,以确保内网的手机可以跟 Internet 的服务器

通讯。
图片源自 cisco.com.




NAT 功能由图中的 GGSN 模块实现。


大部分移动无线网络运营商都在链路一段时间没有数据通讯时,会淘汰 NAT 表

中的对应项,造成链路中断。


Android 平台上长连接的实现

为了不让 NAT 表失效,我们需要定时的发心跳,以刷新 NAT 表项,避免被淘

汰。


Android 上定时运行任务常用的方法有 2 种,一种方法用 Timer,另一种是

AlarmManager。


Timer
Android 的 Timer 类可以用来计划需要循环执行的任务,Timer 的问题是它需

要用 WakeLock 让 CPU 保持唤醒状态,这样会大量消耗手机电量,大大减短

手机待机时间。这种方式不能满足我们的需求。


AlarmManager


AlarmManager 是 Android 系统封装的用于管理 RTC 的模块,RTC (Real

Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的

时间到达时,通过中断唤醒 CPU。


这意味着,如果我们用 AlarmManager 来定时执行任务,CPU 可以正常的休

眠,只有在需要运行任务时醒来一段很短的时间。极光推送的 Android SDK 就

是基于这种技术实现的。


服务器设计

当有大量的手机终端需要与服务器维持长连接时,对服务器的设计会是一个很大

的挑战。


假设一台服务器维护 10 万个长连接,当有 1000 万用户量时,需要有多达 100

台的服务器来维护这些用户的长连接,这里还不算用于做备份的服务器,这将会

是一个巨大的成本问题。那就需要我们尽可能提高单台服务器接入用户的量,也

就是业界已经讨论很久了的 C10K 问题。


C2000K
针对这个问题,我们专门成立了一个项目,命名为 C2000K,顾名思义,我们的

目标是单机维持 200 万个长连接。最终我们采用了多消息循环、异步非阻塞的

模型,在一台双核、24G 内存的服务器上,实现峰值维持超过 300 万个长连接。


后记

稳定维护长连接是推送平台的一个基础,极光推送团队将会在这方面长期投入,

以保证用户能有效的节省电量、流量,同时数据能实时送达。

Weitere ähnliche Inhalte

Ähnlich wie 极光推送技术原理解析

长连接服务 WebSocket Service
长连接服务 WebSocket Service长连接服务 WebSocket Service
长连接服务 WebSocket ServiceRhythm Sun
 
07 tang xiongyan
07 tang xiongyan07 tang xiongyan
07 tang xiongyanMason Mei
 
对无线局域网应用前景的探讨
对无线局域网应用前景的探讨对无线局域网应用前景的探讨
对无线局域网应用前景的探讨beiyingmei11
 
基于云计算平台的移动Iptv系统设计及负载均衡技术研究
基于云计算平台的移动Iptv系统设计及负载均衡技术研究基于云计算平台的移动Iptv系统设计及负载均衡技术研究
基于云计算平台的移动Iptv系统设计及负载均衡技术研究liangxiao0315
 
我國寬頻上網速率評量試驗計畫第一階段成果摘要報告
我國寬頻上網速率評量試驗計畫第一階段成果摘要報告我國寬頻上網速率評量試驗計畫第一階段成果摘要報告
我國寬頻上網速率評量試驗計畫第一階段成果摘要報告jessie0203
 
06 duan xiaodong
06 duan xiaodong06 duan xiaodong
06 duan xiaodongMason Mei
 
CCCC china unicom xiongyan tang
CCCC china unicom xiongyan tangCCCC china unicom xiongyan tang
CCCC china unicom xiongyan tangCloud Congress
 
Y20151003 詹文男-物聯網的商機與挑戰
Y20151003 詹文男-物聯網的商機與挑戰Y20151003 詹文男-物聯網的商機與挑戰
Y20151003 詹文男-物聯網的商機與挑戰m12016changTIIMP
 
计算机网络:复习
计算机网络:复习计算机网络:复习
计算机网络:复习magicshui
 
物聯網與工業4.0情境分析
物聯網與工業4.0情境分析物聯網與工業4.0情境分析
物聯網與工業4.0情境分析Kenny Huang Ph.D.
 
千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江imShining @DevCamp
 
组网实践
组网实践组网实践
组网实践telab
 
CCCC China Telecom Jun Wan
CCCC China Telecom Jun WanCCCC China Telecom Jun Wan
CCCC China Telecom Jun WanCloud Congress
 
電腦應用 3 網路概論
電腦應用  3 網路概論電腦應用  3 網路概論
電腦應用 3 網路概論Sirong Chen
 

Ähnlich wie 极光推送技术原理解析 (20)

长连接服务 WebSocket Service
长连接服务 WebSocket Service长连接服务 WebSocket Service
长连接服务 WebSocket Service
 
07 tang xiongyan
07 tang xiongyan07 tang xiongyan
07 tang xiongyan
 
对无线局域网应用前景的探讨
对无线局域网应用前景的探讨对无线局域网应用前景的探讨
对无线局域网应用前景的探讨
 
MCCC Lab
MCCC LabMCCC Lab
MCCC Lab
 
基于云计算平台的移动Iptv系统设计及负载均衡技术研究
基于云计算平台的移动Iptv系统设计及负载均衡技术研究基于云计算平台的移动Iptv系统设计及负载均衡技术研究
基于云计算平台的移动Iptv系统设计及负载均衡技术研究
 
我國寬頻上網速率評量試驗計畫第一階段成果摘要報告
我國寬頻上網速率評量試驗計畫第一階段成果摘要報告我國寬頻上網速率評量試驗計畫第一階段成果摘要報告
我國寬頻上網速率評量試驗計畫第一階段成果摘要報告
 
06 duan xiaodong
06 duan xiaodong06 duan xiaodong
06 duan xiaodong
 
CCCC china unicom xiongyan tang
CCCC china unicom xiongyan tangCCCC china unicom xiongyan tang
CCCC china unicom xiongyan tang
 
網路電視
網路電視網路電視
網路電視
 
網路電視
網路電視網路電視
網路電視
 
物联网
物联网物联网
物联网
 
物联网
物联网物联网
物联网
 
Y20151003 詹文男-物聯網的商機與挑戰
Y20151003 詹文男-物聯網的商機與挑戰Y20151003 詹文男-物聯網的商機與挑戰
Y20151003 詹文男-物聯網的商機與挑戰
 
计算机网络:复习
计算机网络:复习计算机网络:复习
计算机网络:复习
 
个推
个推个推
个推
 
物聯網與工業4.0情境分析
物聯網與工業4.0情境分析物聯網與工業4.0情境分析
物聯網與工業4.0情境分析
 
千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江千万级并发在线推送系统架构解析 | 个信互动 叶新江
千万级并发在线推送系统架构解析 | 个信互动 叶新江
 
组网实践
组网实践组网实践
组网实践
 
CCCC China Telecom Jun Wan
CCCC China Telecom Jun WanCCCC China Telecom Jun Wan
CCCC China Telecom Jun Wan
 
電腦應用 3 網路概論
電腦應用  3 網路概論電腦應用  3 網路概論
電腦應用 3 網路概論
 

Mehr von kaerseng

Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试kaerseng
 
Android消息推送之androidpn demo版到正式上线
Android消息推送之androidpn demo版到正式上线Android消息推送之androidpn demo版到正式上线
Android消息推送之androidpn demo版到正式上线kaerseng
 
选择第三方推送
选择第三方推送选择第三方推送
选择第三方推送kaerseng
 
3 分钟搞定 android push
3 分钟搞定 android push3 分钟搞定 android push
3 分钟搞定 android pushkaerseng
 
云推送技术实现与敏捷开发
云推送技术实现与敏捷开发云推送技术实现与敏捷开发
云推送技术实现与敏捷开发kaerseng
 
推聊 3分钟可运行起来的开源 android手机聊天系统
推聊 3分钟可运行起来的开源 android手机聊天系统推聊 3分钟可运行起来的开源 android手机聊天系统
推聊 3分钟可运行起来的开源 android手机聊天系统kaerseng
 
大容量云推送技术解析
大容量云推送技术解析大容量云推送技术解析
大容量云推送技术解析kaerseng
 
通过Push来提高android应用的活跃度
通过Push来提高android应用的活跃度通过Push来提高android应用的活跃度
通过Push来提高android应用的活跃度kaerseng
 
Androidpn作为android推送方案存在的问题
Androidpn作为android推送方案存在的问题Androidpn作为android推送方案存在的问题
Androidpn作为android推送方案存在的问题kaerseng
 

Mehr von kaerseng (9)

Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试Redis 存储分片之代理服务twemproxy 测试
Redis 存储分片之代理服务twemproxy 测试
 
Android消息推送之androidpn demo版到正式上线
Android消息推送之androidpn demo版到正式上线Android消息推送之androidpn demo版到正式上线
Android消息推送之androidpn demo版到正式上线
 
选择第三方推送
选择第三方推送选择第三方推送
选择第三方推送
 
3 分钟搞定 android push
3 分钟搞定 android push3 分钟搞定 android push
3 分钟搞定 android push
 
云推送技术实现与敏捷开发
云推送技术实现与敏捷开发云推送技术实现与敏捷开发
云推送技术实现与敏捷开发
 
推聊 3分钟可运行起来的开源 android手机聊天系统
推聊 3分钟可运行起来的开源 android手机聊天系统推聊 3分钟可运行起来的开源 android手机聊天系统
推聊 3分钟可运行起来的开源 android手机聊天系统
 
大容量云推送技术解析
大容量云推送技术解析大容量云推送技术解析
大容量云推送技术解析
 
通过Push来提高android应用的活跃度
通过Push来提高android应用的活跃度通过Push来提高android应用的活跃度
通过Push来提高android应用的活跃度
 
Androidpn作为android推送方案存在的问题
Androidpn作为android推送方案存在的问题Androidpn作为android推送方案存在的问题
Androidpn作为android推送方案存在的问题
 

极光推送技术原理解析

  • 1. 极光推送技术原理:移动无线网络长连接 移动互联网应用现状 因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手机本身的特点,尽量的节省电量和流量,同时 又要尽可能的保证数据能及时到达客户端。 为了解决数据同步的问题,在手机平台上,常用的方法有 2 种。一种是定时去服 务器上查询数据,也叫 Polling,还有一种手机跟服务器之间维护一个 TCP 长 连接,当服务器有数据时,实时推送到客户端,也就是我们说的 Push。 从耗费的电量、流量和数据送达的及时性来说,Push 都会有明显的优势,但 Push 的实现和维护成本相对较高。在移动无线网络下维护长连接,相对也有一 些技术上的难度。本文试图给大家介绍一下我们极光推送在 Android 平台上是 如何维护长连接。 移动无线网络的特点 因为 IP v4 的 IP 量有限,运营商分配给手机终端的 IP 是运营商内网的 IP, 手机要连接 Internet,就需要通过运营商的网关做一个网络地址转换(Network Address Translation,NAT)。简单的说运营商的网关需要维护一个外网 IP、 端口到内网 IP、端口的对应关系,以确保内网的手机可以跟 Internet 的服务器 通讯。
  • 2. 图片源自 cisco.com. NAT 功能由图中的 GGSN 模块实现。 大部分移动无线网络运营商都在链路一段时间没有数据通讯时,会淘汰 NAT 表 中的对应项,造成链路中断。 Android 平台上长连接的实现 为了不让 NAT 表失效,我们需要定时的发心跳,以刷新 NAT 表项,避免被淘 汰。 Android 上定时运行任务常用的方法有 2 种,一种方法用 Timer,另一种是 AlarmManager。 Timer
  • 3. Android 的 Timer 类可以用来计划需要循环执行的任务,Timer 的问题是它需 要用 WakeLock 让 CPU 保持唤醒状态,这样会大量消耗手机电量,大大减短 手机待机时间。这种方式不能满足我们的需求。 AlarmManager AlarmManager 是 Android 系统封装的用于管理 RTC 的模块,RTC (Real Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的 时间到达时,通过中断唤醒 CPU。 这意味着,如果我们用 AlarmManager 来定时执行任务,CPU 可以正常的休 眠,只有在需要运行任务时醒来一段很短的时间。极光推送的 Android SDK 就 是基于这种技术实现的。 服务器设计 当有大量的手机终端需要与服务器维持长连接时,对服务器的设计会是一个很大 的挑战。 假设一台服务器维护 10 万个长连接,当有 1000 万用户量时,需要有多达 100 台的服务器来维护这些用户的长连接,这里还不算用于做备份的服务器,这将会 是一个巨大的成本问题。那就需要我们尽可能提高单台服务器接入用户的量,也 就是业界已经讨论很久了的 C10K 问题。 C2000K
  • 4. 针对这个问题,我们专门成立了一个项目,命名为 C2000K,顾名思义,我们的 目标是单机维持 200 万个长连接。最终我们采用了多消息循环、异步非阻塞的 模型,在一台双核、24G 内存的服务器上,实现峰值维持超过 300 万个长连接。 后记 稳定维护长连接是推送平台的一个基础,极光推送团队将会在这方面长期投入, 以保证用户能有效的节省电量、流量,同时数据能实时送达。