一種路由方法、負載均衡的裝置及數據通信系統的制作方法
【技術領域】
[0001] 本發明涉及通信技術領域,尤其涉及一種路由方法、負載均衡的裝置及數據通信 系統。
【背景技術】
[0002] 應用基礎架構(Application Infrastructure)是一種包括客戶端、服務器以及中 間件的網絡公共服務平臺,能夠有效交付具有強大的事務整合性、事務高安全性以及控制 執行性的應用和服務。廣泛應用于IT(Information Technology,信息技術)、證券、金融、銀 行、電信、政府以及企業等核心業務。例如在金融行業的應用基礎構架中,客戶端與服務器 之間可通過網絡對金融數據業務進行交互,中間件可對客戶端與服務器上的應用資源以及 客戶端與服務器間的網絡資源進行管理,最終實現在不同的0S(0perati 〇n System,操作系 統)環境或具有不同通信接口的設備間進行金融數據業務交換的功能,具有計算量龐大、 可靠性高以及運算速度高的特點。
[0003] 其中,在客戶端與服務器間數據通信出現高負載的情況下,將會面臨負載不均衡 的問題,負載不均衡即網絡資源并未被最大化利用,導致數據交互性能下降。為了解決這個 問題,IBM提供了 WLM(Workload Manager,負載管理器)技術,但該技術只支持AIX、Solaris 以及ζ/OS平臺下的應用基礎架構,并不支持X86平臺下的應用基礎架構,而眾所周知地, X86平臺具有成本低、開放程度高以及用戶熟悉度高的優點,因此WLM技術具有一定局限 性。而基于X86平臺的供應商提供了一種硬件負載均衡方法,即客戶端和服務器間的數據 交互通過LB (Load Balance,負載均衡)設備來處理請求轉發,由LB設備來維持兩端的TCP 連接,該技術為了降低TCP短連接帶來的數據傳輸延遲和反復重新連接的消耗,采用了 TCP 長連接方式,但是在TCP長連接過程中,由于LB設備要維持中轉狀態,客戶端的新請求無法 通過LB設備發送到其它的服務器,造成了請求不靈活,影響數據交互的性能。
【發明內容】
[0004] 本發明實施例提供了一種路由方法、負載均衡的裝置及數據通信系統,可以均衡 客戶端與多個服務器間數據通信的負載,具有請求靈活的特點。
[0005] 本發明實施例第一方面提供了一種路由方法,所述路由方法應用于負載均衡的裝 置,所述負載均衡的裝置分別與客戶端和多個服務器相連,所述客戶端通過中間件與所述 多個服務器相連,所述路由方法包括:在接收到所述客戶端發出的數據通信請求后,獲取所 述多個服務器的工作狀態信息,所述工作狀態信息包括負載信息;通過比較所述多個服務 器的所述負載信息,選取負載滿足條件的服務器作為目標服務器;生成從所述客戶端通過 所述中間件到所述目標服務器的路由信息;將所述路由信息發送給所述客戶端,所述路由 信息用于建立所述客戶端通過所述中間件到所述目標服務器的數據通信。
[0006] 在第一方面的第一種可能實現方式中,所述服務器的工作狀態信息還包括端口進 程信息;所述生成從所述客戶端通過所述中間件到所述目標服務器的路由信息,包括:通 過查詢所述目標服務器的端口進程信息,選取所述目標服務器的空閑的目標端口進程;生 成從所述客戶端通過所述中間件到所述目標服務器的所述目標端口進程的路由信息。
[0007] 結合第一方面的第一種可能實現方式,在第二種可能實現方式中,所述服務器的 工作狀態信息還包括TCP連接信息;所述通過查詢所述目標服務器的端口進程信息,選取 所述目標服務器的空閑的目標端口進程之前,還包括:通過查詢所述目標服務器的TCP連 接信息,選取所述客戶端與所述目標服務器間的空閑的目標TCP連接。
[0008] 所述生成從所述客戶端通過所述中間件到所述目標服務器的所述目標端口進程 的路由信息,包括:生成從所述客戶端通過所述中間件經所述目標TCP連接到所述目標服 務器的所述目標端口進程的路由信息。
[0009] 結合第一方面的可能實現方式,在第三種可能實現方式中,所述通過比較所述多 個服務器的所述負載信息,選取負載滿足條件的服務器作為目標服務器,包括:根據預設的 算法計算出各個所述服務器的所述負載信息的參考值,所述負載信息包括CPU負載值、響 應時間和已建立的TCP連接數;獲取在所述多個服務器中所述負載信息的參考值最小的服 務器作為所述目標服務器。
[0010] 結合第一方面以及第一方面的第三種可能實現方式,在第四種可能實現方式中, 所述根據預設的算法計算出各個所述服務器的負載信息的參考值,包括:
[0011] 根據公式Wt = SX Q^ciadX ji+kkX j2+kTepX j3)計算出各個所述服務器的負載信息 的參考值,其中,所述Wt表示所述負載信息的參考值,所述S表示服務器的在線狀態,所述 S = 1表示服務器在線,所述S = + C?表示服務器離線,所述Icuiad表示服務器的所述CPU負 載值,所述J1表示預設的所述CPU負載值對應的權重值,表示服務器的所述響應時間,所 述j 2表示預設的所述響應時間對應的權重值,所述kTCP表示服務器的所述已建立的TCP連 接數,所述j 3表示預設的所述已建立的TCP連接數對應的權重值。
[0012] 結合第一方面以及第一方面的第二種可能實現方式,在第五種可能實現方式中, 所述通過查詢所述目標服務器的TCP連接信息,選取客戶端與所述目標服務器間的空閑的 目標TCP連接,包括:通過查詢所述目標服務器的TCP連接信息,判斷所述客戶端與所述目 標服務器間是否存在至少一個空閑的TCP連接;若存在至少一個空閑的TCP連接,則獲取任 意一個所述空閑的TCP連接作為所述目標TCP連接;若不存在空閑的TCP連接,則新建一個 TCP連接作為所述目標TCP連接。
[0013] 結合第一方面以及第一方面的第二至第五種可能實現方式,在第六種可能實現方 式中,所述TCP連接是TCP長連接。
[0014] 本發明實施例第二方面提供了一種計算機存儲介質,所述計算機存儲介質存儲有 程序,該程序執行時包括第一方面提供的一種路由方法的部分或全部步驟。
[0015] 本發明實施例第三方面提供了一種負載均衡的裝置,所述裝置分別與客戶端和多 個服務器相連,所述客戶端通過中間件與所述多個服務器相連,所述裝置包括:狀態信息獲 取模塊,用于在接收到所述客戶端發出的數據通信請求后,獲取所述多個服務器的工作狀 態信息,所述工作狀態信息包括負載信息;服務器選取模塊,用于通過比較所述多個服務器 的所述負載信息,選取負載滿足條件的服務器作為目標服務器;路由信息生成模塊,用于生 成從所述客戶端通過所述中間件到所述目標服務器的路由信息;路由信息發送模塊,用于 將所述路由信息發送給所述客戶端,所述路由信息用于建立所述客戶端通過所述中間件到 所述目標服務器的數據通信。
[0016] 在第三方面的第一種可能實現方式中,所述服務器的工作狀態信息還包括端口進 程信息。
[0017] 所述路由信息生成模塊,包括:端口進程選取單元,用于通過查詢所述目標服務器 的端口進程信息,選取所述目標服務器的空閑的目標端口進程;路由信息生成單元,用于生 成從所述客戶端通過所述中間件到所述目標服務器的所述目標端口進程的路由信息。
[0018] 結合第三方面的第一種可能實現方式,在第二種可能實現方式中,所述服務器的 工作狀態信息還包括TCP連接信息。
[0019] 所述路由信息生成模塊,還包括:TCP連接選取單元,用于通過查詢所述目標服務 器的TCP連接信息,選取所述客戶端與所述目標服務器間的空閑的目標TCP連接;所述路由 信息生成單元,具體用于生成從所述客戶端通過所述中間件經所述目標TCP連接到所述目 標服務器的所述目標端口進程的路由信息。
[0020] 結合第三方面的可能實現方式,在第三種可能實現方式中,所述服務器選取模塊 包括:參考值計算單元,用于根據預設的算法計算出各個所述服務器的所述負載信息的參 考值,所述負載信息包括CPU負載值、響應時間和已建立的TCP連接數;服務器選取單元,用 于獲取在所述多個服務器中所述負載信息的參考值最小的服務器作為所述目標服務器。 [0021 ] 結合第三方面以及第三方面的第三種可能實現方式,在第四種可能實現方式中, 所述參考值計算單元,具體用于根據公式Wt = SX Q^ciadX ji+l^X j2+kTepX j3)計算出各個 所述服務器的負載信息的參考值,其中,所述Wt表示所述負載信息的參考值,所述S表示服 務器的在線狀態,所述S = 1表示服務器在線,所述S = + C?表示服務器離線,所述Icuiad表 示服務器的所述CPU負載值,所述J1表示預設的所述CPU負載值對應的權重值,表示服 務器的所述響應時間,所述j 2表示預設的所述響應時間對應的權重值,所述kTeP表示服務器 的所述已建立的TCP連接數,所述j 3表示預設的所述已建立的TCP連接數對應的權重值。
[0022] 結合第三方面以及第三方面的第二種可能實現方式,在第五種可能實現方式中, 所述TCP連接選取單元包括:空閑連接判斷子單元,用于通過查詢所述目標服務器的TCP連 接信息,判斷所述客戶端與所述目標服務器間是否存在至少一個空閑的TCP連接;
[0023] TCP連接獲取子單元,用于若存在至少一個空閑的TCP連接,則獲取任意一個所述 空閑的TCP連接作為所述目標TCP連接;若不存在空閑的TCP連接,則新建一個TCP連接作 為所述目標TCP連接。
[0024] 結合第三方面以及第三方面的第二至第五種可能實現方式,在第六種可能實現方 式中,所述TCP連接是TCP長連接。
[0025] 本發明實施例第四方面提供了一種負載均衡的裝置,包括:處理器、通信接口和存 儲器,其中,存儲器中存儲一組程序,且處理器用于調用存儲器中存儲的程序,用于執行以 下操作:在接收到所述客戶端發出的數據通信請求后,獲取所述多個服務器的工作狀態信 息,所述工作狀態信息包括負載信息;通過比較所述多個服務器的所述負載信息,選取負載 滿足條件的服務器作為目標服務器;生成從所述客戶端通過所述中間件到所述目標服務器 的路由信息;將所述路由信息發送給所述客戶端,所述路由信息用于建立所述客戶端通過 所述中間件到所述目標服務器的數據通信。
[0026] 本發明實施例第五方面提供了一種數據通信系統的裝置,所述數據通信系統包括 客戶端、多個服務器以及第三方面提供的所述的負載均衡的裝置,所述負載均衡的裝置分 別與所述客戶端和所述多個服務器相連,所述客戶端通過中間件與所述多個服務器相連, 其中:所述客戶端在需要與所述服務器建立數據通信時,向所述負載均衡的裝置發出數據 通信請求;所述負載均衡的裝置在接收到客戶端發出的數據通信請求后,向所述多個服務 器索要各個服務器的工作狀態信息;所述多個服務器向所述負載均衡的裝置上傳所述工作 狀態信息,所述工作狀態信息包括負載信息;所述負載均衡的裝置獲取所述多個服務器上 傳的工作狀態信息;通過比較所述多個服務器的所述負載信息,選取負載滿足條件的服務 器作為目標服務器;生成從所述客戶端通過所述中間件到所述目標服務器的路由信息;將 所述路由信息發送給所述客戶端;所述客戶端根據所述路由信息建立通過所述中間件到所 述目標服務器的數據通信。
[0027] 由上可見,本發明實施例中的負載均衡的裝置在接收到客戶端發出的數據通信請 求后,獲取多個服務器的包括