V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
maxxfire
V2EX  ›  iOS

苹果的 Apns 推送服务器工作原理是什么,为什么不卡?

  •  
  •   maxxfire · 2018-05-25 09:54:51 +08:00 · 7186 次点击
    这是一个创建于 2379 天前的主题,其中的信息可能已经有所发展或是发生改变。

    从资料上看,Apns 是通过向每台设备的 token 发送推送来实现。单单 QQ 就有几亿的用户在发消息,那如果要发 1000 万条消息,就要发 1000 万个设备 token,那不是慢死了。而且世界上有那么多的 App 要实时推送,那它的并发量该有多大呢,那 Apns 服务器怎么不会被累死。

    为什么 Apns 不像 Dns 系统一样,厂商可以自行搭建 Dns 解析服务器,然后通过授权的方式进行分级的解析,从而降低根服务器的负载呢?

    苹果的 Apns 推送服务器到底有多少多强大? 这得多少投入,推送还是免费的。。

    63 条回复    2020-06-12 11:20:12 +08:00
    xmoiduts
        1
    xmoiduts  
       2018-05-25 10:02:56 +08:00 via Android
    所以就有了 30%的保护……咳咳……应用内购分成?
    bleaker
        2
    bleaker  
       2018-05-25 10:41:46 +08:00 via iPhone
    30% 分成和一年 99 刀开发税也不是白交的
    dingdangnao
        3
    dingdangnao  
       2018-05-25 11:10:28 +08:00
    偶尔也会卡 也会卡😂
    CastleBUPT
        4
    CastleBUPT  
       2018-05-25 11:17:49 +08:00
    AppStore 保证每个国家和地区的下载 app 速度正常,这个投入也很大。
    国内安卓应用中心是向 app 开发者收推广费,AppStore 就是用 inApp purchase 和开发税
    Actrace
        5
    Actrace  
       2018-05-25 12:01:05 +08:00   ❤️ 1
    apple 可是买下了整个 17.0.0.0/8 的厂商,网络资源要多强大又多强大。
    连直营店的免费 wifi 都是 CN2 的网络。
    CoderGeek
        6
    CoderGeek  
       2018-05-25 13:31:40 +08:00
    - - 同样他分成要的也很多
    lihongming
        7
    lihongming  
       2018-05-25 13:41:05 +08:00 via Android
    你觉得 apns 和 gfw 哪个负荷更大?
    只要有钱,服务器压力根本不叫问题,以苹果的风格,钱能搞定的事情一般也不会费心思去优化技术。
    我为什么这么说呢?给你讲个故事就懂了——当年 iPhone 刚出来的时候,富士康的质检部门连一根测试用的数据线都搞不到,因为接口太小,富士康自己做的接头做不到那么高的精度。后来苹果给它提供了两根数据线,并不是苹果找了个更牛逼的加工商,而是苹果让人做了 3000 根,从中挑了两根尺寸符合要求的
    mikej
        8
    mikej  
       2018-05-25 13:45:16 +08:00
    这么大体量的公司,这点投入几乎是可以忽略不计的。
    yuriko
        9
    yuriko  
       2018-05-25 13:55:46 +08:00   ❤️ 1
    @lihongming 这个故事我听到的版本是 Apple pencil 的
    MarginK
        10
    MarginK  
       2018-05-25 13:58:10 +08:00   ❤️ 1
    @lihongming
    @yuriko

    同样的逻辑,我听到的是关于中科院航天材料的版本。。。
    bleaker
        11
    bleaker  
       2018-05-25 14:02:32 +08:00   ❤️ 1
    @Actrace 也不能说是买的,IANA 分的,九十年代初的大玩家都有自己的 IP 段,比如 16.0.0.0/8 是惠普的,19.0.0.0/8 是。。。福特汽车的
    athanos
        12
    athanos  
       2018-05-25 14:06:24 +08:00 via Android
    @Actrace @lihongming 原来有这么多无脑 apple 吹啊,传一些都市传说。
    maxxfire
        13
    maxxfire  
    OP
       2018-05-25 15:14:50 +08:00
    像安卓就把推送这块开放出来,都可以自行搭建。然后苹果就是搞封闭的应用生态,这很符合苹果一贯作风。
    不过也可以想象,要做到推送的实时性,苹果应该在全世界各个角落都部署了很多推送服务器。
    maxxfire
        14
    maxxfire  
    OP
       2018-05-25 15:18:10 +08:00
    @dingdangnao 是的,以前也有出现过推送延迟几分钟到来,对于某些实时性要求高的 App 就有问题了。 不过,像 QQ 那种全国范围的发大量消息,就相当于是对 Apns 服务器进行 DDOS 攻击了吧。。
    dex2jar
        15
    dex2jar  
       2018-05-25 15:21:11 +08:00
    忽然冒出来的这些苹果吹真是让人触不及防。。
    技术是很难,花的钱不一定非常多。很重要的是,用苹果的依旧不是大多数人。qq 用户都比苹果的用户多。qq 都没啥事不是
    Anhedonia
        16
    Anhedonia  
       2018-05-25 15:22:07 +08:00
    @CoderGeek Google Play 也是 30%
    许多国内市场还有 50%
    ichanne
        17
    ichanne  
       2018-05-25 15:23:04 +08:00
    之前推算过一次,微信每更新一次,App Store 大概需要 2PB 下载流量
    kera0a
        18
    kera0a  
       2018-05-25 15:27:06 +08:00   ❤️ 3
    @dex2jar 你是不是傻,iOS 上就一个 QQ 能发推送?
    JJBOOM
        19
    JJBOOM  
       2018-05-25 15:46:18 +08:00
    苹果:对不起有钱就是可以为所欲为
    murmur
        20
    murmur  
       2018-05-25 15:49:59 +08:00
    APNS 国内转没转云上贵州?
    Tink
        21
    Tink  
       2018-05-25 15:59:47 +08:00 via iPhone
    @dex2jar #15 你这个逻辑很捉急
    dex2jar
        22
    dex2jar  
       2018-05-25 16:02:30 +08:00
    @kera0a
    ???
    全世界就只有 ios 系统吗?
    用安卓的人不用 qq 吗?用 win 的不用?用 mac 的不用?这么多负载上去 qq 不照样能推送消息。
    dex2jar
        23
    dex2jar  
       2018-05-25 16:02:52 +08:00
    @Tink 看清楚文字再逼逼。谢谢。
    lihongming
        24
    lihongming  
       2018-05-25 16:12:34 +08:00 via Android
    对不起,我把话题带偏了。
    苹果的故事是我道听途说来的,我只是想用来论证“有钱这都不是事”这个观点,没想到大家的关注点是苹果,以及故事的真伪
    kera0a
        25
    kera0a  
       2018-05-25 16:16:26 +08:00
    @dex2jar 你的判断是, 世界上所有的厂商在苹果的推送次数,还没有世界上所有的人用 QQ 发送消息的次数多。厉害啊~
    maxxfire
        26
    maxxfire  
    OP
       2018-05-25 16:17:43 +08:00
    @lihongming 各位朋友,纯技术讨论贴,不要扯上火,淡定淡定。。
    dex2jar
        27
    dex2jar  
       2018-05-25 16:33:28 +08:00
    @kera0a 你一天弹多少苹果推送?你的主要聊天工具 qq/微信一天接受多少消息?你不聊天,群里的消息也算在内。
    你知道微信及 WeChat 合并月活跃账户达 10.4 亿,qq 月活跃账户达到 8.43 亿吗?
    你知道 iOS 市场占有率是多少嘛? 2017 的数据是百分之 14.0。全球市场。
    “ BMO Capital Markets 分析师蒂姆·龙( Tim Long )表示,目前全球在用的 iPhone 数量超过 7 亿台。”
    好了,我随便搜索的数据,你自己看看。
    你对数据一无所知。
    maxxxxx
        28
    maxxxxx  
       2018-05-25 16:34:48 +08:00
    @maxxfire 不存在安卓开放出来这个逻辑吧,只是安卓后台进程管理的松啊,可以随便开服务处理通知,iOS 在进程存在的情况下也可以 app 自己控制 push 啊。如果国内 gcm 能用的话,大概安卓的生态也会好不好少了。
    Tink
        29
    Tink  
       2018-05-25 16:44:08 +08:00 via iPhone
    @dex2jar #23 你这个逻辑不适合逼逼
    Tink
        30
    Tink  
       2018-05-25 16:48:09 +08:00 via iPhone
    @kera0a #25 你不用跟他解释这些,233
    kera0a
        31
    kera0a  
       2018-05-25 16:53:59 +08:00
    @dex2jar 你既然说数据,那更好办了 - -
    QQ 不清楚,微信 2017 日均发送消息 380 亿次,既然微信活跃用户比 QQ 多,那就假定 QQ 也不超过这个量级
    APNS 是多少呢,WWDC 2012 年上宣布每天发送就达到 70 亿。 按照你给的数据简单算近年增长,也远远超过 380 亿次这个量级了
    kera0a
        32
    kera0a  
       2018-05-25 16:54:52 +08:00
    @Tink 星期 5 没心思写代码,和 V 友稍微探讨下摸摸鱼😀
    dex2jar
        33
    dex2jar  
       2018-05-25 16:58:26 +08:00
    @Tink 那你的逻辑真适合逼逼,没有任何论据,全凭一张嘴。就服你。
    你去找数据打我脸啊,你把事实摆我面前,告诉我苹果真牛逼,发送量吊打 qq。不然只能证明你只是个啥都不懂,哗众取宠的猴子罢了。
    啥玩意都不会,在那装逼。还提逻辑,啥是逻辑你懂吗。不是你张开嘴逼逼,是有条理,有因果的思考。至少目前来看,你没有表达出任何逻辑来。
    TheCure
        34
    TheCure  
       2018-05-25 16:59:12 +08:00
    堆机器而已, 技术很成熟, 问题不大
    lightening
        35
    lightening  
       2018-05-25 17:01:26 +08:00
    推送这种完全可以并行的任务,实在看不出有什么难度啊。不如问为什么不管在 Google 搜什么,速度都那么快。全世界每天这么多次搜索请求,每次查找要从几乎整个因特网中的数据中取样。
    Tink
        36
    Tink  
       2018-05-25 17:02:48 +08:00 via iPhone
    @dex2jar #33 233
    Tink
        37
    Tink  
       2018-05-25 17:02:58 +08:00 via iPhone
    @kera0a #32 理解理解,钓钓鱼
    Anhedonia
        38
    Anhedonia  
       2018-05-25 17:03:53 +08:00 via iPhone
    @kera0a 大周五碰到疯狗真是不走运
    dex2jar
        39
    dex2jar  
       2018-05-25 17:11:25 +08:00
    @kera0a
    微信用户日发送消息 380 亿次,同比增长 25%;日发送语音 61 亿次,同比增长 26%;日成功通话次数 2.05 亿次,同比增长 106%。
    这么算的花,难道日均不是 380+61 打底吗。。
    然后苹果的日均是 70 亿。2012 年苹果的销量是 2 亿。。真正使用的越活用户算多少合适?就算是 2 亿,总不能 1 亿吧,毕竟还有之前销售的手机。那么 2017 在用的 iPhone 是 7.5 亿.推送量给他翻 4 倍,也是 280 亿的推送量。。何来远远超过 380 亿这一说。
    dex2jar
        40
    dex2jar  
       2018-05-25 17:20:40 +08:00
    感觉吧,一个找数据,讲道理的人被说是“没逻辑”,“疯狗”。
    一群啥观点不输出,啥论据都不提供的人反而逼格高高的对你指指点点。
    真魔幻啊
    Anhedonia
        41
    Anhedonia  
       2018-05-25 17:20:57 +08:00 via iPhone
    @kera0a 用 2012 年的销量推 2017 年的 iPhone 在用量
    这人真是 2333333
    dex2jar
        42
    dex2jar  
       2018-05-25 17:26:20 +08:00
    @Anhedonia 大哥,我求求你装个浏览器,学会搜索好不好。学不会我把链接给你好了。
    http://www.baidu-x.com/?q=2017+%E5%9C%A8%E7%94%A8iPhone%E6%95%B0%E9%87%8F
    dex2jar
        43
    dex2jar  
       2018-05-25 17:29:12 +08:00
    @Anhedonia 然后苹果的日均是 70 亿。(这个是 kera0a 给的数据) 2012 年苹果的销量是 2 亿(这是我查的数据)。。真正使用的越活用户算多少合适?就算是 2 亿,总不能 1 亿吧,毕竟还有之前销售的手机。(这才是我推测的数量,因为没找到)那么 2017 在用的 iPhone 是 7.5 亿(这是查到的数据).推送量给他翻 4 倍,也是 280 亿的推送量。。(这是推测的数据)何来远远超过 380 亿这一说。
    学好语文这么难吗
    kera0a
        44
    kera0a  
       2018-05-25 17:34:41 +08:00
    @dex2jar
    先说下对不起,之前手一快骂了你一句

    我上面说的简单计算不是你说的这样啊
    算增长不应该是拿全世界的厂商推送数量增长来对比嘛?发推送的是厂商又不是用户设备
    例如头条 2012 年每天新闻推送量和 2017 年的推送量增长
    假如设备量不变,世界厂商推送量增长了 10 倍,那也增长到了 700 亿了啊
    然后设备还变多了 4 倍
    kera0a
        45
    kera0a  
       2018-05-25 17:35:35 +08:00
    @dex2jar 然后你继续吧,我要下班了,有事周一回复
    dex2jar
        46
    dex2jar  
       2018-05-25 17:48:41 +08:00
    @kera0a 是有这么道理。但是这个增长量就无法预估了吧。但是就算是 10 倍,也称不上远远超过。700 亿对于( 380+61 亿) 441 亿的数量称不上是吊打吧。差不多数量级的东西。
    而且五年时间要 10 倍的话每年的增长百分之 60.。。这玩意的增长量太恐怖了吧。
    回归我前面说的,qq/微信都能达到,苹果这个技术并没有达到“黑科技”的地步。
    技术很强,但是成本不一定非常搞。至少不是像谷歌搜索一样的那种常人无法理解的技术难度。
    loveCoding
        47
    loveCoding  
       2018-05-25 17:51:53 +08:00
    只要能水平拓展+有钱 问题都不大...
    LZRng
        48
    LZRng  
       2018-05-25 19:09:23 +08:00 via iPhone
    其实最大的点是苹果推送居然花了这么大价钱我都不知道
    xbiyy
        49
    xbiyy  
       2018-05-25 20:16:14 +08:00 via iPhone
    所以可以这么理解,你买的手机里有部分是推送服务的钱

    也就是国内安卓推送要是没有 Google,想统一还要解决钱的问题

    按照苹果占有率 14%算,安卓是苹果的五倍多……
    mooczz
        50
    mooczz  
       2018-05-25 20:16:46 +08:00 via iPhone
    这楼不该点进来,隔着屏幕都能感受到有些人的气急败坏
    ePingTu
        51
    ePingTu  
       2018-05-25 23:20:19 +08:00 via iPad
    即时通讯的推送逻辑有没有想过另一层级:就是 app 退出或在后台时靠的是 APNS,而当进入前台开聊的时候都是直接 Get 或及时通讯后弹的本地通知呢?
    SourceMan
        52
    SourceMan  
       2018-05-25 23:29:24 +08:00 via iPhone
    我觉得楼上 2 个人说的都很有道理
    起码没人说人家是疯狗,产出观点还产出数据
    谁胜谁败我倒是看不清楚了
    chengluyu
        53
    chengluyu  
       2018-05-25 23:47:29 +08:00
    本帖已被收入“这也能吵”系列……
    mornlight
        54
    mornlight  
       2018-05-26 09:17:01 +08:00
    Apple 的设备和 APNs 维持 TCP 长连接,保证推送及时。维持几十亿连接没有你想得那么难。
    CommandZi
        55
    CommandZi  
       2018-05-26 09:45:28 +08:00
    @dex2jar “推送量给他翻 4 倍”是怎么推断出来的?
    dex2jar
        56
    dex2jar  
       2018-05-26 11:09:34 +08:00 via Android
    @CommandZi 前面提到的,因为只查到 2012 年的苹果销量是两个亿,假设苹果 2012 年的活跃用户是两亿(应该不止,因为还有旧设备),2017 年在用的 iPhone 设备是超过 7 亿的。7/2=3.5,我算 4 倍。这个 4 倍是相对于 2012 年苹果的推送量的 4 倍。。
    这个数据不严谨,但是已经是对苹果最好的数据,因为如果 2012 年活跃设备超过 2 亿,比如 3 亿。那么苹果的推送量就是 7/3,不到三倍了。
    当然,这一切的前提是厂商的单设备推送量没有翻三倍的前提。
    CastleBUPT
        57
    CastleBUPT  
       2018-05-26 11:59:25 +08:00
    @dex2jar
    2017 年底 AppStore 的 app 总数 210 万,2012 年 3 月为 55 万,所以你的 4 倍并不是所谓的“对苹果最好的数据”。
    dex2jar
        58
    dex2jar  
       2018-05-26 12:29:59 +08:00 via Android
    @CastleBUPT app 数!=app 推送量。
    你要查也是查安装量。app 总数 4 倍了,不代表安装量 4 倍。
    dex2jar
        59
    dex2jar  
       2018-05-26 12:33:46 +08:00 via Android
    @CastleBUPT 而且推送量多的就那几个 app。并不会随 app 总数增加而增加
    CastleBUPT
        60
    CastleBUPT  
       2018-05-26 13:32:18 +08:00
    @dex2jar
    app 总安装量不可能拿得到啊,你也是在猜啊,有什么好跟人撕的呢?
    zzj0311
        61
    zzj0311  
       2018-05-26 14:19:06 +08:00 via Android
    gcm 也是那么推的,安卓份额还大,有什么问题么
    dex2jar
        62
    dex2jar  
       2018-05-26 14:32:42 +08:00 via Android
    @CastleBUPT
    总应用数量增加四倍,那么推送量肯定是小于四倍的。4*4,也就是最极限的情况下才是 2012 年的 16 倍。而且这种极限几乎是不可能的,因为会有垃圾应用根本没人用,而且 2012 年的活跃用户数必然大于 2 亿这个数量。。所以我认为我的推测基本准确。
    然后很明显是我摆出观点,有人无根据的质疑。我找出数据,表明我这个观点是有数据推断的根据。何来跟人撕。。要说撕也是那些无端在那逼逼的人撕吧。
    zwj2885
        63
    zwj2885  
       2020-06-12 11:20:12 +08:00
    是不是阿里矫情,天天拿双十一高并发说事。苹果 apns 、QQ 、微信天天都是高并发也没怎么吹
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3114 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:16 · PVG 22:16 · LAX 06:16 · JFK 09:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.