本發(fā)明屬于軟件系統(tǒng)技術領域,尤其涉及一種基于redis實現(xiàn)多worker協(xié)同的系統(tǒng)。
背景技術:
隨著互聯(lián)網大數(shù)據(jù)時代的到來,越來越多的計算任務task需要交多個計算機(worker)組成的集群來并發(fā)處理,由于計算任務中的task對資源(cpu/io/disk)的消耗差別很大,這個時候特別需要合理的安排任務,以防止某類任務占用過多資源造成系統(tǒng)過載,進而影響系統(tǒng)的穩(wěn)定行和可靠性,因此特別需要一個高效穩(wěn)定的解決方案來應對此問題。
技術實現(xiàn)要素:
本發(fā)明所解決的技術問題采用以下技術方案來實現(xiàn):提供一種基于redis實現(xiàn)多worker協(xié)同的系統(tǒng),是分布式計算的集群中對計算任務task協(xié)同控制速度的通用解決技術方案。
一種基于redis實現(xiàn)多worker協(xié)同的系統(tǒng),開始重新獲取一批待處理的任務,以任務類名稱為key進行匯總數(shù)量,其中redis計數(shù)器根據(jù)以task的任務名為key建立生存周期為1分鐘的key-value值,其中key值是任務名稱,value值為累加數(shù)值,發(fā)送key的任務匯總數(shù)量到redis請求對key的value進行累加,其中由于集群中的worker并行請求,所以匯總到redis里面后會進行排隊,然后串行處理worker的key的累加請求,對請求的數(shù)量進行value累加,返給worker累加后的數(shù)值,累加后value值和系統(tǒng)中的每分鐘的限量值進行比較,如果沒有超過限額,則執(zhí)行這批key名稱任務的task,如果部分超額則拒絕超額部分并且執(zhí)行未超額部分,如果全部超額,則全部拒絕執(zhí)行任務task。
本發(fā)明的有益效果為:本系統(tǒng)用redis來實現(xiàn)計數(shù)器功能,因為整個系統(tǒng)采用的是星型結構,所以各類任務task的計數(shù)以key-value形式,集中存儲在redis中,key為任務task的名稱,value為對應的計數(shù);本系統(tǒng)是分布式計算的集群中對計算任務task協(xié)同控制速度的通用解決技術方案。
附圖說明
圖1是本發(fā)明的程序流程圖
圖2是本發(fā)明worker和redis計數(shù)器時序圖樣例
圖3是本發(fā)明系統(tǒng)結構圖
具體實施方式
參照附圖,一種基于redis實現(xiàn)多worker協(xié)同的系統(tǒng),其中計算機集群中的各計算節(jié)點統(tǒng)稱為worker,計算任務統(tǒng)稱為task,task的計數(shù)以key-value形式,集中存儲在redis中,key為任務task的名稱,value為對應的計數(shù),首先開始重新獲取一批待處理的任務,以任務類名稱為key進行匯總數(shù)量,其中redis計數(shù)器根據(jù)以task的任務名為key建立生存周期為1分鐘的key-value值,其中key值是任務名稱,value值為累加數(shù)值,發(fā)送key的任務匯總數(shù)量到redis請求對key的value進行累加,其中由于集群中的worker并行請求,所以匯總到redis里面后會進行排隊,然后串行處理worker的key的累加請求,對請求的數(shù)量進行value累加,返給worker累加后的數(shù)值,累加后value值和系統(tǒng)中的每分鐘的限量值進行比較,如果沒有超過限額,則執(zhí)行這批key名稱任務的task,如果部分超額則拒絕超額部分并且執(zhí)行未超額部分,如果全部超額,則全部拒絕執(zhí)行任務task。
worker先取一批計算任務task,然后對這批task按照名稱為key進行分類匯總,匯總后,按照名稱和數(shù)量申請redis里面的對應任務名稱作為key的計數(shù)器進行累加,如果redis里面沒有此任務名稱key的計數(shù)器,則生成一個新的進行累加,并且設置好失效時間,如果有此名key對應的計數(shù)器,則進行對value進行累加,并且把累加結果返回給worker,由于在redis里面的key支持生命周期,我們給key值設置為1分鐘,則1分鐘后,無論key值對應的value值變成多大,key都會消失,進而很簡單高效的實現(xiàn)1分鐘限速。
本系統(tǒng)用redis來實現(xiàn)計數(shù)器功能,因為整個系統(tǒng)采用的是星型結構,所以各類任務task的計數(shù)以key-value形式,集中存儲在redis中,key為任務task的名稱,value為對應的計數(shù);本系統(tǒng)是分布式計算的集群中對計算任務task協(xié)同控制速度的通用解決技術方案。
利用本發(fā)明所述的技術方案,或本領域的技術人員在本發(fā)明技術方案的啟發(fā)下,設計出類似的技術方案,而達到上述技術效果的,均是落入本發(fā)明的保護范圍。