本發(fā)明涉及服務(wù)資源分配技術(shù)領(lǐng)域,尤其涉及一種基于業(yè)務(wù)優(yōu)先級的高并發(fā)服務(wù)資源分配方法。
背景技術(shù):
近年來,隨著計算機技術(shù)和通信技術(shù)的不斷發(fā)展,Internet用戶數(shù)成指數(shù)倍增加,互聯(lián)網(wǎng)應(yīng)用得到了迅速普及。技術(shù)的進步激發(fā)了用戶需求的增長,業(yè)務(wù)也變得更加復(fù)雜,這就要求服務(wù)器提供高并發(fā)訪問及合理分配服務(wù)資源的能力。
傳統(tǒng)的單個服務(wù)器處理能力有限,無法處理高并發(fā)業(yè)務(wù)請求,而將單個普通的服務(wù)器置換成更高性能的服務(wù)器其成本又過高,并且又造成了閑置服務(wù)器資源的浪費。因此將多臺服務(wù)器構(gòu)建成為一個服務(wù)器集群系統(tǒng),共同處理外部請求的做法,已成為國內(nèi)外構(gòu)建高性能服務(wù)器的主要方法。
集群系統(tǒng)比起使用傳統(tǒng)的單個服務(wù)器要復(fù)雜得多,如何為業(yè)務(wù)請求合理分配集群中的服務(wù)資源是最關(guān)鍵的問題,它將直接影響集群系統(tǒng)是否能提供等于或接近于預(yù)期的性能。例如當(dāng)大量請求同時到達時,若服務(wù)資源分配不合理將導(dǎo)致某些服務(wù)器節(jié)點長期處于負載過重狀態(tài),而另外某些服務(wù)器則較長時間處于空閑狀態(tài)。上述這種情況嚴重浪費了集群系統(tǒng)的資源優(yōu)勢,用戶的請求也得不到及時的響應(yīng),集群系統(tǒng)的整體性能也并沒有多大的提升,這與引入集群系統(tǒng)的初衷是不相符的。因此必須采用一種較好的負載均衡方案,以便將任務(wù)盡可能合理地分配到集群系統(tǒng)中的各服務(wù)器節(jié)點。
負載均衡技術(shù)伴隨著集群技術(shù)的出現(xiàn)而出現(xiàn),目的是將請求均勻地調(diào)度給集群中的節(jié)點,盡量做到負載均衡。目前常用的負載均衡算法分為以下兩類:
(1)靜態(tài)調(diào)度算法
靜態(tài)調(diào)度算法出現(xiàn)時間最早,是其他算法的基礎(chǔ)和雛形。其基本思想就是預(yù)先定義好一些調(diào)度規(guī)則,將所有的請求按照規(guī)則進行分配,而與系統(tǒng)的當(dāng)前狀態(tài),比如負載量,資源利用率等信息無關(guān)。
(2)動態(tài)調(diào)度算法
相對于靜態(tài)調(diào)度來說,動態(tài)調(diào)度算法加入了一些反饋機制,這種機制可以動態(tài)地收集當(dāng)前的集群信息,包括各個節(jié)點的負載、新請求的類型、數(shù)量、帶寬的利用率、請求延時等等。利用這些信息,我們可以動態(tài)改變服務(wù)器的權(quán)值和其他的一些屬性,改變新連接的走向。這樣的措施在負載高峰和不穩(wěn)定的時候,能夠起到很好的調(diào)節(jié)作用,避免服務(wù)傾斜和宕機的情況出現(xiàn),提高集群的整體性能。
由于動態(tài)調(diào)度算法能根據(jù)系統(tǒng)的實時信息動態(tài)地改變資源分配策略,在現(xiàn)實場景中具有更好的性能,目前國內(nèi)涉及到負載均衡技術(shù)的專利中,采用動態(tài)調(diào)度算法的較多。
但是,現(xiàn)有技術(shù)中關(guān)于分配服務(wù)資源的方案大都是從負載均衡的角度出發(fā)的,很少有針對業(yè)務(wù)優(yōu)先級的資源分配方案。在服務(wù)資源充裕的情況下,由于所有業(yè)務(wù)都能及時分配到服務(wù)資源,優(yōu)先級對于業(yè)務(wù)的重要性可能不大。然而,在服務(wù)資源緊缺時,不是所有的業(yè)務(wù)都能及時分配到服務(wù)資源,對于核心的、緊急的業(yè)務(wù)就應(yīng)該優(yōu)先分配到服務(wù)資源,此時,優(yōu)先級對于業(yè)務(wù)的重要性就不言而喻了。
技術(shù)實現(xiàn)要素:
鑒于上述的分析,本發(fā)明旨在提供一種基于業(yè)務(wù)優(yōu)先級的高并發(fā)服務(wù)資源分配方法,該方法充分考慮業(yè)務(wù)優(yōu)先級,按優(yōu)先級分配服務(wù)資源,用以解決傳統(tǒng)負載均衡技術(shù)中對業(yè)務(wù)優(yōu)先級考慮不足的問題。
本發(fā)明的目的主要是通過以下技術(shù)方案實現(xiàn)的:
一種基于業(yè)務(wù)優(yōu)先級的高并發(fā)服務(wù)資源分配方法,設(shè)置調(diào)度器;該調(diào)度器與服務(wù)器集群中的所有服務(wù)器相連;該調(diào)度器存儲有所有服務(wù)器的標(biāo)識,組成該服務(wù)器集群的服務(wù)器標(biāo)識隊列;
所述高并發(fā)服務(wù)資源分配方法包括如下步驟:
步驟S1,調(diào)度器接收用戶發(fā)出的業(yè)務(wù)請求;
步驟S2,所述調(diào)度器為接收到的每個業(yè)務(wù)請求生成一個進程;
步驟S3,所述調(diào)度器采用輪詢方式轉(zhuǎn)發(fā)所接收到的業(yè)務(wù)請求給服務(wù)器,當(dāng)有服務(wù)器服務(wù)資源充足,接受該業(yè)務(wù)請求時,相應(yīng)的進程結(jié)束;當(dāng)所有服務(wù)器都服務(wù)資源不足,暫停接入請求時,轉(zhuǎn)入步驟S4;
步驟S4,所述調(diào)度器將未被服務(wù)器接受的業(yè)務(wù)請求存儲下來;
步驟S5,所述調(diào)度器從配置文件中調(diào)取所存儲的業(yè)務(wù)請求的業(yè)務(wù)優(yōu)先級;
步驟S6、按照業(yè)務(wù)優(yōu)先級及業(yè)務(wù)請求發(fā)出時間,調(diào)度器將存儲的業(yè)務(wù)請求插入到相應(yīng)的業(yè)務(wù)請求隊列中的相應(yīng)位置;
具體地,業(yè)務(wù)請求隊列由優(yōu)先級相同的業(yè)務(wù)請求組成,每一個業(yè)務(wù)請求隊列中,按用戶發(fā)出業(yè)務(wù)請求的時間先后順序排隊;
步驟S7,所述調(diào)度器根據(jù)業(yè)務(wù)請求隊列中的業(yè)務(wù)優(yōu)先級及該業(yè)務(wù)請求隊列中的業(yè)務(wù)數(shù)量設(shè)定重發(fā)該業(yè)務(wù)請求隊列的時間間隔t,具體地,滿足niti<njtj,其中i、j表示業(yè)務(wù)請求隊列標(biāo)號,i標(biāo)號業(yè)務(wù)請求隊列業(yè)務(wù)優(yōu)先級高于j標(biāo)號業(yè)務(wù)請求隊列的業(yè)務(wù)優(yōu)先級,ni、ti分別為i標(biāo)號業(yè)務(wù)請求隊列中的業(yè)務(wù)請求數(shù)量及重發(fā)該業(yè)務(wù)請求隊列的時間間隔,nj、tj分別為j標(biāo)號業(yè)務(wù)請求隊列中的業(yè)務(wù)請求數(shù)量及重發(fā)該業(yè)務(wù)請求隊列的時間間隔;
步驟S8,所述調(diào)度器為每條業(yè)務(wù)請求隊列生成一個進程;
步驟S9,所述調(diào)度器每隔時間t,采用輪詢方式重發(fā)相應(yīng)的業(yè)務(wù)請求隊列,直到該業(yè)務(wù)請求隊列的所有業(yè)務(wù)請求被服務(wù)器接受,結(jié)束該進程。
進一步,所述步驟S3包括如下子步驟:
步驟S301,調(diào)度器從配置文件中獲取該業(yè)務(wù)請求所需服務(wù)資源單位數(shù);具體地,用戶將每一業(yè)務(wù)類型所需服務(wù)資源單位數(shù)存儲在配置文件中,供調(diào)度器獲??;
步驟S302,所述調(diào)度器將服務(wù)器標(biāo)識隊列中的隊頭元素出隊并插入隊尾;
步驟S303,所述調(diào)度器將接收的業(yè)務(wù)請求及獲取到的所需服務(wù)資源單位數(shù)轉(zhuǎn)發(fā)給隊尾標(biāo)識的服務(wù)器;
步驟S304,所述隊尾標(biāo)識的服務(wù)器判斷自身剩余服務(wù)資源單位數(shù)是否大于等于調(diào)度器轉(zhuǎn)發(fā)的所需服務(wù)資源單位數(shù);是,該服務(wù)器接受并處理該業(yè)務(wù)請求,結(jié)束該進程;否,該服務(wù)器向調(diào)度器返回“業(yè)務(wù)暫停接入”響應(yīng);
重復(fù)上述步驟S301~S304,直到有一服務(wù)器接受該業(yè)務(wù)請求,結(jié)束相應(yīng)進程,或所有服務(wù)器均返回“業(yè)務(wù)暫停接入”響應(yīng),轉(zhuǎn)步驟S4。
進一步,所述業(yè)務(wù)優(yōu)先級由用戶需求決定,用戶根據(jù)任務(wù)的緊急、重要程度,設(shè)置業(yè)務(wù)優(yōu)先級,將業(yè)務(wù)優(yōu)先級寫入配置文件中,供調(diào)度器調(diào)取。
進一步,所述步驟S9包括如下子步驟:
步驟S901,調(diào)度器從配置文件中獲取該業(yè)務(wù)請求隊列第一個業(yè)務(wù)請求所需服務(wù)資源單位數(shù);
步驟S902,調(diào)度器將服務(wù)器標(biāo)識隊列中的隊頭元素出隊并插入隊尾;
步驟S903,t時間間隔后,所述調(diào)度器將該業(yè)務(wù)請求隊列中第一個業(yè)務(wù)請求及該業(yè)務(wù)請求所需服務(wù)資源單位數(shù)轉(zhuǎn)發(fā)給隊尾標(biāo)識的服務(wù)器;
步驟S904,所述隊尾標(biāo)識的服務(wù)器判斷自身剩余服務(wù)資源單位數(shù)是否大于等于調(diào)度器轉(zhuǎn)發(fā)的所需資源單位數(shù);是,該服務(wù)器接受并處理所述的第一個業(yè)務(wù)請求,調(diào)度器將該業(yè)務(wù)請求從業(yè)務(wù)請求隊列中刪除;否,該服務(wù)器向調(diào)度器返回“業(yè)務(wù)暫停接入”響應(yīng);
重復(fù)上述步驟S901~S904,直到該業(yè)務(wù)請求隊列中的所有業(yè)務(wù)請求均被服務(wù)器接受,結(jié)束該進程。
進一步,調(diào)度器采用兩臺服務(wù)器以主備方式實現(xiàn)。
本發(fā)明為解決上述技術(shù)問題,提供了另一種基于業(yè)務(wù)優(yōu)先級的高并發(fā)服務(wù)資源分配方法,具體為:
設(shè)置調(diào)度器;該調(diào)度器與服務(wù)器集群中的所有服務(wù)器相連;該調(diào)度器存儲有所有服務(wù)器的標(biāo)識,組成該服務(wù)器集群的服務(wù)器標(biāo)識隊列;調(diào)度器每隔一定時間向所有服務(wù)器詢問服務(wù)資源消耗情況,獲得服務(wù)器集群的總資源消耗比;
所述高并發(fā)服務(wù)資源分配方法包括如下步驟:
步驟S1,調(diào)度器接收用戶發(fā)出的業(yè)務(wù)請求;
步驟S2,調(diào)度器判斷當(dāng)前服務(wù)器集群的總資源消耗比是否達到調(diào)度器所設(shè)置的閾值;判斷結(jié)果為是時,轉(zhuǎn)步驟S5;判斷結(jié)果為否時,轉(zhuǎn)步驟S3;
步驟S3,所述調(diào)度器為接收到的每個業(yè)務(wù)請求生成一個進程;
步驟S4,所述調(diào)度器采用輪詢方式轉(zhuǎn)發(fā)所接收到的業(yè)務(wù)請求給服務(wù)器,當(dāng)有服務(wù)器服務(wù)資源充足,接受該業(yè)務(wù)請求時,相應(yīng)的進程結(jié)束;
步驟S5,所述調(diào)度器將所述業(yè)務(wù)請求存儲下來;
步驟S6,所述調(diào)度器從配置文件中調(diào)取所存儲的業(yè)務(wù)請求的業(yè)務(wù)優(yōu)先級;業(yè)務(wù)優(yōu)先級由用戶需求決定,用戶根據(jù)任務(wù)的緊急、重要程度,設(shè)置業(yè)務(wù)優(yōu)先級,將業(yè)務(wù)優(yōu)先級寫入配置文件中,供調(diào)度器調(diào)??;
步驟S7、按照業(yè)務(wù)優(yōu)先級及業(yè)務(wù)請求發(fā)出的時間,將該業(yè)務(wù)請求插入到相應(yīng)業(yè)務(wù)請求隊列中的相應(yīng)位置;
具體地,業(yè)務(wù)請求隊列由優(yōu)先級相同的業(yè)務(wù)請求組成,每一個業(yè)務(wù)請求隊列中,按用戶發(fā)出業(yè)務(wù)請求的時間先后順序排隊;
步驟S8,所述調(diào)度器根據(jù)業(yè)務(wù)請求隊列中的業(yè)務(wù)優(yōu)先級及該業(yè)務(wù)請求隊列中的業(yè)務(wù)數(shù)量設(shè)定重發(fā)該業(yè)務(wù)請求隊列的時間間隔t,具體地,滿足niti<njtj,其中i、j表示業(yè)務(wù)請求隊列標(biāo)號,i業(yè)務(wù)請求隊列業(yè)務(wù)優(yōu)先級高于j業(yè)務(wù)請求隊列的業(yè)務(wù)優(yōu)先級,ni、ti分別為i業(yè)務(wù)請求隊列中的業(yè)務(wù)請求數(shù)量及重發(fā)該業(yè)務(wù)請求隊列的時間間隔,nj、tj分別為j業(yè)務(wù)請求隊列中的業(yè)務(wù)請求數(shù)量及重發(fā)該業(yè)務(wù)請求隊列的時間間隔;
步驟S9,所述調(diào)度器為每條業(yè)務(wù)請求隊列生成一個進程;
步驟S10,所述調(diào)度器每隔時間t,采用輪詢方式重發(fā)相應(yīng)的業(yè)務(wù)請求隊列,直到該業(yè)務(wù)請求隊列的所有業(yè)務(wù)請求被服務(wù)器接受,停止重發(fā)該業(yè)務(wù)請求隊列,結(jié)束該進程;
進一步,所述閾值由用戶需求決定,根據(jù)實際情況設(shè)置,設(shè)置原則是隨著對業(yè)務(wù)優(yōu)先級側(cè)重程度的增大,減小該閾值。
進一步,所述閾值取為75%。
進一步,所述步驟S4包括如下子步驟:
步驟S401,調(diào)度器從配置文件中獲取該業(yè)務(wù)請求所需服務(wù)資源單位數(shù);具體地,用戶將每一業(yè)務(wù)類型所需服務(wù)資源單位數(shù)存儲在配置文件中,供調(diào)度器獲?。?/p>
步驟S402,所述調(diào)度器將服務(wù)器標(biāo)識隊列中的隊頭元素出隊并插入隊尾;
步驟S403,所述調(diào)度器將獲取到的所需服務(wù)資源單位數(shù)轉(zhuǎn)發(fā)給隊尾標(biāo)識的服務(wù)器;
步驟S404,所述隊尾標(biāo)識的服務(wù)器判斷自身剩余服務(wù)資源單位數(shù)是否大于等于調(diào)度器轉(zhuǎn)發(fā)的所需服務(wù)資源單位數(shù);是,該服務(wù)器接受并處理該業(yè)務(wù)請求,結(jié)束該進程,否,該服務(wù)器向調(diào)度器返回“業(yè)務(wù)暫停接入”響應(yīng);
重復(fù)上述步驟S401~S404,直到有一服務(wù)器接受該業(yè)務(wù)請求。
進一步,所述步驟S10包括如下子步驟:
步驟S1001,調(diào)度器從配置文件中獲取該業(yè)務(wù)請求隊列第一個業(yè)務(wù)請求所需服務(wù)資源單位數(shù);
步驟S1002,t時間間隔后,調(diào)度器將服務(wù)器標(biāo)識隊列中的隊頭元素出隊并插入隊尾;
步驟S1003,所述調(diào)度器將該業(yè)務(wù)請求隊列中第一個業(yè)務(wù)請求所需服務(wù)資源單位數(shù)轉(zhuǎn)發(fā)給隊尾標(biāo)識的服務(wù)器;
步驟S1004,所述隊尾標(biāo)識的服務(wù)器判斷自身剩余服務(wù)資源單位數(shù)是否大于等于調(diào)度器轉(zhuǎn)發(fā)的所需資源單位數(shù);是,該服務(wù)器接受并處理業(yè)務(wù)請求隊列中的第一個業(yè)務(wù)請求,相應(yīng)的業(yè)務(wù)請求從業(yè)務(wù)請求隊列中刪除;否,則該服務(wù)器向調(diào)度器返回“業(yè)務(wù)暫停接入”響應(yīng);
重復(fù)上述步驟S1001~S1004,直到該業(yè)務(wù)請求隊列中的所有業(yè)務(wù)請求均被服務(wù)器接受,停止重發(fā)該業(yè)務(wù)請求隊列,結(jié)束該進程。
本發(fā)明有益效果如下:
1、本發(fā)明設(shè)置調(diào)度器為高并發(fā)業(yè)務(wù)分配服務(wù)資源,對高并發(fā)業(yè)務(wù)中的每一條業(yè)務(wù)請求生成一個進程,每個進程獨立處理一條業(yè)務(wù)請求。對任一條業(yè)務(wù)請求采用輪詢的方式分配服務(wù)資源,在保證資源能相對均勻分配的同時,實現(xiàn)較為簡單。
2、本發(fā)明設(shè)計了一種根據(jù)業(yè)務(wù)優(yōu)先級實現(xiàn)服務(wù)資源分配的機制,保證了在服務(wù)資源緊缺時,優(yōu)先級高的業(yè)務(wù)能夠優(yōu)先獲取到服務(wù)資源。
3、本發(fā)明通過業(yè)務(wù)請求重發(fā)的時間間隔的大小來實現(xiàn)業(yè)務(wù)優(yōu)先級,該優(yōu)先級的實現(xiàn)方式保證了不同優(yōu)先級的業(yè)務(wù)都能在一定時間內(nèi)獲取到服務(wù)資源,不會出現(xiàn)優(yōu)先級低的業(yè)務(wù)在很長一段時間內(nèi)都無法獲取服務(wù)資源的情況,因此非常適合于高并發(fā)業(yè)務(wù)的場景
4、通過設(shè)置閾值,由用戶在認為必要的時候即開啟基于優(yōu)先權(quán)的分配策略,保證在服務(wù)資源已相對不足時,使優(yōu)先級高的業(yè)務(wù)能夠優(yōu)先獲取到服務(wù)資源。
本發(fā)明的其他特征和優(yōu)點將在隨后的說明書中闡述,并且,部分的從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
附圖說明
附圖僅用于示出具體實施例的目的,而并不認為是對本發(fā)明的限制,在整個附圖中,相同的參考符號表示相同的部件。
圖1為本發(fā)明實施例一流程示意圖。
圖2為本發(fā)明實施例三流程示意圖。
具體實施方式
下面結(jié)合附圖來具體描述本發(fā)明的優(yōu)選實施例,其中,附圖構(gòu)成本申請一部分,并與本發(fā)明的實施例一起用于闡釋本發(fā)明的原理。
實施例一、
本實施例,在進行服務(wù)資源分配之前,設(shè)置調(diào)度器;調(diào)度器可以是服務(wù)器集群中的任一服務(wù)器,可以單獨進行調(diào)度,也可以同時處理業(yè)務(wù)請求。該調(diào)度器與服務(wù)器集群中的所有服務(wù)器相連;該調(diào)度器存儲有所有服務(wù)器的標(biāo)識,組成該服務(wù)器集群的服務(wù)器標(biāo)識隊列。調(diào)度器采用一個具有多塊網(wǎng)卡的高性能網(wǎng)絡(luò)服務(wù)器實現(xiàn)。為了提高容錯性,采用主備方式,用兩臺服務(wù)器實現(xiàn)雙機熱備分(即把一套系統(tǒng)同時部署到兩臺服務(wù)器上,主機系統(tǒng)如果出現(xiàn)故障,則立即切換到備機上運行)。
本實施例公開了一種基于業(yè)務(wù)優(yōu)先級的高并發(fā)服務(wù)資源分配方法,如圖1所示,
包括如下步驟:
步驟S1,調(diào)度器接收用戶發(fā)出的業(yè)務(wù)請求;
步驟S2,所述調(diào)度器為接收到的每個業(yè)務(wù)請求生成一個進程;
步驟S3,所述調(diào)度器采用輪詢方式轉(zhuǎn)發(fā)所接收到的業(yè)務(wù)請求給服務(wù)器,當(dāng)有服務(wù)器服務(wù)資源充足,接受該業(yè)務(wù)請求時,相應(yīng)的進程結(jié)束;當(dāng)所有服務(wù)器都服務(wù)資源不足,暫停接入請求時,轉(zhuǎn)入步驟S4;
包括如下子步驟:
步驟S301,調(diào)度器從配置文件中獲取該業(yè)務(wù)請求所需服務(wù)資源單位數(shù);具體地,用戶將每一業(yè)務(wù)類型所需服務(wù)資源單位數(shù)存儲在配置文件中,供調(diào)度器獲?。?/p>
不同業(yè)務(wù)對服務(wù)資源的需求不同,給每種業(yè)務(wù)賦予一個服務(wù)資源單位數(shù),例如a業(yè)務(wù)對資源需求量較小,賦予其1個單位的服務(wù)資源,b業(yè)務(wù)對服務(wù)資源需求量稍大,賦予其2個單位的資源,同時設(shè)定服務(wù)器總的資源單位數(shù),當(dāng)設(shè)置為10000個單位時,服務(wù)器能同時并發(fā)處理最多10000個a業(yè)務(wù)請求或者5000個b業(yè)務(wù)請求,或者8000個a業(yè)務(wù)和1000個b業(yè)務(wù)。
步驟S302,所述調(diào)度器將服務(wù)器標(biāo)識隊列中的隊頭元素出隊并插入隊尾;
步驟S303,所述調(diào)度器將接收的業(yè)務(wù)請求及獲取到的所需服務(wù)資源單位數(shù)轉(zhuǎn)發(fā)給隊尾標(biāo)識的服務(wù)器;
步驟S304,所述隊尾標(biāo)識的服務(wù)器判斷自身剩余服務(wù)資源單位數(shù)是否大于等于調(diào)度器轉(zhuǎn)發(fā)的所需服務(wù)資源單位數(shù);是,該服務(wù)器接受并處理該業(yè)務(wù)請求,結(jié)束該進程,否,該服務(wù)器向調(diào)度器返回“業(yè)務(wù)暫停接入”響應(yīng);
重復(fù)上述步驟S301~S304,直到有一服務(wù)器接受該業(yè)務(wù)請求,相應(yīng)進程結(jié)束;或所有服務(wù)器均返回“業(yè)務(wù)暫停接入”響應(yīng),轉(zhuǎn)入步驟S4。
步驟S4,所述調(diào)度器將未被服務(wù)器接受的業(yè)務(wù)請求存儲下來;
步驟S5,所述調(diào)度器從配置文件中調(diào)取所存儲的業(yè)務(wù)請求的業(yè)務(wù)優(yōu)先級;業(yè)務(wù)優(yōu)先級由用戶需求決定,根據(jù)任務(wù)的緊急、重要程度,設(shè)置業(yè)務(wù)優(yōu)先級,將業(yè)務(wù)優(yōu)先級寫入配置文件中,供調(diào)度器調(diào)取;
在服務(wù)資源相對充裕時,不同業(yè)務(wù)對資源的爭用并不明顯,因為這些業(yè)務(wù)都能及時分配到服務(wù)資源,但是在服務(wù)資源緊缺時,現(xiàn)有的資源并不能及時滿足所有的業(yè)務(wù),此時,資源分配的優(yōu)先級就顯得尤為重要了。對于那些緊急的、重要的、核心的業(yè)務(wù)需要賦予它們相對較高的優(yōu)先級,保證它們優(yōu)先分配到資源,而對于那些不緊急的、次要的、非核心的業(yè)務(wù)可以賦予它們相對較低的優(yōu)先級。
步驟S6、按照業(yè)務(wù)優(yōu)先級及業(yè)務(wù)請求發(fā)出時間,調(diào)度器將存儲的業(yè)務(wù)請求插入到相應(yīng)的業(yè)務(wù)請求隊列中的相應(yīng)位置;
具體地,業(yè)務(wù)請求隊列由優(yōu)先級相同的業(yè)務(wù)請求組成,每一個業(yè)務(wù)請求隊列中,按用戶發(fā)出業(yè)務(wù)請求的時間先后順序排隊;
步驟S7,調(diào)度器根據(jù)業(yè)務(wù)請求隊列中的業(yè)務(wù)優(yōu)先級及該業(yè)務(wù)請求隊列中的業(yè)務(wù)數(shù)量設(shè)定重發(fā)該業(yè)務(wù)請求隊列的時間間隔t,具體地,滿足niti<njtj,其中i、j表示業(yè)務(wù)請求隊列標(biāo)號,i標(biāo)號業(yè)務(wù)請求隊列業(yè)務(wù)優(yōu)先級高于j標(biāo)號業(yè)務(wù)請求隊列的業(yè)務(wù)優(yōu)先級,ni、ti分別為i標(biāo)號業(yè)務(wù)請求隊列中的業(yè)務(wù)請求數(shù)量及重發(fā)該業(yè)務(wù)請求隊列的時間間隔,nj、tj分別為j標(biāo)號業(yè)務(wù)請求隊列中的業(yè)務(wù)請求數(shù)量及重發(fā)該業(yè)務(wù)請求隊列的時間間隔;
步驟S8,所述調(diào)度器為每條業(yè)務(wù)請求隊列生成一個進程;
步驟S9,所述調(diào)度器每隔時間t,采用輪詢方式重發(fā)相應(yīng)的業(yè)務(wù)請求隊列,直到該業(yè)務(wù)請求隊列的所有業(yè)務(wù)請求被服務(wù)器接受,結(jié)束該進程;包括如下子步驟:
步驟S901,調(diào)度器從配置文件中獲取該業(yè)務(wù)請求隊列第一個業(yè)務(wù)請求所需服務(wù)資源單位數(shù);
步驟S902,調(diào)度器將服務(wù)器標(biāo)識隊列中的隊頭元素出隊并插入隊尾;
步驟S903,t時間間隔后,所述調(diào)度器將該業(yè)務(wù)請求隊列中第一個業(yè)務(wù)請求及該業(yè)務(wù)請求所需服務(wù)資源單位數(shù)轉(zhuǎn)發(fā)給隊尾標(biāo)識的服務(wù)器;
步驟S904,所述隊尾標(biāo)識的服務(wù)器判斷自身剩余服務(wù)資源單位數(shù)是否大于等于調(diào)度器轉(zhuǎn)發(fā)的所需資源單位數(shù);是,該服務(wù)器接受并處理所述的第一個業(yè)務(wù)請求,調(diào)度器將該業(yè)務(wù)請求從業(yè)務(wù)請求隊列中刪除;否,該服務(wù)器向調(diào)度器返回“業(yè)務(wù)暫停接入”響應(yīng);
重復(fù)上述步驟S901~S904,直到該業(yè)務(wù)請求隊列中的所有業(yè)務(wù)請求均被服務(wù)器接受,結(jié)束該進程。
本實施例集群中服務(wù)器的工作狀態(tài)分為負載未滿、滿負載兩個狀態(tài)。負載未滿,指的是集群中還有未達到滿負載的服務(wù)器。如果單個服務(wù)器已經(jīng)達到工作的最大負荷,即滿負載,就會拒絕新的請求,當(dāng)集群中所有的服務(wù)器都滿負荷運轉(zhuǎn)時,則整個集群處于滿負載狀態(tài),無法處理新的請求。當(dāng)集群負載未滿時,不同業(yè)務(wù)間不區(qū)分優(yōu)先級,即調(diào)度器以相同優(yōu)先級為不同業(yè)務(wù)分配服務(wù)資源。此時,調(diào)度器采用輪詢調(diào)度的方式來為每個業(yè)務(wù)分配服務(wù)資源。如果調(diào)度器隊列中所有的服務(wù)器都返回“業(yè)務(wù)暫停接入”響應(yīng),說明此時服務(wù)器集群已經(jīng)處于滿負載狀態(tài),則進入滿負載階段。當(dāng)集群處于滿負載狀態(tài)時,服務(wù)資源已處于匱乏狀態(tài),調(diào)度器的請求被所有服務(wù)器響應(yīng)“業(yè)務(wù)暫停接入”后,說明集群中已經(jīng)沒有可用的服務(wù)資源。
本實施例通過設(shè)定調(diào)度器重發(fā)業(yè)務(wù)請求的頻率(即時間間隔)來控制服務(wù)資源的分配。具體來說,當(dāng)調(diào)度器發(fā)現(xiàn)服務(wù)器集群已達到滿負載時,會將當(dāng)前的業(yè)務(wù)請求臨時存儲下來,每隔一段時間t重發(fā)該請求,直到該請求被接收才停止重發(fā)。此時,如果有幾種不同類型的業(yè)務(wù)在爭用服務(wù)資源,為了讓更緊急的、重要的、核心的業(yè)務(wù)優(yōu)先快速地分配到服務(wù)資源,可以把調(diào)度器重發(fā)該類型業(yè)務(wù)請求的頻率設(shè)定的高些,即把重發(fā)該請求的時間間隔t的值設(shè)定的小些。
實施例二、
為便于理解,給出一個具體的運用實例。
在核心通信系統(tǒng)中,有三種業(yè)務(wù)都需要使用計算服務(wù)器集群提供的計算服務(wù),其優(yōu)先級從高到低分別為關(guān)鍵控制業(yè)務(wù)、操作管理業(yè)務(wù)、一般查詢業(yè)務(wù)。
假設(shè)計算服務(wù)器集群由10臺單計算服務(wù)器組成,并對外提供接入控制器ServController作為統(tǒng)一訪問點即調(diào)度器,由ServController負責(zé)接收轉(zhuǎn)發(fā)用戶端的業(yè)務(wù)請求給計算服務(wù)器集群進行處理。在計算服務(wù)器集群運算能力尚有空閑時,對于三種業(yè)務(wù)的計算資源請求,ServController以相同優(yōu)先級,采用輪詢方式調(diào)用10臺計算服務(wù)器。當(dāng)選擇的計算服務(wù)器計算負荷已滿,則該計算服務(wù)器向ServController返回“業(yè)務(wù)暫停接入”響應(yīng),ServController根據(jù)返回值選擇列表中下一個計算服務(wù)器使用,依次類推,當(dāng)列表中的所有計算服務(wù)器都輪詢一遍并且都返回“業(yè)務(wù)暫停接入”的情況下,ServController臨時存儲該業(yè)務(wù)請求消息,間隔n秒時間后重新選擇計算服務(wù)器。
此時所有計算服務(wù)器都處于滿負荷的情況下,ServController自動激活優(yōu)先級分配策略,通過自動設(shè)定不同業(yè)務(wù)重發(fā)時間間隔n的大小來控制高優(yōu)先級的業(yè)務(wù)優(yōu)先獲取到計算資源進行處理。如設(shè)定關(guān)鍵控制業(yè)務(wù)n=1s,操作管理業(yè)務(wù)n=2s,一般查詢業(yè)務(wù)n=5s,當(dāng)計算服務(wù)器集群運算滿負荷時,三種業(yè)務(wù)請求都被響應(yīng)“業(yè)務(wù)暫停接入”,此時,ServController分別在1s、2s、5s后再次重發(fā)三種業(yè)務(wù)請求,1s后,任意一臺計算服務(wù)器從滿負荷變成了空閑,則關(guān)鍵控制業(yè)務(wù)最先獲得計算服務(wù)資源;2s后,另一臺計算服務(wù)器從滿負荷變成了空閑,且沒有更高資源分配優(yōu)先級的業(yè)務(wù)存在,此時操作管理業(yè)務(wù)即可獲得計算服務(wù)資源。顯然,通過這種方式,資源分配優(yōu)先級較高的業(yè)務(wù)能夠在爭用資源時優(yōu)先獲得服務(wù)資源,優(yōu)先級低的業(yè)務(wù)也不會在很長一段時間內(nèi)都無法獲取服務(wù)資源。
實施例三、
上述實施例一、二均在服務(wù)器集群滿負載情況下,才開啟基于優(yōu)先級分配服務(wù)資源,為了使緊急、重要的業(yè)務(wù)更快的獲取業(yè)務(wù)資源,本實施例提供了一種基于閾值開啟優(yōu)先級分配服務(wù)資源的實例。
本實施例公開了一種基于業(yè)務(wù)優(yōu)先級的高并發(fā)服務(wù)資源分配方法,調(diào)度器每隔一定時間向所有服務(wù)器詢問服務(wù)資源消耗情況,獲得服務(wù)器集群的總資源消耗比,當(dāng)該總資源消耗比達到調(diào)度器設(shè)置的闕值時,說明此時服務(wù)資源已經(jīng)不夠充裕,為了讓緊急的業(yè)務(wù)優(yōu)先獲取到資源,停止之前的不分優(yōu)先級平均分配資源的分配方式,而是先轉(zhuǎn)發(fā)優(yōu)先級較高的業(yè)務(wù)請求,再轉(zhuǎn)發(fā)優(yōu)先級較低的業(yè)務(wù)請求。
如圖2所示,包括如下步驟:
步驟S1,調(diào)度器接收用戶發(fā)出的業(yè)務(wù)請求;
步驟S2,調(diào)度器判斷當(dāng)前服務(wù)器集群的總資源消耗比是否達到調(diào)度器所設(shè)置的閾值;判斷結(jié)果為是時,轉(zhuǎn)步驟S5;判斷結(jié)果為否時,轉(zhuǎn)步驟S3;該閾值由用戶需求決定,根據(jù)實際情況設(shè)置,隨著對業(yè)務(wù)優(yōu)先級的側(cè)重程度的增大,減小該閾值;最佳閾值為75%,即在資源消耗比達到75%以上服務(wù)資源已相對緊張時即開啟優(yōu)先權(quán)分配策略,以保證增加調(diào)度器程序、考慮優(yōu)先級分配服務(wù)資源兩者的均衡。
步驟S3,所述調(diào)度器為接收到的每個業(yè)務(wù)請求生成一個進程;
步驟S4,所述調(diào)度器采用輪詢方式轉(zhuǎn)發(fā)所接收到的業(yè)務(wù)請求給服務(wù)器,當(dāng)有服務(wù)器服務(wù)資源充足,接受該業(yè)務(wù)請求時,相應(yīng)的進程結(jié)束;
包括如下子步驟:
步驟S401,調(diào)度器從配置文件中獲取該業(yè)務(wù)請求所需服務(wù)資源單位數(shù);具體地,用戶將每一業(yè)務(wù)類型所需服務(wù)資源單位數(shù)存儲在配置文件中,供調(diào)度器獲??;
步驟S402,所述調(diào)度器將服務(wù)器標(biāo)識隊列中的隊頭元素出隊并插入隊尾;
步驟S403,所述調(diào)度器將獲取到的所需服務(wù)資源單位數(shù)轉(zhuǎn)發(fā)給隊尾標(biāo)識的服務(wù)器;
步驟S404,所述隊尾標(biāo)識的服務(wù)器判斷自身剩余服務(wù)資源單位數(shù)是否大于等于調(diào)度器轉(zhuǎn)發(fā)的所需服務(wù)資源單位數(shù);是,該服務(wù)器接受并處理該業(yè)務(wù)請求,結(jié)束該進程,否,該服務(wù)器向調(diào)度器返回“業(yè)務(wù)暫停接入”響應(yīng);
重復(fù)上述步驟S401~S404,直到有一服務(wù)器接受該業(yè)務(wù)請求。
步驟S5,所述調(diào)度器將所述業(yè)務(wù)請求存儲下來;
步驟S6,所述調(diào)度器從配置文件中調(diào)取所存儲的業(yè)務(wù)請求的業(yè)務(wù)優(yōu)先級;業(yè)務(wù)優(yōu)先級由用戶需求決定,用戶根據(jù)任務(wù)的緊急、重要程度,設(shè)置業(yè)務(wù)優(yōu)先級,將業(yè)務(wù)優(yōu)先級寫入配置文件中,供調(diào)度器調(diào)??;
步驟S7、按照業(yè)務(wù)優(yōu)先級及業(yè)務(wù)請求發(fā)出的時間,將該業(yè)務(wù)請求插入到相應(yīng)業(yè)務(wù)請求隊列中的相應(yīng)位置;
具體地,業(yè)務(wù)請求隊列由優(yōu)先級相同的業(yè)務(wù)請求組成,每一個業(yè)務(wù)請求隊列中,按用戶發(fā)出業(yè)務(wù)請求的時間先后順序排隊;
步驟S8,調(diào)度器根據(jù)業(yè)務(wù)請求隊列中的業(yè)務(wù)優(yōu)先級及該業(yè)務(wù)請求隊列中的業(yè)務(wù)數(shù)量設(shè)定重發(fā)該業(yè)務(wù)請求隊列的時間間隔t,具體地,滿足niti<njtj,其中i、j表示業(yè)務(wù)請求隊列標(biāo)號,i標(biāo)號業(yè)務(wù)請求隊列業(yè)務(wù)優(yōu)先級高于j標(biāo)號業(yè)務(wù)請求隊列的業(yè)務(wù)優(yōu)先級,ni、ti分別為i標(biāo)號業(yè)務(wù)請求隊列中的業(yè)務(wù)請求數(shù)量及重發(fā)該業(yè)務(wù)請求隊列的時間間隔,nj、tj分別為j標(biāo)號業(yè)務(wù)請求隊列中的業(yè)務(wù)請求數(shù)量及重發(fā)該業(yè)務(wù)請求隊列的時間間隔;
步驟S9,所述調(diào)度器為每條業(yè)務(wù)請求隊列生成一個進程;
步驟S10,所述調(diào)度器每隔時間t,采用輪詢方式重發(fā)相應(yīng)的業(yè)務(wù)請求隊列,直到該業(yè)務(wù)請求隊列的所有業(yè)務(wù)請求被服務(wù)器接受,停止重發(fā)該業(yè)務(wù)請求隊列,結(jié)束該進程;包括如下子步驟:
步驟S1001,調(diào)度器從配置文件中獲取該業(yè)務(wù)請求隊列第一個業(yè)務(wù)請求所需服務(wù)資源單位數(shù);
步驟S1002,t時間間隔后,調(diào)度器將服務(wù)器標(biāo)識隊列中的隊頭元素出隊并插入隊尾;
步驟S1003,所述調(diào)度器將該業(yè)務(wù)請求隊列中第一個業(yè)務(wù)請求所需服務(wù)資源單位數(shù)轉(zhuǎn)發(fā)給隊尾標(biāo)識的服務(wù)器;
步驟S1004,所述隊尾標(biāo)識的服務(wù)器判斷自身剩余服務(wù)資源單位數(shù)是否大于等于調(diào)度器轉(zhuǎn)發(fā)的所需資源單位數(shù);是,該服務(wù)器接受并處理業(yè)務(wù)請求隊列中的第一個業(yè)務(wù)請求,相應(yīng)的業(yè)務(wù)請求從業(yè)務(wù)請求隊列中刪除;否,則該服務(wù)器向調(diào)度器返回“業(yè)務(wù)暫停接入”響應(yīng);
重復(fù)上述步驟S1001~S1004,直到該業(yè)務(wù)請求隊列中的所有業(yè)務(wù)請求均被服務(wù)器接受,停止重發(fā)該業(yè)務(wù)請求隊列,結(jié)束該進程。
本發(fā)明具有以下優(yōu)點:
1、本發(fā)明采用輪詢的方式為高并發(fā)業(yè)務(wù)分配服務(wù)資源,在保證資源能相對均勻分配的同時,實現(xiàn)較為簡單。
2、本發(fā)明設(shè)計了一種按業(yè)務(wù)優(yōu)先級的資源分配機制,保證了在服務(wù)資源相對緊缺時,優(yōu)先級高的業(yè)務(wù)能夠優(yōu)先獲取到服務(wù)資源。
3、本發(fā)明通過業(yè)務(wù)請求重發(fā)的時間間隔的大小來實現(xiàn)業(yè)務(wù)優(yōu)先級,該優(yōu)先級的實現(xiàn)方式保證了不同優(yōu)先級的業(yè)務(wù)都能在一定時間內(nèi)獲取到服務(wù)資源,不會出現(xiàn)優(yōu)先級低的業(yè)務(wù)在很長一段時間內(nèi)都無法獲取服務(wù)資源的情況,因此非常適合于高并發(fā)業(yè)務(wù)的場景。
本領(lǐng)域技術(shù)人員可以理解,實現(xiàn)上述實施例方法的全部或部分流程,可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于計算機可讀存儲介質(zhì)中。其中,所述計算機可讀存儲介質(zhì)為磁盤、光盤、只讀存儲記憶體或隨機存儲記憶體等。
以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。