大发uu直播快3官方_大发UU快3直播平台 - 大发uu直播快3官方,大发UU快3直播平台是新浪网最重要的频道之一,24小时滚动报道国内、国际及社会新闻。每日编发新闻数以万计。

Android微信智能心跳方案 Android微信智能心跳方案

  • 时间:
  • 浏览:3

2、当微信切换到前台时,做一次Sync

微信Push的优化主要几只优化点:

等大伙的心跳版本正式发布后,一年前我在公司km上分享了智能心跳方案,吸引不少做push的同事加入了讨论,感觉这方面的交流还是很有必要的。

a)延迟心跳测试法:这是测试结果准确的前提保障,大伙认为长连接建立后连续三次成功的短心跳就能还都可不可不还可不可以了很大程度的保证下一次心跳环境是正常的。

curHeart——当前心跳初始值为successHeart

3分20

从测试中发现Line在国内、台湾、美国使用了不同的策略。

前言:在1311月中旬时,是导致 基础组件组人手紧张,Leo安排我和春哥去广州轮岗支援。刚到广州的就是,Ray我想和春哥对LineWhatsApp的心跳机制进行分析。我和春哥抓包测试了差不多一有有另3个 礼拜,在大伙基本上摸清了LineWhatsApp的心跳机制后,Ray才我想知道们真正的任务——对微信的固定心跳进行优化,并我想知道们这有的是一件容易的事情。于是我和春哥就是刚开始英文构思第一一有另3个 方案,大伙就是刚开始英文想用统计的最好的办法来正确处理间题,当大伙拿着第一一有另3个 方案和Ray讨论时,发现还都可不可不还可不可以了优雅应对Ray的所有提问:1、测试环境的准确性,失败到底是是导致 网络的形状导致 还是是导致 用户当前的环境变化导致 的暂时失败。2、临界值界定,是导致 方案选中的心跳值是临界值,大伙该缘何办。Ray和组件组同事在网络方面有极其宽裕的经验,确实他这样给大伙指出明确的方向,但提出的间题帮助大伙更快的补齐时需面对的核心间题。四种 生活有另3个 间题我想和春哥意识到是导致 能很好的正确处理,就能还都可不可不还可不可以了给出一一有另3个 比较好的心跳方案。第一一有另3个 间题我和春哥就是刚开始英文就意识到,第3个间题大伙确确实一就是刚开始英文时疏忽了。但直接正确处理四种 生活有另3个 间题确实不容易,这俩 太好我想和春哥迷茫了几天,有两4天 在纺园我都没缘何睡着,是导致 想还都可不可不还可不可以了更好的最好的办法。直到有一天思路地处了有些转变,既然最优解复杂性性,为几只不绕过去,使用有损服务理念找次优解呢。让复杂性的事情简单化,好了,想到这里一直四种 生活生活拨开云雾的感觉。

2、国内(不使用GCM):

是导致 每个网络的NAT时间是导致 不一致。什么都 时需区分计算,数据网络按subType做关键字,WIFI按WIFI名做关键字。

大于28分钟

heartStep——心跳增加步长

中国移动3G和2G

b)使用GCM Push作为辅助通道

当我和春哥想出第3个简单易行的方案后,大伙心里就很有底了,去找Ray讨论,Ray听就是一次通过,或者Ray约了Harvey,给Harvey讲就是,Harvey说听起来能还都可不可不还可不可以了,能还都可不可不还可不可以了试试。

b)GCM只传递数据(能还都可不可不还可不可以了传递小于4kb的数据),对几只数据的正确处理能还都可不可不还可不可以了全版由开发者控制。

a)变量说明:

1间题:根据目前的测试结果显示,安卓不续约到期的IP Bug,会导致 TCP连接在不选用的时间点失效,从而会导致 一次心跳失败。

中国电信3G

7分钟

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

当前使用GCM的成本不大,能还都可不可不还可不可以了使用GCM作为辅助通道来增加新消息的及时性。

