node.js - 大用戶量怎么做同時(shí)推送
問(wèn)題描述
比如現(xiàn)在有10w用戶,我想請(qǐng)問(wèn)下如何對(duì)這10w人同時(shí)進(jìn)行推送呢
數(shù)據(jù)庫(kù)采用mysql或者mongodb
如果是一臺(tái)服務(wù)器的話,我的做法是把用戶分批,比如一批1000人,需要100批,同時(shí)操作,然后把查詢出來(lái)的用戶做推送
如果是多臺(tái)服務(wù)器的話,需要怎么操作呢?
想一些第三方的推送工具(比如百度推送、小米推送)他們提供推送到全部設(shè)備,這里應(yīng)該就會(huì)有上面的問(wèn)題吧,他們的推送服務(wù)器應(yīng)該不會(huì)是一臺(tái),他們是怎么做的處理呢
問(wèn)題解答
回答1:一臺(tái)就慢慢循環(huán)發(fā)多臺(tái)就做任務(wù)分發(fā)比如10w個(gè)用戶需要推送有5臺(tái)服務(wù)器可以同時(shí)工作建立一個(gè)中間件(比如mq,redis等)做任務(wù)分發(fā),每1000個(gè)用戶為一個(gè)任務(wù),把10w用戶分成100個(gè)任務(wù)然后5臺(tái)服務(wù)器去取任務(wù)每次取一個(gè),處理結(jié)束在取一個(gè),平均一臺(tái)服務(wù)器處理20個(gè)任務(wù)。
分發(fā)的任務(wù)可以直接為mysql或者mongodb的查詢語(yǔ)句例如 mongodb.user.find().limit(1000).skip(0),mongodb.user.find().limit(1000).skip(1000),mongodb.user.find().limit(1000).skip(2000)...
回答2:查詢比率的數(shù)據(jù)推...
回答3:我們是用的極光推送的服務(wù)
相關(guān)文章:
1. 關(guān)于nginx location配置的問(wèn)題,root到底是什么2. angular.js - angularjs的自定義過(guò)濾器如何給文字加顏色?3. 關(guān)于docker下的nginx壓力測(cè)試4. docker鏡像push報(bào)錯(cuò)5. angular.js - angular內(nèi)容過(guò)長(zhǎng)展開(kāi)收起效果6. linux - openSUSE 上,如何使用 QQ?7. linux - 升級(jí)到Python3.6后GDB無(wú)法正常運(yùn)行?8. 并發(fā)模型 - python將進(jìn)程池放在裝飾器里為什么不生效也沒(méi)報(bào)錯(cuò)9. 大家好,請(qǐng)問(wèn)在python腳本中怎么用virtualenv激活指定的環(huán)境?10. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)這塊?
