亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教一個后端/后臺的設計思路.感激不盡

請教一個后端/后臺的設計思路.感激不盡

開滿天機 2019-10-08 11:20:34
①問題場景:一個新用戶注冊后,會有一個任務開始執行,每個用戶都有自己對應單獨的一個任務.這個任務是24*7一直在實時運行監控的(計算任務/Http請求/耗時任務).(有點類似攜程app高鐵票搶票的意思.)②我的思路:一開始想的是一個新用戶進來就新開一條線程.或者管理一個線程池,把任務全都放進一個隊列中.循環的在線程池進行任務的計算.但是中途會有新用戶(任務)進來.而且這樣如果用戶量一多的話好像想過不是很理性.也就是線程池每批進行n個任務的運行.但是這樣所有用戶一輪下來時間好像有點長.③向大佬請教:我也挺小白的,所以想問一下具體這種場景比較推薦怎么樣的實現方式/思路.困擾了我好久.**感謝大佬.!**
查看完整描述

2 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

建立任務池,多個任務節點監控任務池,一旦有任務進入任務池就自動領任務定時任務創建程序定時將任務扔入任務池用戶注冊成功之后加入定時任務里
任務創建-->任務池-->任務節點運行任務
                            
查看完整回答
反對 回復 2019-10-08
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

單機的就不說了。數據量大了,肯定要用分布式。下面說下分布式的思想(假設有n個任務節點):
可以通過一致性hash的方式去分配任務,用zookeeper做任務注冊,管理中心。有新用戶注冊,就向數據庫寫一條任務數據,并向zookeeper注冊任務id。節點通過zookeeper去獲取任務id,然后去數據庫查詢相應任務數據,并運行。
或者簡單點,任務節點直接去數據庫取模jobId%n獲取任務,jobId為任務的自增id。只不過這樣的話,相比一致性hash,當增加/減少節點時,任務的重新分配會比較麻煩。
                            
查看完整回答
反對 回復 2019-10-08
  • 2 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號