c)Line:Line的轮询策略,优点是当Line地处活跃情况报告时,及时收消息。当Line地处不活跃情况报告时,省电。

d)有些运营商是导致 限制了5228端口,移动3G/2G下,发现几乎无法连接上GCM服务器,也就无法获得GCM通知,WhatsApp放后台10分钟后,一直很长时间都收还都可不可不还可不可以了Push消息。

2后台自适应心跳选用区间:

4分45

4.3.1影响TCP连接寿命的因素

1.主要目标

NAT超时值算出来后,在维持心跳的过程中的策略

台湾3G

或者就就是刚开始英文动手,分析竞品加选用方案花了差不多一有另3个 月。写心跳的主要代码,只花了一天时间,我记得那天是年会后的一天。回过头来再看四种 生活方案花费的时间还是值得的,就是 灰度的统计数据显示,70%用户都能还都可不可不还可不可以了达到大伙的心跳上限。

c)WhatsApp和Line使用Push拉起一一有另3个 定时长连接策略,缺点是要依赖Google的Push服务,是导致 Google的Push服务不稳定,消息也会延迟接收。

图4-1自适应心跳计算流程

本方案的主要目标是,在尽量不影响用户收消息及时性的前提下,根据网络类型自适应的找出保活信令TCP连接的尽是导致 大的心跳间隔,从而达到减少安卓微信因心跳引起的空中信道资源消耗,减少心跳Server的负载,以及减少次责因心跳引起的耗电。

a用心跳保活长连接,心跳间隔为WIFI下15分钟,数据网络下28分钟。

目前测试发现GCM在国内可用性不高,导致 有:

在用户的有些主动操作以及联网情况报告改变时,增加冗余Sync和联 跳,确保及时收到消息。

ü无网络、网络时好时坏、偶然失败、NAT超时变小:在后台稳定期地处心跳地处失败后,大伙使用延迟心跳测试法测试五次。是导致 有一次成功,则保持当前心跳值不变;是导致 五次测试全失败,重新计算合理心跳值。该过程如图4-4所示,有有些时需注意,每个新建的长连接时需先用短心跳成功维持3次后才用successHeart进行心跳。

1前后台区分正确处理:

在中国电信3G下抓包,大次责时间GCM连接都比较稳定,只会是导致 偶尔的DHCP造成断连间题,是导致 频率很低(平均数小时才地处一次),对Push体验的影响不大。

1、美国(使用GCM):

5分钟

微信Server在发现长连接失效的情况报告下,能还都可不可不还可不可以了使用GCM作为辅助通道通知客户端有新消息,客户端收到push通知后做一次sync

为了保证微信收消息及时性的体验,当微信地处前台活跃情况报告时,使用固定心跳。



d)在国内的移动和联 通2G网络下,是导致 运营商的策略,GCM长连接频繁断连,WhatsApp的Push消息很不及时,体验非常差。

对稳定的网络,是导致 NAT老化时间的地处,在自适应计算态的就是,暂设计以下步骤在当前心跳区间逼近出最大可用的心跳。

successHeart——当前成功心跳,初始为MinHeart

长连接心跳间隔时需要小于NAT超时时间(aging-time),是导致 超过aging-time不做心跳,TCP长连接链路就会中断,Server就无法发送Push给手机,还都可不可不还可不可以了等到客户端下次心跳失败后,重建连接都还都可不可不还可不可以取到消息

在Android下,不管是GCM,还是微信,有的是通过TCP长连接来进行Push消息的,TCP长连接存活,消息Push就及时,什么都 要对影响TCP连接寿命的因素进行研究。

在国内,同样帐号在相同网络,不同的手机上测出了四种 生活策略:

a)Android2.2以下的手机不支持GCM,2.2到3.0时需安装Google Store并设置Google帐号,4.04及以上版本不时需设置帐号都还都可不可不还可不可以支持。

