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. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?2. sql語(yǔ)句 - mysql中關(guān)聯(lián)表查詢問(wèn)題3. javascript - iframe 為什么加載網(wǎng)頁(yè)的時(shí)候滾動(dòng)條這樣顯示?4. javascript - vscode alt+shift+f 格式化js代碼,通不過(guò)eslint的代碼風(fēng)格檢查怎么辦。。。5. javascript - [js]為什么畫(huà)布里不出現(xiàn)圖片呢?在線等6. javascript - 有什么比較好的網(wǎng)頁(yè)版shell前端組件?7. javascript - 求解答:實(shí)例對(duì)象調(diào)用constructor,此時(shí)constructor內(nèi)的this的指向?8. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無(wú)論屏幕和分辨率怎么變化;div位置始終不變9. css - chrome下a標(biāo)簽嵌套img 顯示會(huì)多個(gè)小箭頭?10. html - vue項(xiàng)目中用到了elementUI問(wèn)題
