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

大量调用微信公众号 API 用什么方案最高效 每小时 1000 万次

  •  
  •   chijince · 2020-09-17 09:16:31 +08:00 · 4378 次点击
    这是一个创建于 1530 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有什么云产品或者某些方案可以高效地帮助我来做这些事情吗?

    多个公众号需要推送消息给用户,每调用一次 API 接口可推送一次。每小时需要 1000 万次。

    用户的 openid 都可以存储在本地服务器的数据库中。

    20 条回复    2020-09-17 23:06:57 +08:00
    shoaly
        1
    shoaly  
       2020-09-17 09:24:32 +08:00
    算了一下 2800/秒 的并发, 估计没人愿意帮你发, 只能自己来搞. 多弄几台电脑开多线程搞, 到最后应该性能都不是问题, 看主机上封不封你了
    lozt
        2
    lozt  
       2020-09-17 09:41:11 +08:00
    你是走群发还是啥?这个调用量是不是都已经超过微信的 Api 调用频次限制了呀
    securityCoding
        3
    securityCoding  
       2020-09-17 09:41:14 +08:00
    @shoaly 关键在于微信是否允许 ,这个没什么内部业务逻辑并发不是问题,前面挂一个 mq 做分发即可
    sujin190
        4
    sujin190  
       2020-09-17 09:48:14 +08:00   ❤️ 1
    微信 API 请求延时基本低于 200ms,这样算不到 600 并发就够了,8 核 cpu 的话一台机器都可以轻松搞定,别用多线程,异步 io 啥得库搞一个 600 并发并不算啥,微信正常发的话,估计也不会封你,但是吧 1000 万每小时,总用户得多大啊,要是乱发垃圾营销消息的话,投诉人数达到一定量肯定分分钟被封号了
    secretman
        5
    secretman  
       2020-09-17 09:53:52 +08:00
    肯定是搞事!
    heyjei
        6
    heyjei  
       2020-09-17 09:55:51 +08:00   ❤️ 1
    放到消息队列里,用多进程去取就可以了啊。

    公众号的 app key,用户的 openid,要发送的消息,一股脑的放进队列里,发送进程读队列就可以了,不要再读数据库取 openid 了。

    队列用 kafka 啥的,一台机器要是发送进程太多达到了网络瓶颈了,就再开一台机器,多起几个发送进程。只要把队列和发送分开,就可以起无限多个发送进程了。不过你这么大的数据还真没搞过。
    frankly123
        7
    frankly123  
       2020-09-17 09:57:52 +08:00
    方糖?
    zoharSoul
        8
    zoharSoul  
       2020-09-17 10:01:26 +08:00
    异步非阻塞发不就完事了. 600 并发轻轻松松啊
    passerbytiny
        9
    passerbytiny  
       2020-09-17 10:25:47 +08:00 via Android
    公众号推送,难道不是一个公众号调用一个接口就能推送给所有用户,就算是分组推送也就多调几个接口。你这是多少公众号才能达到 1 小时千万次的接口调用量。
    hafuhafu
        10
    hafuhafu  
       2020-09-17 11:11:53 +08:00
    接口不是有每日限额吗,平摊下来能让你调用这么多次吗?
    chijince
        11
    chijince  
    OP
       2020-09-17 11:29:20 +08:00
    @passerbytiny 不是一个公众号 是很多的公众号 平均下来速度要达到每小时 1000 万的推送效率。多个任务并行。
    BoarBoar
        12
    BoarBoar  
       2020-09-17 11:35:07 +08:00
    这一看就是去搞事的,很遗憾微信也不傻,接口有每日限额的
    reus
        13
    reus  
       2020-09-17 12:34:34 +08:00
    你先了解下微信平台的规则,再来谈效率,不合规的使用方式,再高效也没用

    当然微信是可以单独谈限额的,但看来你也不是那样的大客户
    locoz
        14
    locoz  
       2020-09-17 13:08:11 +08:00 via Android
    看到这操作我第一个想到的是垃圾号群+客服消息推文章…调 API 的话其实没啥难度,拿 Python 写都能随便跑个几千并发,关键还是微信那边的限制和你这边上行带宽够不够的问题。
    involvements
        15
    involvements  
       2020-09-17 13:20:49 +08:00
    消息放列队,+ SCF
    xiaofan2
        16
    xiaofan2  
       2020-09-17 13:46:44 +08:00
    老哥你思想很危险
    NakeSnail
        17
    NakeSnail  
       2020-09-17 13:50:37 +08:00
    楼主可能做的是公众号第三方平台吧
    daxiongz
        18
    daxiongz  
       2020-09-17 18:39:54 +08:00
    你这么发 要被封的
    huayumo
        19
    huayumo  
       2020-09-17 22:17:43 +08:00
    这样的话,不如自己做个客户端来推送消息,用微信服务这么大的量.估计要和微信沟通
    chijince
        20
    chijince  
    OP
       2020-09-17 23:06:57 +08:00
    @daxiongz 不是发广告 通知类型 现在一天 1000 万没事 也不是一个公众号发
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2425 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:00 · PVG 00:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.