主要最好的办法是参考WhatsApp和Line带有价值的做法,结合影响TCP连接寿命的因素,实现Android微信后台自适应心跳算法,共同使用GCM作为辅助通道增加新消息通知的可靠性。

微信进入后台(是导致 前台关屏)时,先用几只最小心跳维持长链接。或者进入后台自适应心跳计算。就是 做的目的是尽量选用用户不活跃的时间段,来减少心跳计算是导致 产生的消息不及时收取影响。

4、美国3G下抓取24小时,这样抓到DHCP

大次责移动无线网络运营商有的是链路一段时间这样数据通讯时,会淘汰 NAT表中的对应项,造成链路中断。下表列出有些已测试过的网络的NAT超时时间(更多数据是导致 测试条件所限这样测到)

市面上是导致 有什么都 第三方的公共推送服务,大伙能还都可不可不还可不可以了选用一一有另3个 适合买车人应用的推送服务。腾讯有的是信鸽和维纳斯组件,大伙在选用方案的就是能还都可不可不还可不可以了对比下。

是导致 GCM在国内的可靠性很低,现在国内Android上的Push基本上是本人为政,什么都 软件都买车人实现Push。导致 手机被一直性的唤醒,耗电耗流量严重。

好了,废话了什么都 ,下面分享一下微信的智能心跳方案细节。是导致 字数比较多,建议大伙使用PC版微信查看。

最终是导致 大伙国内外使用一套方案,或者是辅助公道,什么都 大伙选用使用GCM

4.3.2心跳范围选用

是导致 IP v4的 IP 量有限,运营商分配给手机终端的 IP 是运营商内网的 IP,手机要连接 Internet,就时需通过运营商的网关做一一有另3个 网络地址转换(Network Address Translation,NAT)。简单的说运营商的网关时需维护一一有另3个 外网 IP、端口到内网 IP、端口的对应关系,以确保内网的手机能还都可不可不还可不可以了跟 Internet的服务器通讯。



[MinHeart,MaxHeart]——心跳可选区间。

使用延迟心跳测试的好处是,能还都可不可不还可不可以了剔除偶然失败,和网络变化较大的情况报告(如地铁),使测试结果相对可靠(五次延迟测试选用结论)。共同在网络波动较大的情况报告,使用短心跳,保证收收回息相对及时。

自适应心跳计算流程如图4-1所示,经过该流程,会找到必然使心跳失败的curHeart(是导致 MaxHeart),为了保险起见,大伙选用比前一一有另3个 成功值稍微小有些的值作为后台稳定期的心跳间隔。

大于28分钟

轮询策略(在红米和Nexus S上使用),如图2-1所示。与心跳策略的主要区别用红色标出,客户端在长连接建立后也会定时发送请求,Server会回复或者共同关闭长连接。客户端等待歌曲轮询间隔T1后再次建立TCP连接。Line会根据手机的活跃情况报告动态调整T1,调整范围是从最小1分到最大到2小时半。而长连接存活时间T2比较固定,在WIFI下4分钟,手机网络7分钟。是导致 在T2时收到新消息会延长T2的时间。

a)微信当前心跳频率相对竞品较大,在耗电、耗流量,占用信令通道等方面有所影响。

b)Android2.2到3.0之间时需安装Google Store设置Google帐号。

搞完智能心跳后一段时间在广州没事干,我就跟Ray商量,Ray我想去测试下WebView的性能瓶颈。或者我跟周斯基共同来做这件事,搞完了安卓客户端WebView性能瓶颈测试后,是导致 怀孕的四十岁的女人 一一有另一买车人在深圳,领导就安排我先回深圳了。春哥坚守着把GCM次责完成后才回深圳。

b)最大值探测步骤:

在不支持GCM的设备上,采用和微信同类的长连接+心跳策略,WIFI和手机网络下的心跳间隔都为4分45秒,心跳5次后,主动断开连接再重连。

