專利名稱:一種數據查詢系統及其構建方法與相應的數據查詢方法
技術領域:
本發(fā)明涉及數據查詢領域,尤其涉及一種數據查詢系統及其構建方法與相應的 數據查詢方法。
背景技術:
在數據查詢系統構建中,尤其是在性能數據查詢系統構建中,或者網站服務 器的構建中,往往需要接收從客戶端發(fā)送來的諸多客戶端請求,其中客戶端可以是 GUKGraphical User Interface,圖形用戶界面),客戶端或者Web客戶端,這些客戶端請 求往往都會涉及到大規(guī)模的數據網絡傳遞,而且返回的數據還需要進行一些邏輯計算、 歸并以及排序之類的處理。例如,性能數據查詢系統中,采集到的性能數據經過處理后 存儲到性能報表中,數據查詢系統中往往需要通過查詢組件先從后臺數據庫中查詢出符 合條件的性能報表中的性能數據,再將這些性能數據從后臺經過網絡傳遞回來,返回的 性能數據再經過一些 邏輯計算被封裝成適合GUI顯示的數據結構;如果是分布式系統的 話,還會接收從不同的數據源來的數據,在數據查詢系統中合并,最終提供給GUI用于 顯不。目前查詢組件一般都采用直接構建的方式,并且在邏輯上具有唯一性,也就是 說一個數據查詢系統只有一個查詢組件,所有的客戶端請求(包括GUI,客戶端或Web客 戶端的客戶端請求)都在這個查詢組件中去處理,往往會出現由于請求的增多而導致服 務不能及時響應,從而降低處理效率。因此,由于查詢組件的唯一特性,也使得查詢組件不具備可擴展性,不具備可 伸縮性,也不能通過添加硬件設備來提升請求處理的效率,影響系統本身的可用性。
發(fā)明內容
本發(fā)明要解決的技術問題是提供一種數據查詢系統及其構建方法與相應的數據 查詢方法,保證了數據查詢系統的高可用性。為了解決上述問題,本發(fā)明提供了一種數據查詢系統,包括客戶端,所述數據 查詢系統還包括一個查詢組件代理以及與該查詢組件代理連接的一個或多個查詢組件; 其中,所述客戶端,用于向所述查詢組件代理發(fā)送客戶端請求;所述查詢組件代理,用于保存所述查詢組件的查詢組件號、查詢組件實例以及 查詢組件的負載情況,并根據查詢組件上報的所述查詢組件的客戶端請求負載情況進行 更新;以及接收所述客戶端請求,并根據負載均衡的原則,選擇一個查詢組件返回給所 述客戶端;所述查詢組件,用于向查詢組件代理發(fā)送查詢組件號與查詢組件實例進行注 冊,并上報所述查詢組件的客戶端請求負載情況;以及處理所述客戶端請求并將處理結 果返回給所述客戶端。
進一步地,上述數據查詢系統還具有如下特征所述客戶端請求負載情況為所述查詢組件上正在處理的客戶端請求的數量,所 述負載均衡原則為所述查詢組件上當前正在處理的客戶端請求個數最少;或者,所述客戶 端請求負載情況為所述查詢組件上的客戶端請求的處理權重, 所述負載均衡原則為所述查詢組件上當前正在處理的所述客戶端請求的處理權重最小。進一步地,上述數據查詢系統還具有如下特征所述數據查詢系統進一步包括查詢組件號分配器和負載均衡控制器;其中,所述查詢組件號分配器,用于在所述查詢組件啟動時,給所述查詢組件分配一 個唯一的未被其他查詢組件占用的查詢組件號;所述負載均衡控制器,用于在所述數據查詢系統運行過程中,根據數據查詢系 統運行指標或根據接收到的用戶的控制命令,向所述查詢組件發(fā)送啟動指令,指示所述 查詢組件啟動;其中,負載均衡控制器根據接收到的用戶的控制命令向查詢組件發(fā)送啟動指 令,或者負載均衡控制器根據所述數據查詢系統運行指標設置啟動閾值,并監(jiān)測所述數 據查詢系統的運行狀況,如果數據查詢系統運行指標達到所述啟動閾值,則向所述查詢 組件發(fā)送啟動指令。進一步地,上述數據查詢系統還具有如下特征所述數據查詢系統運行指標為數據查詢系統的使用規(guī)模,客戶端請求的響應 性,客戶端請求的數目,系統支持的客戶請求的計算量,請求在處理時CPU的耗時以及 占用資源中的一種或多種。為了解決上述問題,本發(fā)明還提供了一種上述數據查詢系統的構建方法,具體 包括如下步驟啟動一個查詢組件代理以及啟動一個或多個查詢組件,所述查詢組件啟動后向 所述查詢組件代理發(fā)送查詢組件號與查詢組件實例進行注冊,并上報所述查詢組件的客 戶端請求負載情況,所述查詢組件代理保存所述查詢組件號、查詢組件實例以及所述查 詢組件的客戶端請求負載情況的映射關系,并根據所述查詢組件上報的客戶端請求負載 情況更新保存的所述客戶端請求負載情況;所述查詢組件代理接收到客戶端請求后,按照負載均衡的原則,選擇一個查詢 組件返回給客戶端,所述查詢組件更新所述查詢組件的客戶端請求負載情況。進一步地,上述構建方法還具有如下特征所述啟動一個或多個查詢組件,在所述數據查詢系統開始運行時同時啟動所有 查詢組件?;蛘撸鰯祿樵兿到y還包括一個負載均衡控制器;所述啟動一個或多個查 詢組件,是在所述數據查詢系統運行過程中,所述負載均衡控制器根據數據查詢系統運 行指標或根據接收到的用戶的控制命令,向所述查詢組件發(fā)送啟動指令,指示所述查詢 組件啟動;其中,負載均衡控制器是根據接收到的用戶的控制命令向查詢組件發(fā)送啟動指 令,或者負載均衡控制器根據所述數據查詢系統運行指標設置啟動閾值,并監(jiān)測所述數 據查詢系統的運行狀況,如果數據查詢系統運行指標達到所述啟動閾值,則向所述查詢組件發(fā)送啟動指令;所述數據查詢系統運行指標為數據查詢系統的使用規(guī)模,客戶端請求的響應 性,客戶端請求的數目,系統支持的客戶請求的計算量,請求在處理時CPU的耗時以及 占用資源中 的一種或多種。進一步地,上述構建方法還具有如下特征所述客戶端請求負載情況為所述查詢組件上正在處理的客戶端請求的數量,所 述負載均衡原則為所述查詢組件上當前正在處理的客戶端請求個數最少;或者,所述客戶端請求負載情況為所述查詢組件上的客戶端請求的處理權重, 所述負載均衡原則為所述查詢組件上當前正在處理的所述客戶端請求的處理權重最小。進一步地,上述構建方法還具有如下特征所述查詢組件代理保存所述查詢組件號、查詢組件實例以及所述查詢組件的客 戶端請求負載情況的映射關系,并根據所述查詢組件上報的客戶端請求負載情況更新保 存的客戶端請求負載情況,具體包括如下步驟所述查詢組件代理初始化兩個哈希表,第一哈希表用來保存所述查詢組件號和 所述查詢組件實例的映射關系,第二哈希表用來保存所述查詢組件號和所述查詢組件上 客戶端請求負載情況的映射關系;所述查詢組件代理接受查詢組件的注冊后,將所述查詢組件號和查詢組件實例 的映射關系保存在所述第一哈希表中;所述查詢組件代理接受所述查詢組件的周期心跳聯系,并定期更新所述第二哈 希表中查詢組件上客戶端請求負載情況。進一步地,上述構建方法還具有如下特征所述客戶端請求負載情況為所述查詢組件上正在處理的客戶端請求的數量,所 述查詢組件更新所述客戶端請求負載情況具體為所述查詢組件在處理所述客戶端請求前,所述查詢組件正在處理的客戶端請求 數計數加一個計數單位值;所述查詢組件向客戶端返回請求結果前,所述查詢組件正在處理的客戶端請求 數減所述計數單位值。進一步地,上述構建方法還具有如下特征所述查詢組件向所述查詢組件代理發(fā)送查詢組件號與查詢組件實例進行注冊, 并上報所述查詢組件的客戶端請求負載情況,具體包括如下步驟A、所述查詢組件啟動一定時器;B、定時時間到,所述查詢組件判斷向所述查詢組件代理注冊是否成功,如果不 成功,執(zhí)行步驟C;如果成功,判斷上一次向所述查詢組件代理心跳發(fā)送所述客戶端請 求負載情況是否成功;如果成功,執(zhí)行步驟D,否則執(zhí)行步驟C;C、所述查詢組件向所述查詢組件代理注冊,返回步驟B;D、所述查詢組件向所述查詢組件代理發(fā)送所述客戶端請求負載情況,返回步驟 B。為了解決上述問題,本發(fā)明還提供了一種數據查詢方法,包括如下步驟客戶端向查詢組件代理發(fā)送客戶端請求;
所述查詢組件代理根據負載均衡的原則,選擇查詢組件,并將該查詢組件返回 給所述客戶端;所述查詢組件處理所述客戶端請求,并將處理結果返回給所述客戶端;其中,所述客戶端請求負載情況為所述查詢組件上正在處理的客戶端請求的數 量,所述負載均衡原則為所述查詢組件上當前正在處理的客戶端請求個數最少;或者,所述客戶端請求負載情況為所述查詢組件上的客戶端請求的處理權重, 所述負載均衡原則為所述查詢組件上當前正在處理的所述客戶端請求的處理權重最小。上述數據查詢系統和數據查詢方法保證了數據查詢系統的高可用性,可以克服 現有數據查詢系統中,當客戶端請求增多時,單一查詢組件不能及時響應的缺陷。
圖1是本發(fā)明實施例查詢組件代理啟動后保存并更新映射關系流程圖;圖2是本發(fā)明實施例查詢組件動態(tài)地啟動,以及注冊和上報查詢組件號與客戶 端請求負載情況的流程圖;圖3是本發(fā)明實施例查詢組件代理根據負載均衡原則獲取查詢組件的流程圖。
具體實施例方式下面結合附圖詳細說明本發(fā)明的具體實施方式
。本實施例中的數據查詢系統,包括客戶端、一個查詢組件代理以及一個或多個 與該查詢組件代理連接的查詢組件;其中,客戶端,用于向查詢組件代理發(fā)送客戶端請求;查詢組件代理,用于保存查詢組件的查詢組件號、查詢組件實例以及查詢組件 的負載情況,并根據查詢組件上報的查詢組件的客戶端請求負載情況進行更新;以及接 收客戶端請求,并根據負載均衡的原則,選擇一個查詢組件返回給客戶端;查詢組件,用于向查詢組件代理發(fā)送查詢組件號與查詢組件實例進行注冊,并 上報查詢組件的客戶端請求負載情況;以及處理客戶端請求并將處理結果返回給客戶 端。上述數據查詢系統還可以進一步包括一個查詢組件號分配器和一個負載均衡 控制器;其中,查詢組件號分配器,用于給查詢組件分配一個唯一的未被其他查詢組件占用的 查詢組件號;負載均衡控制器,用于在數據查詢系統運行過程中,根據數據查詢系統運行指 標或根據接收到的用戶的控制命令,向查詢組件發(fā)送啟動指令,指示查詢組件啟動;進一步地,負載均衡控制器可以根據接收到的用戶的控制命令向查詢組件發(fā)送 啟動指令,負載均衡控制器還可以根據不同的數據查詢系統運行指標設置啟動閾值,并 監(jiān)測數據查詢系統的運行狀況,如果數據查詢系統運行指標達到該閾值,則向查詢組件 發(fā)送啟動指令;其中,數據查詢系統運行指標可以為數據查詢系統的使用規(guī)模,客戶端請求的 響應性,客戶端請求的數目,系統支持的客戶請求的計算量,請求在處理時CPU的耗時,占用資源中的一種或多種。 基于上述數據查詢系統,本實施例給出上述數據查詢系統的構建方法;本實施例將原來的一個查詢組件擴展為一個或多個查詢組件,并創(chuàng)建一個查詢 組件代理用來管理該一個或多個查詢組件;其中每個查詢組件都可以設置為能夠處理所 有類型的客戶端請求,不限制每個查詢組件能夠處理的客戶端請求的類型;查詢組件代理還用于接收客戶端請求,并根據負載均衡的原則選擇查詢組件返 回給發(fā)送請求的客戶端;由此可見,本實施例中客戶端請求不是直接發(fā)送給查詢組件 的。本實施例的構建方法具體包括如下步驟第一步啟動查詢組件代理以及一個或多個查詢組件,查詢組件啟動后向查詢 組件代理發(fā)送查詢組件號和查詢組件實例進行注冊,并向查詢組件代理上報客戶端請求 負載情況,查詢組件代理保存查詢組件的查詢組件號、查詢組件實例以及與查詢組件的 客戶端請求負載情況的映射關系,并根據查詢組件的上報更新客戶端請求負載情況;本實施例中優(yōu)選查詢組件周期性地判斷向查詢組件代理的注冊情況,以及周期 性的上報客戶端請求負載情況,以供查詢組件代理進行更新;這樣的設計使得方案中的 各個部分之間的耦合更小,容錯性更加好。當然也可以是其他實施方式,如接收到一個 客戶端請求就進行判斷等。查詢組件周期性地判斷向查詢組件代理的注冊情況,以及周期性的上報客戶端 請求負載情況,以供查詢組件代理進行更新具體包括如下步驟注冊指當某個查詢組件啟動后,該查詢組件將其查詢組件號和查詢組件實例發(fā) 送給查詢組件代理;查詢組件代理接受查詢組件的注冊,保存該查詢組件的查詢組件號 與查詢組件實例的映射關系;查詢組件代理用來管理一個或多個查詢組件,并用于接收客戶端請求;管理包 括接受啟動的查詢組件的注冊,保存查詢組件號、查詢組件實例以及查詢組件的客戶端 請求負載情況的映射關系,以及更新客戶端請求負載情況;查詢組件上客戶端請求負載情況,可以是查詢組件上正在處理的客戶端請求的 數目,還可以是查詢組件上客戶端請求的處理權重;查詢組件代理根據客戶端請求負載情況選擇查詢組件,找到查詢組件實例 (instance),從而將該查詢組件實例表示的查詢組件返回給客戶端;圖1所示為一個查詢組件代理啟動后保存以及更新映射關系的具體實施例,本 實施例中查詢組件上客戶端請求負載情況為查詢組件上正在處理的客戶端請求數目,具 體包括如下步驟步驟101 查詢組件代理初始化兩個哈希表,一個哈希表QRYS用來保存查詢組 件號和查詢組件實例的映射關系,一個哈希表QRYN用來保存查詢組件號和查詢組件上 正在處理的客戶端請求數目的映射關系;在另一實施例中,也可以將查詢組件號、查詢組件實例以及每個查詢組件上正 在處理的請求的映射關系保存在一個表中;步驟102 查詢組件代理接受查詢組件的注冊,并將查詢組件號和查詢組件實 例的映射關系保存在哈希表QRYS中;
步驟103:查詢組件代理接受查詢組件的周期心跳聯系,查詢組件將查詢組件 號以及該查詢組件正在處理的客戶端請求個數作為參數傳遞給查詢組件代理,查詢組件 代理更新哈希表QRYN中查詢組件號和查詢組件正在處理的客戶端請求個數;此步驟中,查詢組 件代理可以是定期更新哈希表QRYN中查詢組件號和查詢組 件正在處理的客戶端請求個數;也可以是實時更新,或者查詢組件代理根據需要指示查 詢組件發(fā)送正在處理的客戶端請求個數等多種實施方式;第一步中,啟動查詢組件可以由也有多種實施方式如可以在數據查詢系統開始運行時同時啟動所有查詢組件;也可在運行過程中由負載均衡控制器根據數據查詢系統運行指標或根據接收到 的用戶的控制命令,動態(tài)地啟動查詢組件,而且每個查詢組件的啟動都是獨立的;其中 負載均衡控制器用于向查詢組件發(fā)送啟動指令,指示查詢組件啟動;進一步地,負載均衡控制器可以根據接收到的用戶的控制命令向查詢組件發(fā)送 啟動指令,負載均衡控制器還可以根據不同的數據查詢系統運行指標設置啟動閾值,并 監(jiān)測數據查詢系統的運行狀況,如果數據查詢系統運行指標達到該閾值,則向查詢組件 發(fā)送啟動指令;其中,數據查詢系統運行指標可以為數據查詢系統的使用規(guī)模,客戶端請求的 響應性,客戶端請求的數目,系統支持的客戶請求的計算量,請求在處理時CPU的耗 時,占用資源中的一種或多種。圖2所示為查詢組件動態(tài)地啟動,以及注冊和上報查詢組件號與客戶端請求負 載情況的優(yōu)選的實施例,具體包括如下步驟步驟201 查詢組件獲取一個未被其他查詢組件占用的查詢組件號;查詢組件號可以是由一個查詢組件號分配器分配給查詢組件;該查詢組件分配器,用于向查詢組件分配一個唯一的未被其他查詢組件占用的 查詢組件號;當然,查詢組件號也可以預先配置到查詢組件中,此時步驟201可以省略;步驟202 查詢組件設置一個變量用來保存目前該查詢組件的客戶端請求負載 情況,如正在處理的客戶端請求的個數;步驟203 查詢組件啟動一定時器;該定時器的定時時間可以根據實際數據查詢系統的運行進行設置,本發(fā)明對此 并不限定;此外,本步驟中還可以進一步初始化用來表示注冊是否成功的變量一和表示上 一次向查詢組件代理發(fā)送客戶端請求負載是否成功的變量二;但本發(fā)明并不限于此方法 對注冊是否成功和發(fā)送客戶端請求負載是否成功進行限定,如還可以是根據與查詢組件 代理進行交互通知查詢組件是否成功;其中變量一和變量二可以是布爾變量,用True表示成功,用False表示失敗,當 然也可以是其他變量。步驟204:定時時間到,查詢組件判斷向查詢組件代理注冊是否成功,如果不 成功,執(zhí)行步驟205;如果成功,判斷上一次向查詢組件代理心跳發(fā)送客戶端請求負載 (如客戶端請求個數)是否成功;如果成功,執(zhí)行步驟206,否則執(zhí)行步驟205;
如可以根據 變量一和變量二的值進行判斷;步驟205:向查詢組件代理注冊,返回步驟204;如果采用設置變量一的方式,此步驟進一步包括按照注冊是否成功的結果設置 變量一的值;如當注冊成功,將布爾變量表示的變量一置為Ture,否則置為False;步驟206:向查詢組件代理發(fā)送客戶端請求負載情況,如當前正在處理的客戶 端請求數目;返回步驟204;如果采用設置變量二的方式,此步驟進一步還包括按照向查詢組件代理發(fā)送客 戶端請求負載情況是否成功的結果設置變量二的值。當然,非動態(tài)啟動的注冊和上報也可以采用本實施例的實施方式。上述優(yōu)選實施例中,查詢組件通過斷點續(xù)連的方法,也就是啟動時注冊,然后 周期發(fā)送當前正在客戶端請求個數給查詢組件代理,保持查詢組件和查詢組件代理之間 的聯系。特別是在分布式系統中,不同客戶端請求往往會被分到不同的數據源或者后 臺去做,這些客戶端請求之間本身不具備關聯性,但是如果都通過一個查詢組件去做的 話,就會使得他們相互影響,本方案將盡量減小他們之間不必要的耦合。第二步查詢組件代理接收到客戶端請求后,按照負載均衡的原則,選擇一個 查詢組件返回給客戶端;其中,負載均衡原則有很多種,如可以是在每次接收到客戶端獲取查詢組件 時,都選擇一個當前正在處理的客戶端請求個數最少的查詢組件返回給客戶端;或者可 以是根據客戶端請求的處理權重,將當前處理權重最小的查詢組件返回給客戶端;權重是系統對客戶端請求的響應性;如,數據量越大,對響應性的影響越大; 因此,根據客戶端請求的處理權重選擇查詢組件時,可以是根據當前正在處理的客戶端 請求的計算量最小的查詢組件返回給客戶端,或者可以選擇當前處理客戶端請求時CPU 耗時最少的查詢組件返回給客戶端等中的一種或多種;因此,當客戶端請求負載情況為所述查詢組件上正在處理的客戶端請求的數量 時,負載均衡原則為查詢組件上當前正在處理的客戶端請求個數最少;或者,當客戶端請求負載情況為查詢組件上的客戶端請求的處理權重時,負載 均衡原則為查詢組件上當前正在處理的客戶端請求的處理權重最小。圖3所示為查詢組件代理根據負載均衡原則獲取查詢組件的實施例,包括如下 步驟步驟301 查詢組件代理從哈希表QRYN中獲取所有查詢組件正在處理的客戶 端請求的個數;步驟302 查詢組件代理獲取正在處理的客戶端請求的個數最小的查詢組件 號,若是查詢請求個數最小的不止一個,隨機抽取一個;步驟303 根據獲取的查詢組件號從哈希表QRYS中找到對應的查詢組件實例返 回給客戶端;第三步查詢組件更新查詢組件的客戶端請求負載情況;如客戶端請求負載情況為查詢組件正在處理的客戶端請求數,具體可以是查 詢組件在處理客戶端請求前,查詢組件請求計數加一個單位計數值,如1,向客戶端返回 請求結果前,查詢組件正在處理的客戶端請求數計數減一個同樣的單位計數值;
如客戶端請求負載情況為客戶端請求的處理權重,查詢組件則計算當前客戶端 請求的處理權重并更新。本發(fā)明由于能夠動態(tài)地通過添加查詢組件來滿足系統的需求,使得系統的動態(tài) 擴展性好,這個方案本身也可推而廣之應用到任何需要高可伸縮性的應用,具體可以是 管理信息系統(Management Information System,MIS),信息查詢系統,性能數據查詢系
統,尤其是網管上的性能數據查詢系統等。相應地,本實施例還給出基于上述數據查詢系統的數據查詢的方法,具體包括 如下步驟A、客戶端向查詢組件代理發(fā)送客戶端請求;B、查詢組件代理根據負載均衡的原則,選擇查詢組件,并將該查詢組件返回給 客戶端;C、查詢組件處理客戶端請求,并將處理結果返回給客戶端。 本發(fā)明的方案與傳統單一組件查詢,集中處理查詢請求的方案相比,每個查詢 組件都具有平等的處理能力,即查詢組件在邏輯上不再具有唯一性。查詢組件的選擇 交由查詢組件代理去做,使得組件具備高可伸縮性。當查詢請求較多以至于現有的查詢 組件不能有效處理時,能動態(tài)地增加查詢組件,而新增的查詢組件可以部署在別的機器 上,達到通過添加硬件設備來提升響應能力而又不影響正在處理的客戶端請求,極大地 提升可數據查詢系統的可用性。
權利要求
1.一種數據查詢系統,包括客戶端,其特征在于,所述數據查詢系統還包括一個查 詢組件代理以及與該查詢組件代理連接的一個或多個查詢組件;其中,所述客戶端,用于向所述查詢組件代理發(fā)送客戶端請求;所述查詢組件代理,用于保存所述查詢組件的查詢組件號、查詢組件實例以及查 詢組件的負載情況,并根據查詢組件上報的所述查詢組件的客戶端請求負載情況進行更 新;以及接收所述客戶端請求,并根據負載均衡的原則,選擇一個查詢組件返回給所述 客戶端;所述查詢組件,用于向查詢組件代理發(fā)送查詢組件號與查詢組件實例進行注冊,并 上報所述查詢組件的客戶端請求負載情況;以及處理所述客戶端請求并將處理結果返回 給所述客戶端。
2.如權利要求1所述的數據查詢系統,其特征在于所述客戶端請求負載情況為所述查詢組件上正在處理的客戶端請求的數量,所述負 載均衡原則為所述查詢組件上當前正在處理的客戶端請求個數最少;或者,所述客戶端請求負載情況為所述查詢組件上的客戶端請求的處理權重,所述 負載均衡原則為所述查詢組件上當前正在處理的所述客戶端請求的處理權重最小。
3.如權利要求1或2所述的數據查詢系統,其特征在于,所述數據查詢系統進一步包 括查詢組件號分配器和負載均衡控制器;其中,所述查詢組件號分配器,用于在所述查詢組件啟動時,給所述查詢組件分配一個唯 一的未被其他查詢組件占用的查詢組件號;所述負載均衡控制器,用于在所述數據查詢系統運行過程中,根據數據查詢系統運 行指標或根據接收到的用戶的控制命令,向所述查詢組件發(fā)送啟動指令,指示所述查詢 組件啟動;其中,負載均衡控制器根據接收到的用戶的控制命令向查詢組件發(fā)送啟動指令,或 者負載均衡控制器根據所述數據查詢系統運行指標設置啟動閾值,并監(jiān)測所述數據查詢 系統的運行狀況,如果數據查詢系統運行指標達到所述啟動閾值,則向所述查詢組件發(fā) 送啟動指令。
4.如權利要求3所述的數據查詢系統,其特征在于所述數據查詢系統運行指標為數據查詢系統的使用規(guī)模,客戶端請求的響應性,客 戶端請求的數目,系統支持的客戶請求的計算量,請求在處理時CPU的耗時以及占用資 源中的一種或多種。
5.—種如權利要求1所述的數據查詢系統的構建方法,其特征在于,所述構建方法具 體包括如下步驟啟動一個查詢組件代理以及啟動一個或多個查詢組件,所述查詢組件啟動后向所述 查詢組件代理發(fā)送查詢組件號與查詢組件實例進行注冊,并上報所述查詢組件的客戶端 請求負載情況,所述查詢組件代理保存所述查詢組件號、查詢組件實例以及所述查詢組 件的客戶端請求負載情況的映射關系,并根據所述查詢組件上報的客戶端請求負載情況 更新保存的所述客戶端請求負載情況;所述查詢組件代理接收到客戶端請求后,按照負載均衡的原則,選擇一個查詢組件 返回給客戶端,所述查詢組件更新所述查詢組件的客戶端請求負載情況。
6.如權利要求5所述的構建方法,其特征在于所述啟動一個或多個查詢組件,在所述數據查詢系統開始運行時同時啟動所有查詢 組件?;蛘?,所述數據查詢系統還包括一個負載均衡控制器;所述啟動一個或多個查詢組 件,是在所述數據查詢系統運行過程中,所述負載均衡控制器根據數據查詢系統運行指 標或根據接收到的用戶的控制命令,向所述查詢組件發(fā)送啟動指令,指示所述查詢組件 啟動;其中,負載均衡控制器是根據接收到的用戶的控制命令向查詢組件發(fā)送啟動指令, 或者負載均衡控制器根據所述數據查詢系統運行指標設置啟動閾值,并監(jiān)測所述數據查 詢系統的運行狀況,如果數據查詢系統運行指標達到所述啟動閾值,則向所述查詢組件 發(fā)送啟動指令;所述數據查詢系統運行指標為數據查詢系統的使用規(guī)模,客戶端請求的響應性,客 戶端請求的數目,系統支持的客戶請求的計算量,請求在處理時CPU的耗時以及占用資 源中的一種或多種。
7.如權利要求5或6所述的構建方法,其特征在于,所述客戶端請求負載情況為所述查詢組件上正在處理的客戶端請求的數量,所述負 載均衡原則為所述查詢組件上當前正在處理的客戶端請求個數最少;或者,所述客戶端請求負載情況為所述查詢組件上的客戶端請求的處理權重,所述 負載均衡原則為所述查詢組件上當前正在處理的所述客戶端請求的處理權重最小。
8.如權利要求5或6所述的構建方法,其特征在于,所述查詢組件代理保存所述查詢組件號、查詢組件實例以及所述查詢組件的客戶端 請求負載情況的映射關系,并根據所述查詢組件上報的客戶端請求負載情況更新保存的 客戶端請求負載情況,具體包括如下步驟所述查詢組件代理初始化兩個哈希表,第一哈希表用來保存所述查詢組件號和所述 查詢組件實例的映射關系,第二哈希表用來保存所述查詢組件號和所述查詢組件上客戶 端請求負載情況的映射關系;所述查詢組件代理接受查詢組件的注冊后,將所述查詢組件號和查詢組件實例的映 射關系保存在所述第一哈希表中;所述查詢組件代理接受所述查詢組件的周期心跳聯系,并定期更新所述第二哈希表 中查詢組件上客戶端請求負載情況。
9.如權利要求7所述的構建方法,其特征在于所述客戶端請求負載情況為所述查詢組件上正在處理的客戶端請求的數量,所述查 詢組件更新所述客戶端請求負載情況具體為所述查詢組件在處理所述客戶端請求前,所述查詢組件正在處理的客戶端請求數計 數加一個計數單位值;所述查詢組件向客戶端返回請求結果前,所述查詢組件正在處理的客戶端請求數減 所述計數單位值。
10.如權利要求5或6所述的構建方法,其特征在于,所述查詢組件向所述查詢組件 代理發(fā)送查詢組件號與查詢組件實例進行注冊,并上報所述查詢組件的客戶端請求負載情況,具體包括如下步驟A、所述查詢組件啟動一定時器;B、定時時間到,所述查詢組件判斷向所述查詢組件代理注冊是否成功,如果不成 功,執(zhí)行步驟C;如果成功,判斷上一次向所述查詢組件代理心跳發(fā)送所述客戶端請求 負載情況是否成功;如果成功,執(zhí)行步驟D,否則執(zhí)行步驟C;C、所述查詢組件向所述查詢組件代理注冊,返回步驟B;D、所述查詢組件向所述查詢組件代理發(fā)送所述客戶端請求負載情況,返回步驟B。
11. 一種數據查詢方法,包括如下步驟客戶端向查詢組件代理發(fā)送客戶端請求;所述查詢組件代理根據負載均衡的原則,選擇查詢組件,并將該查詢組件返回給所 述客戶端;所述查詢組件處理所述客戶端請求,并將處理結果返回給所述客戶端; 其中,所述客戶端請求負載情況為所述查詢組件上正在處理的客戶端請求的數量, 所述負載均衡原則為所述查詢組件上當前正在處理的客戶端請求個數最少;或者,所述客戶端請求負載情況為所述查詢組件上的客戶端請求的處理權重,所述 負載均衡原則為所述查詢組件上當前正在處理的所述客戶端請求的處理權重最小。
全文摘要
一種數據查詢系統,包括客戶端,查詢組件代理以及與該查詢組件代理連接的一個或多個查詢組件;客戶端用于向查詢組件代理發(fā)送客戶端請求;查詢組件代理用于保存查詢組件的查詢組件號、查詢組件實例以及查詢組件的負載情況,并根據查詢組件上報的所述查詢組件的客戶端請求負載情況進行更新;以及接收客戶端請求,并根據負載均衡的原則,選擇一個查詢組件返回給所述客戶端;查詢組件用于向查詢組件代理發(fā)送查詢組件號與查詢組件實例進行注冊,并上報所述查詢組件的客戶端請求負載情況;以及處理所述客戶端請求并將處理結果返回給所述客戶端。相應地,還提供該數據查詢系統的構建方法以及數據查詢方法。本發(fā)明保證了數據查詢系統的高可用性。
文檔編號G06F17/30GK102023997SQ20091017810
公開日2011年4月20日 申請日期2009年9月23日 優(yōu)先權日2009年9月23日
發(fā)明者孫鳴 申請人:中興通訊股份有限公司