修改獲取用戶并推送消息的功能

2017-12-27

工作遇到的小問題

根據(jù)篩選條件獲取用戶id存入redis
啟動異步腳本,根據(jù)id獲取全部信息(令牌之類)分批推送

問題一:獲取用戶id仍然耗時過長,采用異步腳本獲取,可以直接獲取全部信息

問題二:獲取數(shù)據(jù)耗時長,推送快,導(dǎo)致下一批數(shù)據(jù)進(jìn)入時異步腳本已經(jīng)全部關(guān)閉
解決方式:動態(tài)維護(hù)進(jìn)程數(shù)
結(jié)果:不夠理想
不能優(yōu)化好數(shù)據(jù)存入和消息推送的速度協(xié)調(diào)性,導(dǎo)致腳本的開關(guān)過于頻繁,內(nèi)部的循環(huán)不能很好利用

問題三:合理使用switch合并方法,去除三種推送的重復(fù)代碼
結(jié)果:不夠理想
符合業(yè)務(wù)邏輯將導(dǎo)致代碼冗余,代碼簡約時業(yè)務(wù)邏輯有瑕疵

注意:異步腳本必須采用命令行形式啟動
命令行的參數(shù)不能太復(fù)雜,需存入redis供跨進(jìn)程交互

分析記錄

一、現(xiàn)有方式
推送對象拉取速度小于腳本推送時間,導(dǎo)致推送中斷,推送對象剩余(之前不會出問題嗎)
完美情況下仍舊存在推送數(shù)量的上限

二、獲取完整推送對象后再推送
內(nèi)存占用大,整體延時高
不清楚推送消息的及時性需要滿足到什么程度?

三、動態(tài)控制進(jìn)程數(shù)量
目前考慮存在redis中,異步維護(hù)進(jìn)程數(shù)量的變量會沖突嗎?
命令行獲取?
每個進(jìn)程循環(huán)數(shù)少,使用效率低,進(jìn)程開關(guān)頻率相對高

四、每拉取一次開啟固定腳本數(shù)
消息延遲比一次多開慢
推送速度快會導(dǎo)致循環(huán)數(shù)低
推送速度慢進(jìn)程數(shù)量激增
不會出現(xiàn)推送對象剩余

五、按需開啟腳本,一次循環(huán)pop存數(shù)組
不會浪費進(jìn)程但存在固定的延時代價

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文將從Redis的基本特性入手,通過講述Redis的數(shù)據(jù)結(jié)構(gòu)和主要命令對Redis的基本能力進(jìn)行直觀介紹。之后概...
    kelgon閱讀 61,681評論 23 625
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,324評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • 讀完,給我的感覺和《瓦爾登湖》很像。不同的是,前者是一個人,后者是一個家庭。還穿插著孩子的成長,還有打獵的故事。 ...
    duoduo_four閱讀 158評論 0 0
  • 輕松笑話一則: 每次吃完飯,兒子首先舉起兩個大拇指,會說:"媽媽做飯真香,媽媽炒菜最好吃了。"老公會說:"很好,很...
    紫陌紅塵路閱讀 297評論 1 1

友情鏈接更多精彩內(nèi)容