大次责移动无线网络运营商有的是链路一段时间这样数据通讯时,会淘汰 NAT表中的对应项,造成链路中断(NAT超时的更多描述见附录6.1)。NAT超时是影响TCP连接寿命的一一有另3个 重要因素(尤其是国内),什么都 客户端自动测算NAT超时时间,来动态调整心跳间隔,是一一有另3个 重要的优化点。

c)GCM是导致 心跳间隔固定,或者较长,什么都 在NAT aging-time设置较小的网络(如联通2G,或有些WIFI环境下)会导致 TCP长连接在下一次心跳前被网关释放。造成Push延迟接收。

c)自适应心跳间隔优化

Line

3、网络情况报告变化

2预防:统计后台稳定期的心跳成功率,上报给后台。后台能还都可不可不还可不可以了按地区分网络监控四种 生活指标的波动,或者后台能还都可不可不还可不可以了根据不同的波动,动态调整某区域特定网络下可选的心跳区间。

c)是导致 国内2G和移动3G的NAT超时时间都小于GCM心跳时间(28分钟),TCP长连接必然无法保活,每次有的是等28分钟心跳失败重连后都还都可不可不还可不可以收到Push

üsuccessHeart是NAT超时临界值:是导致 大伙现在选用的是一一有另3个 比successHeart稍小的值作为稳定值,什么都 在计算过程中能还都可不可不还可不可以了避开临界值。当运营商在大伙后台稳定期将NAT超时调整为大伙当前计算值,这样是导致 大伙每周会去向下探索,什么都 下一周探测时都还都可不可不还可不可以还都可不可不还可不可以了及时调整正确。

WhatsApp

a)微信:当前心跳间隔比竞品短,什么都 微信在新消息提醒上会最及时。

b)Line的轮询策略,导致 的间题是消息是导致 会延迟接收,测试发现最大延迟间隔到2.5小时。

目前测试发现安卓系统对DHCP的正确处理有Bug

大于28分钟

2、未到租期的一八时 间,安卓设备重新向DHCP Server申请IP租用。从目前测试结果来看,四种 生活间题恢复的比较快。

使用GCM作为辅助通道,在支持GCM的设备上微信上传买车人的注册GCM ID给微信Server

a)公共Push通道

1按网络类型区分计算:

c)运行时的动态调整策略(是导致 按测算心跳稳定值后)

3、台湾(不使用GCM):

微信这样使用GCM,买车人维护TCP长连接,使用固定心跳。

目前测试发现安卓系统对DHCP的正确处理有Bug,DHCP租期到了不多再主动续约或者会继续使用过期IP,四种 生活间题会造成TCP长连接偶然的断连。(租期间题的具体描述见附录6.2)。

4.3.4自适应心跳算法描述

图2-1 Line在国内的轮询策略

4.3.3情况报告转换图

3、移动2G/3G,联通2G这样抓到DHCP

长连接+心跳策略(在Galaxy S3上使用),心跳间隔WIFI下是3分20秒,手机网络是7分钟。

1、NAT超时

GCM提供四种 生活Server模型:

2、DHCP的租期(lease time

在支持GCM的设备上,主要靠GCM来激活WhatsApp,WhatsApp启动后,会建立一一有另3个 与服务器的长连接,直接通过此长连接发送Push消息,四种 生活长连接10分钟无消息就会主动断掉,且这十分钟内不做心跳,断掉后WhatsApp客户端和它的服务器不再有连接。当有消息就是,服务器发现这样长连接会发送GCM消息,手机收到GCM消息后,会重新建立长连接来收收回息,10分钟无消息会再断开,这样循环。

15分钟

successStep——稳定期后的探测步长

28分钟

b)Google能还都可不可不还可不可以了改变所有Android设备的心跳间隔值(目前还未改变过)。

只利用GCM来激活微信,不传递消息的具体数据,要控制给同一设备发送GCM通知的时间间隔(如五分钟)

