本發(fā)明涉及無線通信通信網絡,更具體地,涉及用于分布式存儲網絡系統(tǒng)的共享資源分配的方法以及裝置。
背景技術:
在很多情況下,采取共享資源的方法以提高計算機或通信系統(tǒng)的資源利用率。然而,如果一個或多個資源消費者出現(xiàn)了問題,并且這些問題資源消費者不能及時釋放資源,總的系統(tǒng)資源可能被用完或耗盡,那些正常資源消費者將因此而無法獲得資源從而其業(yè)務受到影響。如何將不同資源消費者之間的相互作用進行隔離并對所有資源消費者提供良好的服務是非常關鍵的。例如,用于輸入消息的資源分配(例如線程)和等待來自通信網絡的響應的資源分配等這些共享資源的分配和控制問題也可以頻繁地發(fā)生在云服務領域。
在分布式存儲系統(tǒng),例如用戶數據融合(UDC:User Data Convergence)系統(tǒng),采用分層體系架構。前端(FE:Front-End)應用層(application layer)提供用于數據管理特定的應用業(yè)務邏輯給應用程序。后端(BE:Back End)層(layer)負責為各種的應用提供數據存儲和數據庫管理(創(chuàng)建,讀取,更新,刪除)。
在FE上實例化的應用同BE中的數據庫通信以獲取數據或更新數據。為了保證數據庫訪問的一致性并達到一定的性能,一般情況下,在用于數據庫(DB:Database)通信的FE的實時刀片服務器(blade)中,為每個應用配置一個線程池(線程數量有限)。DB請求在請求隊列中排隊。每個請求都會以FIFO模式從資源池中被分配一個線程。從BE得到響應后,相關聯(lián)的線程將被釋放到線程池。每個進行中的 DB事務會預留一個線程,該線程用于從FE到BE的通信。在接收到BE響應之前,該線程是堵塞的。
例如,由于網絡擁塞或BE響應慢而造成BE出現(xiàn)通信故障的情況下,這些等待響應或等待超時的線程是被堵塞的。由于線程池大小不能無限的增加,很有可能大多數線程被問題BE所占用。由此會導致缺乏資源,而正常BE的請求不能從資源池中獲取線程從而導致請求失敗,進而影響整個應用程序的流量。圖1示出了共享的用于DB訪問的線程池的示意圖。如圖1所示,在FE板1和BE1之間的BE1的問題連接幾乎令在資源池中所有的線程(最終所有的線程)用完或耗盡。其他正常的BE無法獲取線程以從數據庫中獲取數據而導致呼叫失敗。
另一個例子是:注冊用戶數據管理(SDM:Subscriber Data Management)應用的一些內部資源,例如,在FE的生命周期中存儲呼叫/事件的關鍵上下文信息的呼叫上下文,被不同網元(NE:Network Element)共享。這樣的呼叫上下文資源不是無限的,通常具有最大約束和過載控制。當有一個遠程NE或一個遠程NE的小組合,例如MME,SGSN,AS等等,不能及時回應SDM的呼出消息,呼叫上下文資源會被那個異常NE占用。這可能直接引起系統(tǒng)過載并造成業(yè)務掉線。圖2示出了共享的用于呼叫上下文資源池的示意圖。如圖2所示,在FE板1和AS1之間的連接問題或問題AS1造成了資源池中的幾乎所有的呼叫上下文(最終所有的呼叫上下文)堵塞。其他正常的NE也不能獲取呼叫上下文并導致呼叫失敗。
上述問題的現(xiàn)有解決方案是為每個資源消費者分配預算。不同的資源消費者的預算可以是不同的。如果資源消費者超過其分配的預算,就限制該資源消費者使用資源。圖3示出了現(xiàn)有技術的每個資源消費者固定預算的示意圖。如圖3所示,每個BE具有所分配線程數目的特定預算。每個BE不能使用超過預先分配的數目的線程。如果一個BE的預算用完或耗盡,該BE的DB請求將被拒絕。
為每個資源消費者分配預算的機制使得問題BE的DB請求不 會影響那些正常的BE。總資源使用不會超過的預定義的閾值。例如,在圖3中,問題BE1將耗盡其預算,但問題BE1不能使用其他的BE的資源預算,這樣就不會影響其它BE的業(yè)務。
但是,這可能會導致總資源的利用率不高。例如,如果BE的請求不是均勻分布的,這種機制使得一些資源消費者的預算會耗盡而另一些資源消費者仍有很多資源(例如線程)預算。從系統(tǒng)的角度來說,這導致了資源利用的浪費。此外,該機制需要為每個資源消費者(例如BE)配置預算。如果資源消費者的數目很大或有變化(由于BE損壞等),如何確定預算是一個問題,并且是很難維護的。
有兩種類型的指標可用于評估資源分配機制:一是在一個或多個資源消費者資源堵塞的情況下,其它資源消費者仍有合理的資源可以使用;二是這種機制不應降低業(yè)務質量(QoS:Quality of Service)。
技術實現(xiàn)要素:
根據上述對背景技術以及存在的技術問題的理解,如果能夠提供一種用于分布式存儲網絡系統(tǒng)的共享資源分配的方法以及裝置,將是非常有益的。
根據本發(fā)明的第一個方面,提供了一種用于分布式存儲網絡系統(tǒng)的共享資源分配的方法,該方法包括以下步驟:A.將資源總預算分配給共享資源的所有資源消費者;B.當所述資源總預算耗盡時,確定第一資源消費者,該第一資源消費者為使用共享資源最多的資源消費者;C.根據該第一資源消費者所使用的資源量和預定義偏差確定第二資源消費者;以及D.拒絕屬于第一資源消費者和第二資源消費者的資源消費請求。
根據本發(fā)明的一個實施例,本發(fā)明的第一個方面中的步驟B還包括B1.計算每個資源消費者使用共享資源的資源使用量rn,其中n代表資源消費者索引;以及B2.計算共享資源的所有資源消費者的資源使用量的總和其中N代表共享資源的所有資源消費者的數目;B3.當總和大于資源總預算時,確定該第一資源消費者。
根據本發(fā)明的一個實施例,本發(fā)明的第一個方面中的步驟C還包括C1.根據該第一資源消費者所使用的資源使用量Tmax和預定義偏差Dev確定過度資源使用量范圍;C2.檢查每個資源消費者使用所述共享資源的資源使用量rn;以及C3.將資源使用量在所述過度資源使用量范圍內的資源消費者確定為所述第二消費者。
根據本發(fā)明的一個實施例,步驟C1還包括該過度資源使用量范圍由[Tmax*(1-Dev%),Tmax]確定。
根據本發(fā)明的一個實施例,還包括為共享資源的每個資源消費者定義各自的資源權重wn。
根據本發(fā)明的一個實施例,資源權重wn和第n個資源消費者的貪婪程度成反比。
根據本發(fā)明的一個實施例,步驟B還包括B1'.計算每個資源消費者使用共享資源的加權資源使用量wnrn,其中n代表資源消費者索引;B2'.計算共享資源的所有資源消費者的資源使用量的加權總和其中N代表共享資源的所有資源消費者的數目;以及B3'.當加權總和大于資源總預算時,確定第一資源消費者。
根據本發(fā)明的一個實施例,步驟C還包括C1'.根據第一資源消費者所使用的加權資源使用量T'max和預定義偏差Dev'確定過度資源使用量范圍;C2'.檢查每個資源消費者使用共享資源的加權資源使用量wnrn;以及C3'.將加權資源使用量在過度資源使用量范圍內的資源消費者確定為第二資源消費者。
根據本發(fā)明的一個實施例,步驟C1'還包括該過度資源使用量范圍由[T'max*(1-Dev'%),T'max]確定。
根據本發(fā)明的第二個方面,提供了一種用于分布式存儲網絡系統(tǒng)的共享資源分配的裝置,該裝置包括以下模塊:門模塊,其用于確定第一資源消費者以及第二資源消費者并向資源庫訪問程序模塊提供第一資源消費者和第二資源消費的信息,其中,第一資源消費者為使用所述共享資源最多的資源消費者,第二資源消費者的資源使用量在過度資源使用量范圍內;資源庫訪問程序模塊,其用于根據門模 塊提供的信息決定是否向共享資源的資源消費者分配資源。
根據本發(fā)明的一個實施例,該門模塊還包括將資源總預算分配給共享資源的所有資源消費者;當資源總預算耗盡時,確定第一資源消費者,該第一資源消費者為使用所述共享資源最多的資源消費者;以及根據該第一資源消費者所使用的資源量和預定義偏差確定第二資源消費者。
根據本發(fā)明的一個實施例,該資源庫訪問程序模塊還包括判定資源消費者是否需要訪問資源庫;如果需要訪問資源庫,則判定資源消費者是否為所述第二資源消費者或所述第一資源消費者;如果是所述第二資源消費者或所述第一資源消費者,拒絕屬于所述資源消費者的資源消費請求,;如果不是所述第二資源消費者或所述第一資源消費者,將資源分配給所述資源消費者并繼續(xù)確定下一個資源消費者是否需要訪問資源庫;如果不需要訪問資源庫,繼續(xù)判定下一個資源消費者是否需要訪問資源庫。
基于本發(fā)明的方案,提供一種公平的機制并避免貪婪消費者用完或耗盡全部資源,而且同時保證較高的資源利用率。它不僅高效、簡單,而且和現(xiàn)有機制相比沒有顯著的性能開銷。具體地,本發(fā)明具有如下優(yōu)點:
1.不僅很好地控制了分布式存儲系統(tǒng)的總資源預算而且保證了各個資源消費者之間的公平性。
2.提高了整個產品的系統(tǒng)可靠性和業(yè)務質量,限制了一個或多個資源消費者失敗的影響。
3.和現(xiàn)有的固定分配的機制相比,只需要定義資源總預算和偏差,簡單并更易于維護。
4.還可以適用于任何網絡節(jié)點,例如注冊用戶數據管理(SDM:Subscriber Data Management),用戶數據融合(UDC:User Data Convergence),支持節(jié)點網關(GGSN:Gateway GPRS Support Node),通用分組無線服務技術(GPRS:General Packet Radio Service),分組數據網絡網關(PDN GW:Packet Data Network Gateway)等。
附圖說明
通過參照附圖閱讀以下所作的對非限制性實施例的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯。
圖1示出了共享的用于DB訪問的線程池的示意圖;
圖2示出了共享的用于呼叫上下文資源池的示意圖;
圖3示出了現(xiàn)有技術的每個資源消費者固定預算的示意圖;
圖4示出了根據本發(fā)明一個實施例的總預算分配的示意圖;
圖5示出了根據本發(fā)明一個實施例的總預算分配的流程圖;
圖6示出了根據本發(fā)明另一個實施例的加權總和分配的示意圖;
圖7是基于對共享數據庫請求的線程池控制結構的示意圖;
圖8示出了根據本發(fā)明一個實施例的門模塊的流程圖;以及
圖9示出了根據本發(fā)明的一個實施例的資源庫訪問模塊的流程圖。
在圖中,貫穿不同的示圖,相同或類似的附圖標記表示相同或相似的裝置(模塊)或步驟。
具體實施方式
在以下優(yōu)選的實施例的具體描述中,將參考構成本發(fā)明一部分的所附的附圖。所附的附圖通過示例的方式示出了能夠實現(xiàn)本發(fā)明的特定的實施例。示例的實施例并不旨在窮盡根據本發(fā)明的所有實施例。可以理解,在不偏離本發(fā)明的范圍的前提下,可以利用其他實施例,也可以進行結構性或者邏輯性的修改。因此,以下的具體描述并非限制性的,且本發(fā)明的范圍由所附的權利要求所限定。需要說明的是,盡管附圖中以特定順序描述了本發(fā)明中有關方法的步驟,但是這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實現(xiàn)期望的結果,相反,本文中所描述的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個步 驟合并為一個步驟執(zhí)行,和/或將一個步驟分解為多個步驟執(zhí)行。
本發(fā)明的一個實施例涉及一種用于分布式存儲網絡系統(tǒng)的共享資源分配的方法,其包括以下步驟:A.將資源總預算分配給共享資源的所有資源消費者;B.當該資源總預算耗盡時,確定第一資源消費者,該第一資源消費者為使用共享資源最多的資源消費者;C.根據該第一資源消費者所使用的資源量和預定義偏差確定第二資源消費者;以及D.拒絕屬于該第一資源消費者和該第二資源消費者的資源消費請求。
圖4示出了根據本發(fā)明一個實施例的總預算分配的示意圖,圖5示出了根據本發(fā)明一個實施例的總預算分配的流程圖。
在步驟S501中,將資源總預算分配給共享資源的所有資源消費者,例如將總預算將近1200個線程分配給BE1-BEn。
在步驟S502中,當該資源總預算耗盡時,確定第一資源消費者,該第一資源消費者為使用共享資源最多的資源消費者,例如當資源總預算將近1200個線程被用戶或耗盡時,找出使用共享資源最多的資源消費者,例如圖4中的BE3為使用共享資源最多的資源消費者,也即第一資源消費者,其占用了525個線程。
優(yōu)選的,在步驟S502中的確定第一資源消費者的方法可包括:
B1.計算每個資源消費者使用所述共享資源的資源使用量rn,其中n代表資源消費者索引。
B2.計算共享資源的所有資源消費者的資源使用量的總和其中N代表共享資源的所有資源消費者的數目;
B3.當該總和大于資源總預算時,確定第一資源消費者,例如BE3。
在步驟503中,根據所述第一資源消費者所使用的資源量和預定義偏差確定第二資源消費者。
優(yōu)選的,在步驟S503中的確定第二資源消費者的方法可包括:
C1.根據第一資源消費者所使用的資源使用量Tmax和預定義偏差Dev確定過度資源使用量范圍。例如,該過度資源使用量范圍可以 根據[Tmax*(1-Dev%),Tmax]確定。
C2.檢查每個資源消費者使用所述共享資源的資源使用量rn。
C3.將資源使用量在該過度資源使用量范圍內的資源消費者確定為第二資源消費者。
在步驟504中,拒絕屬于第一資源消費者和第二資源消費者的資源消費請求。
如圖4所示,Tmax=525,假設D e v=20%,則[Tmax*(1-Dev%),Tmax]=[420,525]。根據上述的計算結果,可以發(fā)現(xiàn),BE5的線程占用量為450,因而BE5也在范圍[420,525]之內。這樣,BE5被確定為第二資源消費者。因而,BE5和BE3的DB請求將被拒絕。
上述機制有三大好處:1)在總資源使用量高的情況下,具有更高資源使用量的消費者必須停止進一步使用資源以避免貪婪;問題BE的DB請求將不會影響正常BE的DB請求;2)和基于每個資源消費者的固定預算機制相比,在總預算用完或耗盡之前,資源消費者可以無限制的使用資源,從而提高資源的利用率。3)和固定預算機制相比,它不需要為每個資源消費者分配預算,因為為每個資源消費者分配資源不易于維護,尤其是當資源消費者數量大和當資源消費者的數量可能被動態(tài)改變的時候。
本發(fā)明的另一個實施例涉及一種用于分布式存儲網絡系統(tǒng)的共享資源分配的方法,在該另一個實施例中,為共享資源的每個資源消費者定義各自的資源權重wn,優(yōu)選地,資源權重wn和第n個資源消費者的貪婪程度成反比。根據圖5的流程圖以及圖6示出的根據本發(fā)明另一個實施例的加權總和分配的示意圖來具體描述每個資源消費者具有資源權重的方案。
在步驟S501中,將資源總預算分配給共享資源的所有資源消費者,例如將總預算將近1200個線程分配給BE1-BEn。
在步驟S501之前可為共享資源的每個資源消費者定義各自的資源權重wn,優(yōu)選地,資源權重wn和第n個資源消費者的貪婪程度成 反比。
當然,本領域技術人員可以理解的是在步驟S501之后也可以為共享資源的每個資源消費者定義各自的資源權重。
在步驟S502中,在步驟S502中,當該資源總預算耗盡時,確定第一資源消費者,該第一資源消費者為使用共享資源最多的資源消費者。
優(yōu)選的,在步驟S502中的確定第一資源消費者的方法可包括:
B1'.計算每個資源消費者使用共享資源的加權資源使用量wnrn,其中n代表資源消費者索引;以及
B2'.計算共享資源的所有資源消費者的資源使用量的加權總和其中N代表共享資源的所有資源消費者的數目;
B3'.當加權總和大于資源總預算時,確定第一資源消費者。
在步驟503中,根據所述第一資源消費者所使用的資源量和預定義偏差確定第二資源消費者。
優(yōu)選的,在步驟S503中的確定第二資源消費者的方法可包括:
C1'.根據所述第一資源消費者所使用的加權資源使用量T'max和預定義偏差Dev'確定過度資源使用量范圍,例如,該過度資源使用量范圍可以根據[T'max*(1-Dev'%),T'max]確定;
C2'.檢查每個資源消費者使用該共享資源的加權資源使用量wnrn;以及
C3'.將加權資源使用量在該過度資源使用量范圍內的資源消費者確定為所述第二消費者。
在步驟504中,拒絕屬于第一資源消費者和第二資源消費者的資源消費請求。
例如,如果認為圖4中BE3和BE5比其他資源消費者具有更高的DB資源請求的可能性,給BE3和BE5分配低資源權重。然后,可以獲取如圖6所示的各個資源消費者的加權資源使用量的計算結果。BE4被確定為使用共享資源最多的資源消費者,也即第一資源消費者,其需要放棄DB請求。這種機制提供了靈活性以進一步控制基 于其他因素的資源使用,其可以解決一些資源消費者比其他資源消費者需要消耗更多資源的問題。
圖7是基于對共享數據庫請求的線程池控制結構的示意圖。它包括兩個重要模塊:資源庫訪問模塊(例如DB訪問程序模塊)和門模塊。門模塊,其用于確定第二資源消費者以及第一資源消費者并向資源庫訪問程序模塊提供第二資源消費者和第一資源消費者的的信息,其中,第二資源消費者的資源使用量(例如所使用的線程數量)在過度資源使用量范圍內,門模塊,其用于確定第一資源消費者以及第二資源消費者并向資源庫訪問程序模塊提供該第一資源消費者和該第二資源消費的信息,其中,該第一資源消費者為使用該共享資源最多的資源消費者,第二資源消費者的資源使用量在過度資源使用量范圍內。資源庫訪問程序模塊,其用于根據所述門模塊提供的所述信息決定是否向共享資源的資源消費者分配資源。
圖8示出了根據本發(fā)明一個實施例的門模塊的流程圖。首先,在步驟S801中獲取總的BE個數并定義資源總預算和預定義偏差。然后在步驟S802中給每個BE分配權重,BE特定的權重可以是例如貪婪程度的倒數,也可以是一個和貪婪程度相關的默認值。接著,在步驟S803中周期性地觀察每個BE活躍DB請求的線程數量,并在步驟S804中計算加權總和。
在步驟S805中當加權總和大于資源總預算時,找到使用共享資源最多的BE(也即第一資源消費者)并根據該BE的資源使用量采用例如步驟S502和步驟S503中的加權方案確定第二資源消費者的范圍,在步驟S806中將第一資源消費者和第二資源消費者標注為DB訪問過載并將相應的DB訪問過載信息通知給資源庫訪問模塊(例如DB訪問模塊)并繼續(xù)周期性地觀察每個BE活躍DB請求的線程數量。該DB訪問過載信息可以是例如第一資源消費者和第二資源消費者的標識符。
當加權總和不大于資源總預算時,在步驟S807中查看是否有BE標注為DB訪問過載的,如果有則在步驟S808中清除該DB訪 問過載狀態(tài)并通知DB訪問模塊,如果沒有,則繼續(xù)周期性地觀察每個BE活躍DB請求的線程數量。
圖9示出了根據本發(fā)明的一個實施例的資源庫訪問模塊(例如DB訪問模塊)的流程圖。
首先,在步驟S901中判定資源消費者是否需要訪問資源庫。
如果需要訪問資源庫,則在步驟S902中判定該資源消費者是否為第二資源消費者或第一資源消費者;
如果是第二資源消費者或第一資源消費者,在步驟S903中拒絕屬于該資源消費者的資源消費請求,;
如果不是第二資源消費者或第一資源消費者,在步驟S904中將資源分配給該資源消費者并繼續(xù)確定下一個資源消費者是否需要訪問資源庫;
如果不需要訪問資源庫,繼續(xù)判定下一個資源消費者是否需要訪問資源庫。
基于本發(fā)明所提供的共享資源分配的方案,一個或多個問題/貪婪資源消費者不會耗盡所有的資源,也不影響正常用戶。其給出了公平以及資源使用,系統(tǒng)QoS,低復雜度和高性能之間的平衡關系。它在許多使用共享資源的領域,特別是云資源,分布式存儲系統(tǒng)是非常有用的?;诒景l(fā)明所提供的方案不僅簡單,易于維護,還可以適用于任何網絡節(jié)點,例如注冊用戶數據管理(SDM:Subscriber Data Management),用戶數據融合(UDC:User Data Convergence),支持節(jié)點網關(GGSN:Gateway GPRS Support Node),通用分組無線服務技術(GPRS:General Packet Radio Service),分組數據網絡網關(PDN GW:Packet Data Network Gateway)等,任何共享資源如中央處理器(CPU:Central Processing Unit),內存,線程等的分配。
對于本領域技術人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論如何來看,均應將實施例看作是示范性的,而且是非限制性的。此外,明顯的,“包括”一詞不排 除其他元素和步驟,并且措辭“一個”不排除復數。裝置權利要求中陳述的多個元件也可以由一個元件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。