看了极光推送技术原理的几点思考

分类: android2012-11-26 20:50 16586人阅读 评论(18) 收藏 举报

目录(?)[+]

移动互联网应用现状

因为手机平台本身、电量、网络流量的限制,移动互联网应用在设计上跟传统 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万个长连接。

后记

稳定维护长连接是推送平台的一个基础,极光推送团队将会在这方面长期投入,以保证用户能有效的节省电量、流量,同时数据能实时送达。

以上是极光推送官方的文章,但是看了之后不免有几个疑问。

1)他们号称最高峰值可以达到300W的长连接,但是活跃链接的处理最高是多少呢?

2)消息的平均长度和限制各是多少?

3)消息的及时性怎么样,延时是多少?

4)不知道现在,极光推送的用户大概有多少,所以这个峰值是在生产环境,还是测试环境的数值?

5)我想不通的是为什么,客户端要用AlarmManager来做推送消息的获取?这个消息获取还及时吗?鄙人结识android也有N载。

6)我感兴趣的是,不是极光方案一个月推送了几百万条数据,而是几秒钟或者一分钟可以处理多少。

转载于:https://www.cnblogs.com/u0mo5/p/4413437.html

看了极光推送技术原理的几点思考相关推荐

  1. 极光推送技术原理:移动无线网络长连接(转自eoe移动开发门户)

    看了看极光推送的原理,还不是太明白,现在记录下来,供以后深究.原文如下: 移动互联网应用现状 因为手机平台本身.电量.网络流量的限制,移动互联网应用在设计上跟传统 PC 上的应用很大不一样,需要根据手 ...

  2. 个推和极光推送技术介绍

    一.概念 1.早期推送服务 在移动互联网以前的手机,如果有事情发生要通知用户,则会弹出一个窗口,告诉用户正在发生的事,可能是未接电话提示.日历提醒或是一封彩信.推送功能最早是被用于Email中,而目前 ...

  3. php消息实时推送技术,基于HTTP协议之WEB消息实时推送技术原理及实现

    很早就想写一些关于网页消息实时推送技术方面的文章,但是由于最近实在忙,没有时间去写文章.本文主要讲解基于 HTTP1.1 协议的 WEB 推送的技术原理及实现.本人曾经在工作的时候也有做过一些用到网页 ...

  4. Web端服务器推送技术原理分析及dwr框架简单的使用

    转载:http://blog.csdn.net/shimiso/article/details/8151362 1 背景 "服务器推送技术"(ServerPushing)是最近We ...

  5. 服务器推送技术原理分析及dwr框架简单的使用

    1        背景 "服务器推送技术"( ServerPushing)是最近 Web技术中最热门的一个流行术语.它是继" Ajax "之后又一个倍受追捧的  ...

  6. Android之基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]

    http://blog.csdn.net/shimiso/article/details/8156439 前面几篇给大家系统讲解的有关xmpp openfire smack asmack相关的技术和使 ...

  7. Android中极光推送

    一. 概念: 极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度.提高应用的留存率.极光推送客户端支持 A ...

  8. 极光推送之java后台封装REST API

    1 什么是推送? 这个看图效果最好请直接看下图: 我们手机经常会收到如上图弹框消息,我们今天说的就是上面的弹窗信息如何推送的.一般情况我们可以通过第三的服务来给自己的app发送推送消息例如:极光推送. ...

  9. 从极光推送的实现原理概括iOS和Andriod推送原理

    推送是手机中非常常见的功能了.可是在实现上iOS和Andriod却有很大的差别. 因为iOS有强大的产品生态体系,APP从研发到审核上架,再到最后在手机端运行,都有严格的把关.所以推送功能在它这里实现 ...

最新文章

  1. anaconda切换盘符以及手动安装包
  2. 《Android开发艺术探索》读书笔记 (3) 第3章 View的事件体系
  3. 关于TP-LINK宽带路由器上的“转发规则”功能用途及设置办法
  4. 在本地机房享受专属公共云服务,详解阿里云本地化部署服务云盒
  5. HTML5的Canvas画图模拟太阳系运转
  6. hdu 2871 Memory Control(线段树)
  7. SharePoint 2010 RBS 安装和配置遇到的一个问题
  8. 接口缺方法调用时报错_TypeScript真香系列——接口篇
  9. Windows核心编程_窗口启动效果
  10. ieee浮点数与常规浮点数_浮点数如何工作
  11. excel 某个单元格不是等于空值,Excel返回第一个与所有非空单元格及统计数量,把空单元格替换为0...
  12. JS-表格行的动态删除和添加(insertRow deleteRow)
  13. Cartesian coordinate system
  14. Opencv图像基本操作——读取、显示、截取图像、属性、颜色通道、边界填充、图像融合
  15. 企业中流砥柱:别让企业中层缺位
  16. 一些根本不用数据结构的题。。(积木大赛、焚风现象)
  17. 张柏芝《影子爱人》曝剧照 亲手设浪漫爱情桥段_0
  18. chatgpt智能提效职场办公-ppt怎么压缩文件大小
  19. 起先于心血来潮的linux学习...
  20. 细谈get、post区别

热门文章

  1. 伍六七带你学算法 入门篇-卡牌分组
  2. 2022-2028年中国茶几玻璃行业市场研究及前瞻分析报告
  3. Docker入门六部曲——Swarm
  4. 2022-2028年中国铝工业投资分析及前景预测报告(全卷)
  5. Python+OpenCV 图像处理系列(4)—— 图像像素的读写、算术运算、逻辑运算及像素的统计
  6. ideal如何创建dynamic web project
  7. 详解Spring中Bean的自动装配~
  8. 有了NPU,还要DSP吗?
  9. TVM 高效保护隐私 ML
  10. TensorRT-优化-原理