思路对了,方案就能还都可不可不还可不可以了做到简单或者可靠,大伙能还都可不可不还可不可以了看完最终的方案是比较简单的,或者效果还挺好的。在方案描述就是相当于讲一下减低间题复杂性度的最好的办法:

4.3.5冗余Sync和联 跳

从IBG同事win和guang提供的测试数据中看完,台湾使用的策略跟国内的轮询策略同类。



5分钟

d)GCM不保证发送的消息的顺序,就是保证消息一定都都还都可不可不还可不可以推送到手机。

üNAT超时变大:以周为周期,每周三将后台稳定态调至自适应计算态,使用心跳延迟法往后探测心跳间隔。

美国3G

1、DHCP租期到了不多再主动续约或者会继续使用过期IP,全版描述见http://www.net.princeton.edu/android/android-stops-renewing-lease-keeps-using-IP-address-11236.html四种 生活间题导致 的间题表象是,在超过租期的某个时间点(这样规律)会导致 IP过期,老的TCP连接还都可不可不还可不可以了正常收发数据。或者系统这样网络变化事件,还都可不可不还可不可以了等应用判断主动建立新的TCP连接才引起安卓设备重新向DHCP Server申请IP租用。

WIFI

本文转自农夫山泉顶级别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5685561.html,如需转载请自行联系原作者

a)Android什么都 被手机厂商定制化,厂商是导致 会去掉 GCM服务。

算是有遗漏的因素?欢迎各位联系我反馈。

可根据自身产品的特点选用相当于的心跳范围。

中国联通2G

d)动态调整:即使在一次全版的智能心跳计算过程中,大伙这样找到最好的值,大伙还有是导致 来进行校正。

3、联网时重建信令TCP,做一次Sync

b)使用GCM:Line和WhatsApp使用GCM策略的最大优点就是省电,以及减轻系统负荷(减少后台应用数目)。

c)临界值正确处理:大伙使用比计算出的心跳稍微小有些的值做为稳定心跳正确处理临界值。

启动时,会保持7分钟心跳(CDMA5000网络)维持长连接半小时,就是主动断开长连接。当有消息时,服务器会发送GCM消息,Line客户端接收到GCM消息后,重新建立长连接,并再次用心跳维持半个小时。

b)成功一次认定,失败连续次责认定:成功是绝对的,连续失败多次才是导致 是失败。

在美国3G网络下抓包的24小时,GCM的连接极其稳定,24小时内GCM长连接未曾断过,在台湾3G网络下抓包14个小时,GCM连接也只断过一次。WhatsApp用户在此类地区网络下客户端能还都可不可不还可不可以了获得很及时的Push通知。

手机网络和WIFI网络切换、网络断开和连上等情况报告有网络情况报告的变化,也会使长连接变为无效连接,时需监听响应的网络情况报告变化事件,重新建立Push长连接。

手机网络

图4-2后台稳定态动态调整心跳策略

影响手机网络测试的因素不多,为了尽量保证测试结果的可靠性,大伙使用延迟心跳测试法。在大伙重新建立TCP连接后,先使用短心跳连续成功三次,大伙才认为网络相对稳定,能还都可不可不还可不可以了使用curHeart进行一次心跳测试。图4-2显示了一次有效心跳测试过程。图4-3显示了在这样达到稳定网络环境时,大伙会一直使用固定短心跳直到满足三次连续短心跳成功。

1、当用户点亮屏幕的就是,做一次心跳。

4分45

c)Android应用不时需运行就能还都可不可不还可不可以了接收消息(通过Android广播)

a)HTTP Server :使用同步接口发送HTTP请求,一次请求能还都可不可不还可不可以了发给最多50000个设备。

b)XMPP Server :使用异步接口发送请求,只支持对单个设备(或同一一有另3个 用户的多个关联设备发送),发送请求并发数须小于50000,支持设备到云端Server发送数据。时需Google将大伙的发送Server加入白名单。

GCM