本發(fā)明涉及計算機網(wǎng)絡技術領域,具體涉及一種基于中間件實現(xiàn)的后臺服務器選擇方法及裝置。
背景技術:
中間件位于數(shù)據(jù)管理層和用戶界面層之間,它可以為處于操作系統(tǒng)和應用程序之間的通信平臺,也可以是應用平臺與后臺數(shù)據(jù)庫之間的數(shù)據(jù)通信媒介等。其中,中間件也可位于客戶端和服務器之間,可以完成對事物的管理與協(xié)調(diào)等任務。
中間件在接收到客戶端發(fā)送的新的請求后常采用輪詢的方式將請求發(fā)送至服務器,或者通過統(tǒng)計當前服務器與客戶端的連接數(shù)將新的請求發(fā)送至當前連接數(shù)最少的服務器。但是,采用輪詢的方法常會出現(xiàn)部分服務器過載甚至宕機的現(xiàn)象,而與客戶端連接數(shù)的多少并未能有效反映服務器處理任務的能力,也會造成嚴重的負載失衡,降低系統(tǒng)處理事物的效率及資源利用率,并降低了系統(tǒng)的穩(wěn)定性。而且,當以某一性能參數(shù)表征服務器處理任務能力,常采用窮舉的方法,即計算所有服務器的性能參數(shù),來尋求較優(yōu)的服務器。此種方法會增加整個系統(tǒng)的運算量,額外占用系統(tǒng)較多的運算資源,降低系統(tǒng)處理事物的效率。
技術實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的基于中間件實現(xiàn)的后臺服務器選擇方法及裝置。
根據(jù)本發(fā)明的一個方面,提供了一種基于中間件實現(xiàn)的后臺服務器選擇方法,其包括:
接收客戶端發(fā)送的業(yè)務請求;
在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),所述預設數(shù)值范圍包含第一數(shù)值范圍;
若所述第一隨機數(shù)落入第一數(shù)值范圍內(nèi),根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器;
將所述業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。
可選的,所述預設數(shù)值范圍包含第二數(shù)值范圍,所述方法還包括:
若所述第一隨機數(shù)落入第二數(shù)值范圍內(nèi),在服務器列表中隨機或順次選取一服務器。
可選的,所述預設數(shù)值范圍為[0,1],所述第二數(shù)值范圍為[0,ε],所述第一數(shù)值范圍為(ε,1],其中ε為根據(jù)之前服務器的選擇情況預先設置的值。
可選的,所述在服務器列表中順次選取一服務器進一步包括:
查詢上一次第一隨機數(shù)落入第二數(shù)值范圍時所選取的服務器;
在服務器列表中選取排序緊鄰在上一次第一隨機數(shù)落入第一數(shù)值范圍時所選取的服務器之后的服務器。
可選的,所述根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器進一步包括:
計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
選取所述各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)最小的服務器。
可選的,所述根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器進一步包括:
計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理,得到歸一化處理后的響應時間參數(shù)T1,T2,…,Ti,…,Tn,其中Ti為在服務器列表中排在第i位的服務器的歸一化處理后的響應時間參數(shù);
根據(jù)歸一化的數(shù)值范圍,生成一第二隨機數(shù);
從k=1開始,按照如下公式計算Sumk,直至Sumk大于或等于第二隨機數(shù)結束,選取在服務器列表中排在第k位的服務器;
可選的,所述根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器進一步包括:
計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
選取所述各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的一服務器。
可選的,所述預設時間段包含多個子時間段;
所述計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進一步包括:根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
可選的,所述根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進一步包括:
根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器每個子時間段的平均響應時間;
計算各個服務器各個子時間段的平均響應時間與子時間段序號的乘積之和作為各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),其中子時間段序號根據(jù)子時間段距離當前時間由遠及近依次遞增。
根據(jù)本發(fā)明的另一方面,提供了一種基于中間件實現(xiàn)的后臺服務器選擇裝置,其包括:
接收模塊,適于接收客戶端發(fā)送的業(yè)務請求;
生成模塊,適于在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),所述預設數(shù)值范圍包含第一數(shù)值范圍;
第一選取模塊,適于若所述第一隨機數(shù)落入第一數(shù)值范圍內(nèi),根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器;
發(fā)送模塊,適于將所述業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。
可選的,所述預設數(shù)值范圍包含第二數(shù)值范圍,所述裝置還包括:
第二選取模塊,適于若所述第一隨機數(shù)落入第二數(shù)值范圍內(nèi),在服務器列表中隨機或順次選取一服務器。
可選的,所述預設數(shù)值范圍為[0,1],所述第二數(shù)值范圍為[0,ε],所述第一數(shù)值范圍為(ε,1],其中ε為根據(jù)之前服務器的選擇情況預先設置的值。
可選的,所述裝置還包括:
查詢模塊,適于查詢上一次第一隨機數(shù)落入第二數(shù)值范圍時所選取的服務器;
所述第二選取模塊進一步適于:在服務器列表中選取排序在上一次第一隨機數(shù)落入第一數(shù)值范圍時所選取的服務器之后的服務器。
可選的,所述裝置還包括:
計算模塊,適于計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
所述第一選取模塊進一步適于:選取所述各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)最小的服務器。
可選的,所述裝置還包括:
計算模塊,適于計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
所述第一選取模塊進一步適于:對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理,得到歸一化處理后的響應時間參數(shù)T1,T2,…,Ti,…Tn,其中Ti為在服務器列表中排在第i位的服務器的歸一化處理后的響應時間參數(shù);
所述生成模塊還適于:根據(jù)歸一化的數(shù)值范圍,生成一第二隨機數(shù);
所述第一選取模塊進一步適于:從k=1開始,按照如下公式計算Sumk,直至Sumk大于或等于第二隨機數(shù)結束,選取在服務器列表中排在第k位的服務器;
可選的,所述裝置還包括:
計算模塊,適于計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
所述第一選取模塊進一步適于:選取所述各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的一服務器。
可選的,所述預設時間段包含多個子時間段;
所述計算模塊進一步適于:根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
可選的,所述計算模塊進一步包括:
第一計算單元。適于根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器每個子時間段的平均響應時間;
第二計算單元,適于計算各個服務器各個子時間段的平均響應時間與子時間段序號的乘積之和作為各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),其中子時間段序號根據(jù)子時間段距離當前時間由遠及近依次遞增。
根據(jù)本發(fā)明提供的基于中間件實現(xiàn)的后臺服務器選擇方法及裝置,可以接收客戶端發(fā)送的業(yè)務請求;在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),其中,預設數(shù)值范圍包含第一數(shù)值范圍;若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),則根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器;最終將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。采用本方案,通過利用各個服務器最近的預設時間段內(nèi)的響應時間來選擇服務器,可以實現(xiàn)服務器系統(tǒng)的負載均衡,提高系統(tǒng)穩(wěn)定性;又由于只有當?shù)谝浑S機數(shù)落入第一數(shù)值范圍內(nèi),才需計算各個服務器最近的預設時間段內(nèi)的響應時間,所以在一定程度上降低了系統(tǒng)的運算量及運算資源占有率,提高服務器系統(tǒng)處理任務的效率。
根據(jù)本發(fā)明的上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個實施例提供的基于中間件實現(xiàn)的后臺服務器選擇方法的流程示意圖;
圖2示出了根據(jù)本發(fā)明另一個實施例提供的基于中間件實現(xiàn)的后臺服務器選擇方法的流程示意圖;
圖3示出了根據(jù)本發(fā)明又一個實施例提供的基于中間件實現(xiàn)的后臺服務器選擇方法的流程示意圖;
圖4示出了根據(jù)本發(fā)明一個實施例提供的基于中間件實現(xiàn)的后臺服務器選擇裝置的功能結構示意圖;
圖5示出了根據(jù)本發(fā)明另一個實施例提供的基于中間件實現(xiàn)的后臺服務器選擇裝置的功能結構示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領域的技術人員。
圖1示出了根據(jù)本發(fā)明一個實施例提供的基于中間件實現(xiàn)的后臺服務器選擇方法的流程示意圖。如圖1所示,該方法包括以下步驟:
步驟101,接收客戶端發(fā)送的業(yè)務請求。
接收客戶端發(fā)送的業(yè)務請求。例如,可通過構造監(jiān)聽端口的ServerSocket,,建立Socket套接字并將其綁定到端口,通過監(jiān)聽Socket套接字來判斷客戶端是否有業(yè)務請求,若有,則將此客戶端的請求列入ServerSocket隊列,若無,則繼續(xù)監(jiān)聽。
可選的,判斷客戶端的業(yè)務請求中是否包含處理該項業(yè)務請求所需的資格條件,如判斷客戶端發(fā)送的業(yè)務請求中是否包含客戶端數(shù)字證書或者判斷客戶端數(shù)字證書是否在有效期內(nèi),若否,則向客戶端返回相應的提示信息;若是,則將此客戶端的業(yè)務請求列入ServerSocket隊列。
可選的,可對客戶端發(fā)送的業(yè)務請求進行相應的標記,如設置客戶端發(fā)送的業(yè)務請求所需服務的優(yōu)先級,以保證優(yōu)先級別高的業(yè)務請求先得到處理。
步驟102,在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),該預設數(shù)值范圍包含第一數(shù)值范圍。
在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),如在預設數(shù)值范圍[0,1]內(nèi)生成一第一隨機數(shù)。該預設數(shù)值范圍包含第一數(shù)值范圍,如預設范圍為[0,1],第一數(shù)值范圍可以為[0,0.2]??蛇x的,第一數(shù)值范圍的設定是根據(jù)之前服務器的選擇情況預先設置的值。在前期過程中,可設定一起始數(shù)值范圍,并預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),若第一隨機數(shù)落入該數(shù)值范圍內(nèi),則根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器(對應步驟103);若否,則隨機選擇一服務器,并最終判斷系統(tǒng)的負載失衡程度。根據(jù)系統(tǒng)的負載失衡程度,以一定權重擴大或縮小該數(shù)值范圍,而后再采用上述方法選擇服務器,判斷選擇的數(shù)值范圍下系統(tǒng)的負載失衡程度。最終,將系統(tǒng)負載失衡程度最小時對應的選取的數(shù)值范圍作為第一數(shù)值范圍。
步驟103,若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),則根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器。
根據(jù)步驟102中在預設數(shù)值范圍內(nèi)生成的第一隨機數(shù),判斷第一隨機數(shù)的范圍。若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),則根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器。
可選的,可記錄各個服務器在最近的預設時間段內(nèi)的響應時間,根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間,可獲知當前各個服務器處理任務的能力。例如,服務器在最近的預設時間段內(nèi)的響應時間越短,則表明該服務器當前處理任務的壓力較小,則可選取此服務器。
步驟104,將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。
將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器,以供服務器對客戶端的業(yè)務請求進行處理。
根據(jù)本發(fā)明提供的基于中間件實現(xiàn)的后臺服務器選擇方法,可以根據(jù)接收客戶端發(fā)送的業(yè)務請求;在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),預設數(shù)值范圍包含第一數(shù)值范圍;若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器;將所述業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。采用本方案,通過利用各個服務器最近的預設時間段內(nèi)的響應時間來選擇服務器,可以實現(xiàn)服務器系統(tǒng)的負載均衡,提高系統(tǒng)穩(wěn)定性;又由于只有當?shù)谝浑S機數(shù)落入第一數(shù)值范圍內(nèi),才需計算各個服務器最近的預設時間段內(nèi)的響應時間,所以在一定程度上降低了系統(tǒng)的運算量及運算資源占有率,提高服務器系統(tǒng)處理任務的效率。
圖2示出了根據(jù)本發(fā)明另一個實施例提供的基于中間件實現(xiàn)的后臺服務器選擇方法的流程示意圖。如圖2所示,該方法包括以下步驟:
步驟201,接收客戶端發(fā)送的業(yè)務請求。
接收客戶端發(fā)送的業(yè)務請求。例如,可通過構造監(jiān)聽端口的ServerSocket,,建立Socket套接字并將其綁定到端口,通過監(jiān)聽Socket套接字來判斷客戶端是否有業(yè)務請求,若有,則將此客戶端的請求列入ServerSocket隊列,若無,則繼續(xù)監(jiān)聽。
可選的,判斷客戶端的業(yè)務請求中是否包含處理該項業(yè)務請求所需的資格條件,如判斷客戶端發(fā)送的業(yè)務請求中是否包含客戶端數(shù)字證書或者判斷客戶端數(shù)字證書是否在有效期內(nèi),若否,則向客戶端返回相應的提示信息;若是,則將此客戶端的業(yè)務請求列入ServerSocket隊列。
可選的,可對客戶端發(fā)送的業(yè)務請求進行相應的標記,如設置客戶端發(fā)送的業(yè)務請求所需服務的優(yōu)先級,以保證優(yōu)先級別高的業(yè)務請求先得到處理。
步驟202,在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù)。
可選地,預設數(shù)值范圍為[0,1]。該預設數(shù)值范圍包含第一數(shù)值范圍及第二數(shù)值范圍。其中,第一數(shù)值范圍為(ε,1],第二數(shù)值范圍為[0,ε],ε為根據(jù)之前服務器的選擇情況預先設置的值。
具體地,ε為在(0,1)之間的實數(shù),是根據(jù)之前服務器的選擇情況而設置的。在設定ε前,可先設定一起始數(shù)值ε0,并在預設數(shù)值范圍[0,1]內(nèi)生成一隨機數(shù),若該隨機數(shù)落入[0,ε0),則隨機選擇一服務器;若該隨機數(shù)落入(ε0,1],則根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器。并最終判斷系統(tǒng)的負載失衡程度。根據(jù)系統(tǒng)的負載失衡程度,以一定權重增大或減小ε0獲得ε1,并采用上述方法選擇服務器,判斷ε1對應的系統(tǒng)的負載失衡程度。以此類推,直至獲得εn-1對應的系統(tǒng)的負載失衡程度,其中n為預設的獲取ε的探索次數(shù)。最終,將系統(tǒng)負載失衡程度最小時對應的εi作為ε。
可選的,當系統(tǒng)冷啟動時,即在系統(tǒng)剛運行后,未保存有之前服務器的選擇情況的相關信息時,可隨機選擇一服務器,在獲得一定容量的服務器的選擇情況的相關信息后再根據(jù)上述方法設置ε。
進一步可選的,在設定ε,執(zhí)行完后續(xù)步驟203至步驟207后,可以一定權重降低ε,并記錄系統(tǒng)的負載均衡程度,當系統(tǒng)的負載均衡程度趨于穩(wěn)定時,可保持ε不變。
步驟203,判斷第一隨機數(shù)的范圍,若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),則執(zhí)行步驟204;若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),則執(zhí)行步驟205。
判斷第一隨機數(shù)的范圍,若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),即第一隨機數(shù)處于[0,ε],則執(zhí)行步驟204;若第一隨機數(shù)落入第一數(shù)值范圍內(nèi)(ε,1],則執(zhí)行步驟205。
步驟204,在服務器列表中隨機或順次選取一服務器。
若步驟203中判斷的第一隨機數(shù)落入第二數(shù)值范圍內(nèi),則在服務器列表中隨機或順次選取一服務器。
具體地,若步驟203中判斷的第一隨機數(shù)落入第二數(shù)值范圍內(nèi),可在服務器列表中隨機選取一服務器。例如,可采用Random_rand函數(shù)隨機獲取服務器列表中一服務器編號,并選取該編號對應的服務器。
若步驟203中判斷的第一隨機數(shù)落入第二數(shù)值范圍內(nèi),可在服務器列表中順次選取一服務器。具體地,查詢上一次第一隨機數(shù)落入第二數(shù)值范圍時所選取的服務器;在服務器列表中選取排序緊鄰在上一次第一隨機數(shù)落入第一數(shù)值范圍時所選取的服務器之后的服務器。例如,上一次第一隨機數(shù)落入第二數(shù)值范圍時選取了編號為“0021”的服務器,則若本次第一隨機數(shù)仍落入第二數(shù)值范圍內(nèi),則選取排序緊鄰“0021”后的編號為“0022”的服務器。
步驟205,計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
其中,預設時間段包含多個子時間段。可選的,可以將預設時間段均等地分為多個子時間段,根據(jù)時間先后順序,各個子時間段起止時間點依次相接,例如。預設時間段為[t-10,t),其中,t為當前時間,t-10為距離當前時間的前十分鐘,在預設時間段[t-10,t)內(nèi)包含n個子時間段,該n個子時間段根據(jù)時間先后順序,起止時間點依次相接。如,n=5,則預設時間段[t-10,t)的子時間段分別為[t-10,t-8)、[t-8,t-6)、[t-6,t-4)、[t-4,t-2)、[t-2,t)。
根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。例如,可將各個服務器每個子時間段內(nèi)的響應時間和響應次數(shù)記錄于一列表中,隨著時間的變化,列表中的各個服務器每個子時間段內(nèi)的響應時間和響應次數(shù)也會相應地更新。
具體地,可根據(jù)各個服務器每個子時間段內(nèi)的響應時間和響應次數(shù),計算各個服務器每個子時間段內(nèi)的平均響應時間。舉例來說,預設時間段內(nèi)包含n個子時間段,則根據(jù)response[i]/count[i]計算第i個時間段內(nèi)的平均響應時間tavg[i],其中response[i]為第i個子時間段的響應時間,count[i]為第i個子時間段的響應次數(shù)。例如,在第i個子時間段內(nèi),編號為“012”的服務器響應次數(shù)count[i]為2次,2次響應的響應時間分別為Q1、Q2,則編號為“012”的服務器response[i]=Q2+Q1,在第i個子時間段內(nèi)平均響應時間tavg[i]=(Q2+Q1)/2。
計算各個服務器各個子時間段的平均響應時間與子時間段序號的乘積之和作為各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),其中子時間段序號根據(jù)子時間段距離當前時間由遠及近依次遞增。即,可采用公式(2-1),計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
其中,T為服務器在最近的預設時間段內(nèi)的響應時間參數(shù);i為在最近的預設時間段內(nèi)子時間段序號;tavg[i]為第i個子時間段內(nèi)的平均響應時間。公式(2-1)中子時間段序號i可作為該子時間段的平均響應時間的權重系數(shù),距離當前時間越近的子時間段權重系數(shù)越高。
可選的,也可通過其他方法計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。如公式(2-2)所示:
其中,T為服務器在最近的預設時間段內(nèi)的響應時間參數(shù);i為在最近的預設時間段內(nèi)子時間段序號;tavg[i]為第i個子時間段內(nèi)的平均響應時間;f(i)為與最近的預設時間段內(nèi)子時間段序號i有關的函數(shù),其可以為線性函數(shù),如f(i)=5i+2,或者為可以表征子時間段權重的其他函數(shù)。
步驟206,選取各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)最小的服務器。
根據(jù)步驟205中計算的各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),可獲知各個服務器當前處理任務的能力大小,服務器在最近的預設時間段內(nèi)的響應時間參數(shù)越小時,表明該服務器當前處理任務的壓力較小,則可選取各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)最小的服務器。
步驟207,將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。
將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器,以供服務器對客戶端的業(yè)務請求進行處理。
根據(jù)本發(fā)明提供的基于中間件實現(xiàn)的后臺服務器選擇方法,可以根據(jù)接收客戶端發(fā)送的業(yè)務請求;在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),預設數(shù)值范圍包含第一數(shù)值范圍及第二數(shù)值范圍;若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),則通過計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)選取一服務器;若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),則順次或隨機選取一服務器;最終將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。采用本方案,通過選取各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)最小的服務器,可以實現(xiàn)服務器系統(tǒng)的負載均衡,提高系統(tǒng)穩(wěn)定性;又由于只有當?shù)谝浑S機數(shù)落入第一數(shù)值范圍內(nèi),才需計算各個服務器最近的預設時間段內(nèi)的響應時間,所以在一定程度上降低了系統(tǒng)的運算量及運算資源占有率,提高服務器系統(tǒng)處理任務的效率。
圖3示出了根據(jù)本發(fā)明又一個實施例提供的基于中間件實現(xiàn)的后臺服務器選擇方法的流程示意圖。如圖3所示,該方法包括以下步驟:
步驟301,接收客戶端發(fā)送的業(yè)務請求。
接收客戶端發(fā)送的業(yè)務請求,具體地,可參照圖2所示實施例中的步驟201所述的方法。
步驟302,在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù)。
可選地,預設數(shù)值范圍為[0,1]。該預設數(shù)值范圍包含第一數(shù)值范圍及第二數(shù)值范圍。其中,第一數(shù)值范圍為(ε,1],第二數(shù)值范圍為[0,ε],ε為根據(jù)之前服務器的選擇情況預先設置的值。
具體地,可參照圖2所示實施例中的步驟202所述的方法在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù)。
步驟303,判斷第一隨機數(shù)的范圍,若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),則執(zhí)行步驟304;若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),則執(zhí)行步驟305。
判斷第一隨機數(shù)的范圍,若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),即第一隨機數(shù)處于[0,ε],則執(zhí)行步驟304;若第一隨機數(shù)落入第一數(shù)值范圍內(nèi)(ε,1],則執(zhí)行步驟305。
步驟304,在服務器列表中隨機或順次選取一服務器。
若步驟303中判斷的第一隨機數(shù)落入第二數(shù)值范圍內(nèi),則在服務器列表中隨機或順次選取一服務器。
具體地,可參照圖2所示實施例中的步驟204所述的方法在服務器列表中隨機或順次選取一服務器。
步驟305,計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
其中,預設時間段包含多個子時間段。具體地,可參照圖2所示實施例中的步驟205所述的方法計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
步驟306,對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理,根據(jù)歸一化的數(shù)值范圍,生成一第二隨機數(shù)。
根據(jù)步驟305中計算的各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),可以進一步根據(jù)該響應時間參數(shù)選取一服務器。
具體地,對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理,得到歸一化處理后的響應時間參數(shù)T1,T2,…,Ti,…,Tn,其中Ti為在服務器列表中排在第i位的服務器的歸一化處理后的響應時間參數(shù)。
可選的,可利用公式(3-1)對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理:
其中,Ti為在服務器列表中排在第i位的服務器的歸一化處理后的響應時間參數(shù);Ti'為在服務器列表中排在第i位的服務器的歸一化處理前的響應時間參數(shù);T'max為在服務器列表中各個服務器歸一化處理前的響應時間參數(shù)中的最大值;T'min為在服務器列表中各個服務器歸一化處理前的響應時間參數(shù)中的最小值。本發(fā)明對具體的各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)的歸一化處理方法不做限定,本領域人員可根據(jù)具體情形自行選擇。
在對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理后,根據(jù)歸一化的數(shù)值范圍,生成一第二隨機數(shù)。
具體地,將各個服務器在最近的預設時間段內(nèi)的歸一化后的響應時間參數(shù)的最大值和最小值分別作為第二隨機數(shù)生成范圍的最大值和最小值。如,利用公式(3-1)處理后的各個服務器在最近的預設時間段內(nèi)的歸一化后的響應時間參數(shù)最大值和最小值分別為1和0,則第二隨機數(shù)生成范圍為[0,1]。可通過隨機種子與函數(shù)結合法在[0,1]生成一第二隨機數(shù)。
步驟307,從k=1開始,計算Sumk,直至Sumk大于或等于第二隨機數(shù)結束,選取在服務器列表中排在第k位的服務器。
具體地,從k=1開始,按照公式(3-2)計算Sumk,直至Sumk大于或等于第二隨機數(shù)結束,選取在服務器列表中排在第k位的服務器。
其中,Ti為在服務器列表中排在第i位的服務器的響應時間參數(shù)。
步驟308,將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。
將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器,以供服務器對客戶端的業(yè)務請求進行處理。
根據(jù)本發(fā)明提供的基于中間件實現(xiàn)的后臺服務器選擇方法,可以根據(jù)接收客戶端發(fā)送的業(yè)務請求;在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),預設數(shù)值范圍包含第一數(shù)值范圍及第二數(shù)值范圍;若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),則通過計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)選取一服務器;若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),則順次或隨機選取一服務器;最終將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。采用本方案,利用各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)選取一服務器,可以實現(xiàn)服務器系統(tǒng)的負載均衡,提高系統(tǒng)穩(wěn)定性;又由于只有當?shù)谝浑S機數(shù)落入第一數(shù)值范圍內(nèi),才需計算各個服務器最近的預設時間段內(nèi)的響應時間,所以在一定程度上降低了系統(tǒng)的運算量及運算資源占有率,提高服務器系統(tǒng)處理任務的效率。
可選的,在又一個實施例中,可根據(jù)計算的各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),選取各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的一服務器。進一步可選的,若各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的服務器的個數(shù)大于1個,則在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的多個服務器中隨機選取一個。
圖4示出了根據(jù)本發(fā)明一個實施例提供的基于中間件實現(xiàn)的后臺服務器選擇裝置的功能結構示意圖。如圖4所示,該裝置包括:接收模塊41、生成模塊42、第一選取模塊43、發(fā)送模塊44。
接收模塊41,適于接收客戶端發(fā)送的業(yè)務請求。
接收客戶端發(fā)送的業(yè)務請求。例如,可通過構造監(jiān)聽端口的ServerSocket,,建立Socket套接字并將其綁定到端口,通過監(jiān)聽Socket套接字來判斷客戶端是否有業(yè)務請求,若有,則將此客戶端的請求列入ServerSocket隊列,若無,則繼續(xù)監(jiān)聽。
可選的,判斷客戶端的業(yè)務請求中是否包含處理該項業(yè)務請求所需的資格條件,如判斷客戶端發(fā)送的業(yè)務請求中是否包含客戶端數(shù)字證書或者判斷客戶端數(shù)字證書是否在有效期內(nèi),若否,則向客戶端返回相應的提示信息;若是,則將此客戶端的業(yè)務請求列入ServerSocket隊列。
可選的,可對客戶端發(fā)送的業(yè)務請求進行相應的標記,如設置客戶端發(fā)送的業(yè)務請求所需服務的優(yōu)先級,以保證優(yōu)先級別高的業(yè)務請求先得到處理。
生成模塊42,適于在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),該預設數(shù)值范圍包含第一數(shù)值范圍。
在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),如在預設數(shù)值范圍[0,1]內(nèi)生成一第一隨機數(shù)。該預設數(shù)值范圍包含第一數(shù)值范圍,如預設范圍為[0,1],第一數(shù)值范圍可以為[0,0.2]。可選的,第一數(shù)值范圍的設定是根據(jù)之前服務器的選擇情況預先設置的值。在前期過程中,可設定一起始數(shù)值范圍,并預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),若第一隨機數(shù)落入該數(shù)值范圍內(nèi),則根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器;若否,則隨機選擇一服務器,并最終判斷系統(tǒng)的負載失衡程度。根據(jù)系統(tǒng)的負載失衡程度,以一定權重擴大或縮小該數(shù)值范圍,而后再采用上述方法選擇服務器,判斷選擇的數(shù)值范圍下系統(tǒng)的負載失衡程度。最終,將系統(tǒng)負載失衡程度最小時對應的選取的數(shù)值范圍作為第一數(shù)值范圍。
第一選取模塊43,適于若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器。
根據(jù)生成模塊42中在預設數(shù)值范圍內(nèi)生成的第一隨機數(shù),判斷第一隨機數(shù)的范圍,若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),則根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器。
可選的,可記錄各個服務器在最近的預設時間段內(nèi)的響應時間,根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間,可獲知當前各個服務器處理任務的能力。例如,服務器在最近的預設時間段內(nèi)的響應時間越短,則表明該服務器當前處理任務的壓力較小,則可選取此服務器,將業(yè)務請求轉(zhuǎn)發(fā)給此服務器。
發(fā)送模塊44,適于將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。
將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器,以供服務器對客戶端的業(yè)務請求進行處理。
根據(jù)本發(fā)明提供的基于中間件實現(xiàn)的后臺服務器選擇裝置,可以通過接收模塊接收客戶端發(fā)送的業(yè)務請求;并通過生成模塊在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),預設數(shù)值范圍包含第一數(shù)值范圍;若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),通過第一選擇模塊根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器;最終通過發(fā)送模塊將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。采用本方案,通過利用各個服務器最近的預設時間段內(nèi)的響應時間來選擇服務器,可以實現(xiàn)服務器系統(tǒng)的負載均衡,提高系統(tǒng)穩(wěn)定性;又由于只有當?shù)谝浑S機數(shù)落入第一數(shù)值范圍內(nèi),才需計算各個服務器最近的預設時間段內(nèi)的響應時間,所以在一定程度上降低了系統(tǒng)的運算量及運算資源占有率,提高服務器系統(tǒng)處理任務的效率。
圖5示出了根據(jù)本發(fā)明另一個實施例提供的基于中間件實現(xiàn)的后臺服務器選擇裝置的功能結構示意圖。如圖5所示,在圖4所示裝置的基礎上,該基于中間件實現(xiàn)的后臺服務器選擇裝置還包括:第二選取模塊51、查詢模塊52、計算模塊53。
預設數(shù)值范圍還包含第二數(shù)值范圍。預設數(shù)值范圍為[0,1],第二數(shù)值范圍為[0,ε],第一數(shù)值范圍為(ε,1],其中ε為根據(jù)之前服務器的選擇情況預先設置的值。
具體地,ε為在(0,1)之間的實數(shù),是根據(jù)之前服務器的選擇情況而設置的。在設定ε前,可先設定一起始數(shù)值ε0,并在預設數(shù)值范圍[0,1]內(nèi)生成一隨機數(shù),若該隨機數(shù)落入[0,ε0),則隨機選擇一服務器;若該隨機數(shù)落入(ε0,1],則根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器。并記錄系統(tǒng)的負載失衡程度。根據(jù)負載失衡程度以一定權重增大或減小ε0獲得ε1,并采用上述方法選擇服務器,判斷ε1對應的系統(tǒng)的負載失衡程度。以此類推,直至獲得εn-1對應的系統(tǒng)的負載失衡程度,其中n為預設的獲取ε的探索次數(shù)。最終,將系統(tǒng)負載失衡程度最小時對應的εi作為ε。
可選的,當系統(tǒng)冷啟動時,即在系統(tǒng)剛運行后,未保存有之前服務器的選擇情況的相關信息,可隨機選擇一服務器,在獲得一定容量的服務器的選擇情況的相關信息后再根據(jù)上述方法設置ε。
進一步可選的,在設定ε后,在裝置運行過程中,記錄系統(tǒng)的負載均衡狀態(tài),根據(jù)負載均衡狀態(tài)可以以一定權重降低ε,當系統(tǒng)的負載均衡狀態(tài)趨于穩(wěn)定時,可保持ε不變。
第二選取模塊51,適于若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),在服務器列表中隨機或順次選取一服務器。
具體地,若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),可在服務器列表中隨機選取一服務器。例如,可采用Random_rand函數(shù)隨機獲取服務器列表中一服務器編號,并選取該編號對應的服務器。若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),也可在服務器列表中順次選取一服務器。
查詢模塊52,適于查詢上一次第一隨機數(shù)落入第二數(shù)值范圍時所選取的服務器。
具體地,若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),查詢上一次第一隨機數(shù)落入第二數(shù)值范圍時所選取的服務器。例如,查詢到上一次第一隨機數(shù)落入第二數(shù)值范圍時選取了編號為“0021”的服務器。
第二選取模塊51進一步適于:在服務器列表中選取排序在上一次第一隨機數(shù)落入第一數(shù)值范圍時所選取的服務器之后的服務器。
當查詢模塊52查詢到上一次第一隨機數(shù)落入第二數(shù)值范圍時所選取的服務器后,在服務器列表中選取排序緊鄰在上一次第一隨機數(shù)落入第一數(shù)值范圍時所選取的服務器之后的服務器。例如,查詢模塊52查詢到上一次第一隨機數(shù)落入第二數(shù)值范圍時選取了編號為“0021”的服務器,則若本次第一隨機數(shù)仍落入第二數(shù)值范圍內(nèi),則選取排序緊鄰“0021”后的編號為“0022”的服務器。
計算模塊53,適于計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
其中,預設時間段包含多個子時間段,其中,預設時間段包含多個子時間段。可選的,可以將預設時間段均等為多個子時間,根據(jù)時間先后順序,各個子時間段起止時間點依次相接,例如。預設時間段為[t-10,t),其中,t為當前時間,t-10為當前時間前十分鐘,在預設時間段[t-10,t)內(nèi)包含n個子時間段,該n個子時間段根據(jù)時間先后順序,起止時間點依次相接。如,n=5,則預設時間段[t-10,t)的子時間段分別為[t-10,t-8)、[t-8,t-6)、[t-6,t-4)、[t-4,t-2)、[t-2,t)。計算模塊43可計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
計算模塊53進一步適于:根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。例如,可將各個服務器每個子時間段內(nèi)的響應時間和響應次數(shù)記錄于列表中,隨著時間的變化,記錄中的各個服務器每個子時間段內(nèi)的響應時間和響應次數(shù)也會相應地更新??筛鶕?jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
計算模塊53進一步包括:第一計算單元54、第二計算單元55。
第一計算單元54,適于根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器每個子時間段的平均響應時間。
具體地,可根據(jù)各個服務器每個子時間段內(nèi)的響應時間和響應次數(shù),計算各個服務器每個子時間段內(nèi)的平均響應時間。舉例來說,預設時間段內(nèi)包含n個子時間段,則根據(jù)response[i]/count[i]計算第i個時間段內(nèi)的平均響應時間tavg[i],其中response[i]為第i個子時間段的響應時間,count[i]為第i個子時間段的響應次數(shù)。例如,在第i個子時間段內(nèi),編號為“012”的服務器響應次數(shù)count[i]為2次,2次響應的響應時間分別為Q1、Q2,則號為“012”的服務器response[i]=Q2+Q1,在第i個子時間段內(nèi)平均響應時間tavg[i]=(Q2+Q1)/2。
第二計算單元55,適于計算各個服務器各個子時間段的平均響應時間與子時間段序號的乘積之和作為各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),其中子時間段序號根據(jù)子時間段距離當前時間由遠及近依次遞增。
具體地,計算各個服務器各個子時間段的平均響應時間與子時間段序號的乘積之和作為各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),其中,子時間段序號根據(jù)子時間段距離當前時間由遠及近依次遞增??刹捎霉?2-1),計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
可選的,也可通過其他方法計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),如公式(2-2)。
第一選取模塊43進一步適于:選取各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)最小的服務器。
根據(jù)計算模塊53中計算的各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),可獲知各個服務器當前處理任務的能力大小,服務器在最近的預設時間段內(nèi)的響應時間參數(shù)越小時,表明該服務器當前處理任務的壓力較小,則可選取各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)最小的服務器。
第一選取模塊43進一步適于:選取各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的服務器。
根據(jù)計算模塊53計算的各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),可選取各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的服務器??蛇x的,若各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的服務器的個數(shù)大于1個,則在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的多個服務器中隨機選取一個。
第一選取模塊43進一步適于:對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理,得到歸一化處理后的響應時間參數(shù)T1,T2,…,Ti,…,Tn,其中Ti為在服務器列表中排在第i位的服務器的歸一化處理后的響應時間參數(shù)。
根據(jù)計算模塊53中計算的各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理,得到歸一化處理后的響應時間參數(shù)T1,T2,…,Ti,…,Tn,其中Ti為在服務器列表中排在第i位的服務器的歸一化處理后的響應時間參數(shù)。
可選的,可利用公式(3-1)對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理。但本發(fā)明不僅限于此種歸一化處理方法,本發(fā)明對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)的歸一化處理方法不做限定。
生成模塊42還適于:根據(jù)歸一化的數(shù)值范圍,生成一第二隨機數(shù)。
在第一選取模塊43對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理后,根據(jù)歸一化的數(shù)值范圍,生成一第二隨機數(shù)。具體地,將各個服務器在最近的預設時間段內(nèi)的歸一化后的響應時間參數(shù)的最大值和最小值分別作為第二隨機數(shù)生成范圍的最大值和最小值。如,利用公式(3-1)處理后的各個服務器在最近的預設時間段內(nèi)的歸一化后的響應時間參數(shù)最大值和最小值分別為1和0,則第二隨機數(shù)生成范圍為[0,1]??赏ㄟ^隨機種子與函數(shù)結合法在[0,1]生成一第二隨機數(shù)。
第一選取模塊43進一步適于:從k=1開始,計算Sumk,直至Sumk大于或等于第二隨機數(shù)結束,選取在服務器列表中排在第k位的服務器。
具體地,從k=1開始,按照公式(3-2)計算Sumk,直至Sumk大于或等于第二隨機數(shù)結束,選取在服務器列表中排在第k位的服務器。其中,公式(3-2)中Ti為在服務器列表中排在第i位的服務器的響應時間參數(shù)。
根據(jù)本發(fā)明提供的基于中間件實現(xiàn)的后臺服務器選擇裝置,通過生成模塊在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),預設數(shù)值范圍包含第一數(shù)值范圍及第二數(shù)值范圍;若第一隨機數(shù)落入第一數(shù)值范圍內(nèi),則通過計算模塊計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),并通過第一選取模塊選取一服務器;若第一隨機數(shù)落入第二數(shù)值范圍內(nèi),則通過第二選取模塊順次或隨機選取一服務器;最終將業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。采用本方案,通過根據(jù)各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)選取服務器,可以實現(xiàn)服務器系統(tǒng)的負載均衡,提高系統(tǒng)穩(wěn)定性;又由于只有當?shù)谝浑S機數(shù)落入第一數(shù)值范圍內(nèi),才需計算各個服務器最近的預設時間段內(nèi)的響應時間,所以在一定程度上降低了系統(tǒng)的運算量及運算資源占有率,提高服務器系統(tǒng)處理任務的效率。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類系統(tǒng)所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的基于中間件實現(xiàn)的后臺服務器選擇裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本發(fā)明公開了:A1、一種基于中間件實現(xiàn)的后臺服務器選擇方法,包括:
接收客戶端發(fā)送的業(yè)務請求;
在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),所述預設數(shù)值范圍包含第一數(shù)值范圍;
若所述第一隨機數(shù)落入第一數(shù)值范圍內(nèi),根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器;
將所述業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。
A2、根據(jù)A1所述的方法,其中,所述預設數(shù)值范圍包含第二數(shù)值范圍,所述方法還包括:
若所述第一隨機數(shù)落入第二數(shù)值范圍內(nèi),在服務器列表中隨機或順次選取一服務器。
A3、根據(jù)A2所述的方法,其中,所述預設數(shù)值范圍為[0,1],所述第二數(shù)值范圍為[0,ε],所述第一數(shù)值范圍為(ε,1],其中ε為根據(jù)之前服務器的選擇情況預先設置的值。
A4、根據(jù)A2所述的方法,其中,所述在服務器列表中順次選取一服務器進一步包括:
查詢上一次第一隨機數(shù)落入第二數(shù)值范圍時所選取的服務器;
在服務器列表中選取排序緊鄰在上一次第一隨機數(shù)落入第一數(shù)值范圍時所選取的服務器之后的服務器。
A5、根據(jù)A1-A3中任一項所述的方法,其中,所述根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器進一步包括:
計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
選取所述各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)最小的服務器。
A6、根據(jù)A1-A3中任一項所述的方法,其中,所述根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器進一步包括:
計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理,得到歸一化處理后的響應時間參數(shù)T1,T2…,Ti,…,Tn,其中Ti為在服務器列表中排在第i位的服務器的歸一化處理后的響應時間參數(shù);
根據(jù)歸一化的數(shù)值范圍,生成一第二隨機數(shù);
從k=1開始,按照如下公式計算Sumk,直至Sumk大于或等于第二隨機數(shù)結束,選取在服務器列表中排在第k位的服務器;
A7、根據(jù)A1-A3中任一項所述的方法,其中,所述根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器進一步包括:
計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
選取所述各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的一服務器。
A8、根據(jù)A5-A7任一項所述的方法,其中,所述預設時間段包含多個子時間段;
所述計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進一步包括:根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
A9、根據(jù)A8所述的方法,其中,所述根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進一步包括:
根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器每個子時間段的平均響應時間;
計算各個服務器各個子時間段的平均響應時間與子時間段序號的乘積之和作為各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),其中子時間段序號根據(jù)子時間段距離當前時間由遠及近依次遞增。
本發(fā)明還公開了:B10、一種基于中間件實現(xiàn)的后臺服務器選擇裝置,其包括:
接收模塊,適于接收客戶端發(fā)送的業(yè)務請求;
生成模塊,適于在預設數(shù)值范圍內(nèi)生成一第一隨機數(shù),所述預設數(shù)值范圍包含第一數(shù)值范圍;
第一選取模塊,適于若所述第一隨機數(shù)落入第一數(shù)值范圍內(nèi),根據(jù)服務器列表中各個服務器最近的預設時間段內(nèi)的響應時間選取一服務器;
發(fā)送模塊,適于將所述業(yè)務請求轉(zhuǎn)發(fā)給所選取的服務器。
B11、根據(jù)B10所述的裝置,其中,所述預設數(shù)值范圍包含第二數(shù)值范圍,所述裝置還包括:
第二選取模塊,適于若所述第一隨機數(shù)落入第二數(shù)值范圍內(nèi),在服務器列表中隨機或順次選取一服務器。
B12、根據(jù)B11所述的裝置,其中,所述預設數(shù)值范圍為[0,1],所述第二數(shù)值范圍為[0,ε],所述第一數(shù)值范圍為(ε,1],其中ε為根據(jù)之前服務器的選擇情況預先設置的值。
B13、根據(jù)B11所述的裝置,其中,所述裝置還包括:
查詢模塊,適于查詢上一次第一隨機數(shù)落入第二數(shù)值范圍時所選取的服務器;
所述第二選取模塊進一步適于:在服務器列表中選取排序在上一次第一隨機數(shù)落入第一數(shù)值范圍時所選取的服務器之后的服務器。
B14、根據(jù)B10-B12中任一項所述的裝置,其中,所述裝置還包括:
計算模塊,適于計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
所述第一選取模塊進一步適于:選取所述各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)最小的服務器。
B15、根據(jù)權利要求B10-B12中任一項所述的裝置,其中,所述裝置還包括:
計算模塊,適于計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
所述第一選取模塊進一步適于:對各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)進行歸一化處理,得到歸一化處理后的響應時間參數(shù)T1,T2,…,Ti,…,Tn,其中Ti為在服務器列表中排在第i位的服務器的歸一化處理后的響應時間參數(shù);
所述生成模塊還適于:根據(jù)歸一化的數(shù)值范圍,生成一第二隨機數(shù);
所述第一選取模塊進一步適于:從k=1開始,按照如下公式計算Sumk,直至Sumk大于或等于第二隨機數(shù)結束,選取在服務器列表中排在第k位的服務器;
B16、根據(jù)B10-B12中任一項所述的裝置,其中,所述裝置還包括:
計算模塊,適于計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù);
所述第一選取模塊進一步適于:選取所述各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)小于預設閾值的一服務器。
B17、根據(jù)B14-B16任一項所述的裝置,其中,所述預設時間段包含多個子時間段;
所述計算模塊進一步適于:根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù)。
B18、根據(jù)B17所述的裝置,其中,所述計算模塊進一步包括:
第一計算單元。適于根據(jù)各個服務器在每個子時間段內(nèi)的響應時間和響應次數(shù)計算各個服務器每個子時間段的平均響應時間;
第二計算單元,適于計算各個服務器各個子時間段的平均響應時間與子時間段序號的乘積之和作為各個服務器在最近的預設時間段內(nèi)的響應時間參數(shù),其中子時間段序號根據(jù)子時間段距離當前時間由遠及近依次遞增。