大批量工具的思考

mgoann發表於2020-04-06

大批量工具的思考

大批量工具的思考:大批量處理工具,適用於資料量大,業務處理對時間要求不高等特點。

 

往往這種工具對效能的要求比較高,怎樣才能設定出滿足效能要求的工具成功該類工具成敗的一個關鍵點。在這裡提出倆個概念:批量和併發

 

併發:

併發對於有效的利用系統資源有較好的表現,併發帶來的好處,多個任務同時執行,併發帶來效能上的提升外,也會引入一些的新的問題,應用引入複雜性,使得維護成本更高,併發引入資源競爭的問題,多個業務處理作業會對共享資源造成較大的資源競爭,影響的應用的最大效率發揮。

 

批量:

批量的原理其實就是通過提高其吞吐量來使應用在最小消耗的情況下,完成最多的工作。批量需要注意的幾點是:定時和定量

定時:請求不能夠無限制的等待滿足處理的請求個數,這樣會導致請求量不是很大的情況下,請求不能夠在規定時間內給出響應。

定量:在請求量很大的情況下,不能在按照定時來處理,在滿足定時器的條件時間段內,積壓了太多的請求量,容易對應用造成較大的衝擊,定量應該是應用一次能滿足的最大請求個數處理,該資料應該是應用期望一次所處理的請求個數。

 

佇列:

在大批量應用中,應該使用佇列來串接訊息在應用的傳遞,佇列所涉及的操作最多的就是批量放入和批量取出。批量放入,批量放入的好處就是減少對共享資源的訪問次數,減小由於併發而引入的資源競爭問題。批量放入還有一個好處就是減少中間臨時物件的生成,減輕對垃圾回收機的壓力。批量取出應該注意一些併發的問題,批量取出應該取多少這個問題看似無關緊要,其實關係到併發的最大效率化,批量取出應該每次都取出每個業務處理作業所有期望的數量,這樣如果有1000個請求同時到達,有10個批量作業在同時運作,那每個批量作業每次取的請求個數應該是1000 + 10 – 1 / 10,這個演算法是分頁的一個演算法,在這樣可以很好的發揮將批量業務均勻分配到每個批量作業中。

 

記憶體分頁:

記憶體分頁就是當批量業務處理作業在處理多個請求時,應當將請求通過記憶體分頁來完成記憶體儲存,並滿足flush的條件下,將處理結果批量輸出,可以輸出到下一個作業或是直接輸出到結果。記憶體分頁需要注意的倆個點,定時定量。如果滿足這倆個點,可以通過倆個條件來判定滿足其中任何一個條件就輸出,定量:在記憶體分頁中應該對當前的積壓訊息個數有計數器,每次通過判斷計數器和最大訊息個數來判定其是否能夠輸出,定時:在記憶體分頁中應該對上次輸出時間做統計,以便通過判斷當前時間和上次輸出時間之間的時間間隔是否滿足最大停留時間來判定其是否滿足輸出條件,當這倆個條件當中的任意一個滿足條件就滿足了輸出條件。可以輸出,這樣做到了記憶體分頁的定時定量。

 

相關文章