一種消息隊列控制方法,及伺服器的製作方法
2023-08-04 17:25:11 1
專利名稱:一種消息隊列控制方法,及伺服器的製作方法
技術領域:
本發明涉及通信技術領域,特別涉及一種消息隊列控制方法,及伺服器。
背景技術:
在現今網絡時代,遠程控制與生活息息相關,人們可以通過網絡遠程控制各種設備。這種遠程控制系統一般稱為雲臺控制系統。這種遠程控制系統通常包含至少一個客戶端與至少一個伺服器以及若干受控設備。結構可以如圖I所示,圖I所示的有3個客戶端(客戶端I 客戶端3)、1個伺服器以及3個受控設備(受控設備I 受控設備3)。需要說明的是,客戶端、伺服器以及受控設備個數組合可能有很多,圖I所示不應理解為對本發明實施例的限定。
在現有雲臺控制系統中,在多個客戶端需要同時對同一受控設備發起控制時,每個客戶端的發起的控制消息傳輸到伺服器後,伺服器將控制消息加入消息隊列,然後伺服器從消息隊列中按序取出消息隊列中的控制消息發送給受控設備,受控設備執行該控制消息對應的指令。發明人在實現本發明實施例的過程中發現由於在當前的網絡條件下,會遇到多個客戶端同時對某受控設備發起控制或某個客戶端在較短時間內對某一受控設備發起較多控制的情況,導致伺服器中的消息隊列中積累的控制消息隊列過長,進而導致伺服器處理控制消息處理效率低的問題。
發明內容
本發明實施例提供了一種消息隊列控制方法,及伺服器,用於減少消息隊列長度,提升伺服器處理控制消息的處理效率。一種消息隊列控制方法,包括接收控制消息,並將所述控制消息添加到消息隊列;確定是否滿足預定的隊列優化條件,確定所述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息;若滿足預定的隊列優化條件,則對確定可合併的控制消息進行合併得到合併後的控制消息,並將所述消息隊列中可合併的控制消息替換為合併後的控制消息。一種伺服器,包括消息接收單元,用於接收控制消息;消息存儲單元,用於將所述控制消息添加到消息隊列;條件確定單元,用於確定是否滿足預定的隊列優化條件;合併確定單元,用於確定所述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息;隊列控制單元,用於若滿足預定的隊列優化條件,則對確定可合併的控制消息進行合併得到合併後的控制消息,並將所述消息隊列中可合併的控制消息替換為合併後的控制消息。從以上技術方案可以看出,本發明實施例具有以下優點可以將控制消息隊列中的控制消息進行精簡,以減少消息隊列的長度,因而能夠提升伺服器處理控制消息的處理效率。
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域的普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖I為現有技術雲臺系統結構示意圖;圖2為本發明實施例方法流程示意圖;圖3為本發明實施例另一方法流程示意圖;圖4為本發明實施例另一方法流程示意圖;圖5為本發明實施例伺服器結構圖;圖6為本發明實施例另一伺服器結構圖。
具體實施例方式為了使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明作進一步地詳細描述,顯然,所描述的實施例僅僅是本發明一部份實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它實施例,都屬於本發明保護的範圍。本發明實施例提供了一種消息隊列控制方法,如圖2所示,包括201 :接收控制消息,並將上述控制消息添加到消息隊列;202:確定是否滿足預定的隊列優化條件,確定上述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息;上述202中預定的隊列優化條件可以有很多,該條件是用於控制優化方法啟動的條件,這個條件可以依據具體的環境進行設定,設定的方式很多,以下是一個舉例上述確定是否滿足預定的隊列優化條件包括確定伺服器的狀態是否處於忙狀態,若是,則確定滿足預定的隊列優化條件。需要說明的是,上述舉例不應理解為對本發明實施例的唯一限定。上述可合併的控制消息可能有很多情況導致控制消息可以合併,以下給出了兩種具體的舉例上述確定上述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息包括確定上述消息隊列中設定範圍內的控制消息之間是否屬於逆操作,若屬於逆操作,則確定屬於可合併的控制消息;或者,上述確定上述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息包括確定上述消息隊列中設定範圍內的控制消息中至少兩個控制消息是否具有等效控制消息,若存在則確定屬於可合併的控制性消息。需要說明的是,以上兩個舉例並不是可合併的控制消息的全部可能,申請文件無法對此進行窮舉,因此以上舉例不應理解為對本發明實施例的唯一限定。上述設定範圍是用於對確定消息隊列優化的範圍,這個範圍可以是全部的消息隊、列也可以是其中的一部分,以下給出了兩種確定消息隊列優化的範圍的舉例上述設定範圍內的控制消息包括上述消息隊列中設定的到達時間段內的控制消息;或者,上述消息隊列中以設定起始位置的設定條數的控制消息。需要說明的是,確定消息隊列優化的範圍的方式還可以有很多,本發明實施例對此不予限定。進一步地,上述方法還包括確定控制消息的到達頻率是否高於預定值,若否,則確定使用的設定範圍內的控制消息為上述消息隊列中設定的到達時間段內的控制消息,若是,則確定使用的設定範圍內的控制消息為上述消息隊列中以設定起始位置的設定條數的控制消息。本實施例給出了優選確定消息隊列優化的範圍的實現舉例,需要說明的是啟用其他方式來確定優化範圍並不影響本發明實施例的實現。203 :若滿足預定的隊列優化條件,則對確定可合併的控制消息進行合併得到合併後的控制消息,並將上述消息隊列中可合併的控制消息替換為合併後的控制消息。
基於以上關於導致控制消息可以合併的舉例,本發明實施例還對應地給出了處理方案如下上述對確定可合併的控制消息進行合併得到合併後的控制消息,並將上述消息隊列中可合併的控制消息替換為合併後的控制消息包括刪除互為逆操作的控制消息;或者,上述對確定可合併的控制消息進行合併得到合併後的控制消息,並將上述消息隊列中可合併的控制消息替換為合併後的控制消息包括刪除具有等效控制消息的上述至少兩個控制消息,並將上述等效控制消息添加到上述消息隊列。採用以上方案,可以將控制消息隊列中的控制消息進行精簡,以減少消息隊列的長度,因而能夠提升伺服器處理控制消息的處理效率。為了更形象的說明本發明實施例的效果,給出如下舉例在雲臺控制系統,用戶有時需要取消之前的操作,並不希望操作執行,為了取消一個並不想要的操作,伺服器需要處理兩次操作需取消的操作和取消操作(互為逆操作)。另舉例如用戶通過客戶端發送了多個控制消息,即使這些控制消息可以被一條控制消息所等效執行,按照目前的技術需要一條一條的執行。以上兩種情況在採用本發明實施例方案時,控制消息都會被縮短,具體地前一種直接刪掉了,後一種則多條控制消息被合併成了一條控制消息。因此採用本發明實施例可以減少消息隊列的長度,並能夠提升伺服器處理控制消息的處理效率。本發明實施例的思路可以概括為對消息隊列中可以被合併的控制消息進行合併,以減少消息隊列中的控制消息的長度。更具體一點可以是在伺服器處於忙碌狀態時,將新到來的控制消息首先存入緩存,在緩存中對消息隊列中未處理的控制消息進行優化精簡,減少消息隊列中的控制消息的數目。後續步驟則按照既定流程執行伺服器的應用程式每次從緩存的消息隊列中取出一條位於消息隊列列首的控制消息進行處理。由於本發明實施例對消息隊列進行了精簡,可以減少伺服器的處理量,以滿足及時處理消息的需求,提高控制消息的處理效率。以下對本發明實施例的實現進行舉例說明若定義雲臺的受控設備和客戶端由雲臺控制協議支持的操作(在消息隊列中體現為控制消息的指令)集合為E(如在雲臺攝像頭控制中,支持的操作有向左、向右、向上、向下、打開光圈等操作)。則可以稱E為受控設備自有操作。E中的自有操作可能有不同的表現形式,如客戶端與伺服器採用的是形式A,而伺服器與受控設備採用的是形式B。(A是客戶端與伺服器通訊協議支持的操作,B是伺服器與受控設備進行通訊協議支持的操作)然而僅僅使用該操作集合,會有如下缺點。假設伺服器忙碌時,用戶對攝像頭執行了向左移動一個單位的操作,而稍後用戶馬上想取消該操作(對攝像頭髮起一個向右移動一個單位的操作)。由於伺服器處於忙碌狀態,上述兩條消息均位於伺服器中待處理消息隊列中。則等待一定時間後,伺服器會與受控設備進行通訊執行上述兩條命令。然而實際上上述兩條操作並沒有具體改變攝像頭的狀態,因此相當於無效操作,但攝像頭卻實際執行了兩次操作。這兩個操作相互之間互為逆操作。針對上述缺點,本發明實施例可以首先定義可優化的情況如下可以定義一種特殊的操作集合F。F中的每條消息與E中的消息一一對應,且F中每條消息均可取消E中的對應一條消息。而F中的消息只在客戶端和伺服器進行使用。因此F中的操作不會增加伺服器與受控設備之間的數據流量。本發明實施例則可以僅涉及伺服器與客戶端之間的操作集合G,該操作集合為E 和F的併集。首先可以定義可合併的操作,可合併的操作包括可逆操作和可結合操作。逆操作若操作集合中G中有操作01和操作02。若執行01,02後受控設備的狀態與執行01和02操作之前受控設備的狀態未發生變化。則稱這兩個操作互為逆操作;具體到控制消息則表現為兩個控制消息互為逆操作。可結合操作若操作集合中的操作01、02、03. . . On。若一次執行這η個操作後受控設備的狀態相當於執行了單個操作O之後的狀態相等。則認為這η個操作01、02、03. . . On個操作為可結合操作。而操作O為這η個可結合操作的等價操作也即為等效操作;具體到控制消息則為等效控制消息。針對上述缺點,本發明實施例還需要確定消息隊列中控制消息的優化範圍的規則如下此規則的主要出發點當一些控制消息迅速頻繁地到達,可以認為用戶並不關心中間某條控制消息的具體執行結果,僅關心一系列消息被執行的最終結果。因此規則可以有如下兩種形式I、消息隊列中設定的到達時間段內的控制消息。例如設定一個閾值時間Τ,若消息隊列中第一個控制消息到達的時間為Tl,則將第一個控制消息到到達時間小於Τ+Τ1的所有控制消息作為子隊列,這個子隊列中的控制消息即為可以進行精簡的範圍。2、消息隊列中以設定起始位置的設定條數的控制消息。例如設定一個閾值Q,將第一個控制消息到第Q個控制消息作為子隊列,這個子隊列中的控制消息即為可以進行精簡的範圍。基於以上的設定,本發明實施例給出了消息隊列優化精簡的方式如圖3所示。301 :取出消息隊列中以列首為列首的最長可優化的消息子隊列Q。取控制消息的方案可以參考前述確定消息隊列中控制消息的優化範圍的規則。302 :對Q進行優化精簡。精簡的方式是遍歷Q,確定Q中可結合操作集合,用可結合操作集合的等價操作替換上述可結合操作集合。遍歷Q,確定互為可逆操作的控制消息,將Q中的互為可逆操作的控制消息刪除。本實施例中,伺服器維護兩個消息隊列一個消息隊列用於緩存消息隊列以便進行消息隊列的優化精簡操作。在此稱緩存消息隊列。緩存消息隊列中控制消息的添加、刪除、替換、更新、排序等操作可以自行定義。一般可以採用數組形式,因此緩存消息隊列的操作對應於數組的操作。如添加操作相當於在數組中添加一條控制消息。另一個消息隊列用於伺服器與受控設備之間存放等待處理的消息隊列。在此稱應用程式消息隊列。程序消息隊列支持從消息隊列取出列首和將一條控制消息加入到消息隊列的隊尾。程序消息隊列可以使用視窗(windows)系統函數進行操作。如取消息(GetMessage)函數可以從消息隊列中取出一條控制消息並從消息隊列中刪除這條控制消息。信息發布(PostMessage)函數可以將一條控制消息加入到程序消息隊列的末尾。在消息隊列精簡完畢以後,控制消息的執行方式則可以按照既定流程執行月艮務器從消息隊列中取出一條控制消息,然後針對該控制消息採用相應的雲臺控制協議與受控受控設備進行通訊並完成該控制消息對應的操作。本發明實施例並改變控制消息的執行流程,具有較好的兼容性。以下舉例為幾個本發明實施例的應用實例,如圖4所示步驟SlOl :伺服器接收到客戶端的控制消息,也可以稱為操作請求信息,進入步 驟 S102。步驟S102 :伺服器判斷自身是否處於空閒狀態,如果是,則直接將控制消息加入到應用程式消息隊列,進入S106,如果否,進入S103 ;步驟S103 :將控制消息添加到緩存消息隊列,進入S104 ;步驟S104 :對緩存消息隊列調用消息優化模塊進行優化精簡,得到更新後的消息緩存隊列,具體優化請參閱前述實施例,進入步驟S105 ;步驟S105 :從緩存消息隊列中取出一條控制消息添加到應用程式消息隊列隊尾,進入S106。步驟S106 :伺服器從應用程式消息隊列取出位於列首的控制消息,進入S107。步驟S107 :伺服器與受控設備採用雲臺控制協議進行通訊兵執行該控制消息。本發明實施例還給出了在雲臺攝像頭控制系統中的應用舉例可逆操作的例子云臺控制中某個操作E,其存在逆操作UE。即執行E後再執行UE操作,對系統未造成任何影響。比如向上移動一個單位和向下移動一個單位,這兩個操作互為逆操作。可結合操作某種操作El,與其可結合的操作為E2,E3,E4. . . En。即El到En操作以任何排列順序執行。對最終結果沒有影響,均相當於執行了操作E。比如向上移動I格和向右移動I格。這兩個操作的結合均相當於沿右上方向移動對角線長度。比如向上移動一個單位和向上移動一個單位,其最終操作相當於向上移動2個單位。整個系統假設有兩個客戶端需要向伺服器s發起控制受控設備D的請求,分別記為第一客戶端A、第二客戶端B。某個時刻,伺服器處於忙碌狀態,伺服器中消息隊列中積累了有E1,E2,E3,E4,E5.五條控制消息。若A發送的EO E4幾乎同時到達,此處對時間的限制,主要是為了確認用戶只關心最終多條命令執行的最終結果,而不關心每條命令執行的具體結果。則按照本發明實施例提供的方案,處理順序如下首先處理E0,同時確認El與E4為逆操作;E2和E3可結合。則在執行完EO後,直接從消息隊列中刪除El和E4並返回這兩命令被正確執行的消息。然後執行E2和E3的結合操作E,E為向左上移動一對角線長度。需要執行兩條控制消息。若B發送的EO先到達,El E3隨後幾乎同時到達,E4最後到達。則採用本發明實施例的執行順序為E0,而後執行El,而後執行E (E2,E3組合的等價命令)。最後執行E4。需要執行四條控制消息。若不採取任何優化則執行順序為E0,El, E2,E3,E4。需要執行五條控制消息。因此採用本發明實施例方案可以減少控制消息的執行,提升伺服器處理控制消息的處理效率。本發明實施例還提供了一種伺服器,如圖5所示,包括消息接收單元501,用於接收控制消息; 消息存儲單元502,用於將上述控制消息添加到消息隊列;條件確定單元503,用於確定是否滿足預定的隊列優化條件;合併確定單元504,用於確定上述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息;隊列控制單元505,用於若滿足預定的隊列優化條件,則對確定可合併的控制消息進行合併得到合併後的控制消息,並將上述消息隊列中可合併的控制消息替換為合併後的控制消息。採用以上方案,可以將控制消息隊列中的控制消息進行精簡,以減少消息隊列的長度,因而能夠提升伺服器處理控制消息的處理效率。可選地,預定的隊列優化條件可以有很多,該條件是用於控制優化方法啟動的條件,這個條件可以依據具體的環境進行設定,設定的方式很多,以下是一個舉例上述條件確定單元503,具體用於確定伺服器的狀態是否處於忙狀態,若是,則確定滿足預定的隊列優化條件。可選地,上述可合併的控制消息可能有很多情況導致控制消息可以合併,以下給出了兩種具體的舉例合併確定單元504,具體用於確定上述消息隊列中設定範圍內的控制消息之間是否屬於逆操作,若屬於逆操作,則確定屬於可合併的控制消息;或者,具體用於確定上述消息隊列中設定範圍內的控制消息中至少兩個控制消息是否具有等效控制消息,若存在則確定屬於可合併的控制性消息;上述隊列控制單元505,具體用於若滿足預定的隊列優化條件,則除互為逆操作的控制消息;或者,刪除具有等效控制消息的上述至少兩個控制消息,並將上述等效控制消息添加到上述消息隊列。可選地,上述設定範圍是用於對確定消息隊列優化的範圍,這個範圍可以是全部的消息隊列也可以是其中的一部分,以下給出了兩種確定消息隊列優化的範圍的舉例上述合併確定單元504使用的設定範圍內的控制消息包括上述消息隊列中設定的到達時間段內的控制消息;或者,上述消息隊列中以設定起始位置的設定條數的控制消息。進一步地,如圖6所示,上述伺服器還包括選擇單元601,用於確定控制消息的到達頻率是否高於預定值,若否,則確定使用的設定範圍內的控制消息為上述消息隊列中設定的到達時間段內的控制消息,若是,則確定使用的設定範圍內的控制消息為上述消息隊列中以設定起始位置的設定條數的控制消息。本實施例給出了優選確定消息隊列優化的範圍的實現舉例,需要說明的是啟用其他方式來確定優化範圍並不影響本發明實施例的實現。值得注意的是,上述伺服器實施例中,所包括的各個單元只是按照功能邏輯進行劃分的,但並不局限於上述的劃分,只要能夠實現相應的功能即可;另外,各功能單元的具體名稱也只是為了便於相互區分,並不用於限制本發明的保護範圍。另外,本領域普通技術人員可以理解實現上述各方法實施例中的全部或部分步驟是可以通過程序來指令相關的硬體完成,相應的程序可以存儲於一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁碟或光碟等。以上僅為本發明較佳的具體實施方式
,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明實施例揭露的技術範圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應該以權利要求的保護範 圍為準。
權利要求
1.一種消息隊列控制方法,其特徵在於,包括 接收控制消息,並將所述控制消息添加到消息隊列; 確定是否滿足預定的隊列優化條件,確定所述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息; 若滿足預定的隊列優化條件,則對確定可合併的控制消息進行合併得到合併後的控制消息,並將所述消息隊列中可合併的控制消息替換為合併後的控制消息。
2.根據權利要求I所述方法,其特徵在於,所述確定是否滿足預定的隊列優化條件包括確定伺服器的狀態是否處於忙狀態,若是,則確定滿足預定的隊列優化條件。
3.根據權利要求I所述方法,其特徵在於,所述確定所述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息包括確定所述消息隊列中設定範圍內的控制消息之間是否屬於逆操作,若屬於逆操作,則確定屬於可合併的控制消息;所述對確定可合併的控制消息進行合併得到合併後的控制消息,並將所述消息隊列中可合併的控制消息替換為合併後的控制消息包括刪除互為逆操作的控制消息;或者, 所述確定所述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息包括確定所述消息隊列中設定範圍內的控制消息中至少兩個控制消息是否具有等效控制消息,若存在則確定屬於可合併的控制性消息;所述對確定可合併的控制消息進行合併得到合併後的控制消息,並將所述消息隊列中可合併的控制消息替換為合併後的控制消息包括刪除具有等效控制消息的所述至少兩個控制消息,並將所述等效控制消息添加到所述消息隊列。
4.根據權利要求I至3任意一項所述方法,其特徵在於,所述設定範圍內的控制消息包括 所述消息隊列中設定的到達時間段內的控制消息;或者,所述消息隊列中以設定起始位置的設定條數的控制消息。
5.根據權利要求4所述方法,其特徵在於,還包括 確定控制消息的到達頻率是否高於預定值,若否,則確定使用的設定範圍內的控制消息為所述消息隊列中設定的到達時間段內的控制消息,若是,則確定使用的設定範圍內的控制消息為所述消息隊列中以設定起始位置的設定條數的控制消息。
6.一種伺服器,其特徵在於,包括 消息接收單元,用於接收控制消息; 消息存儲單元,用於將所述控制消息添加到消息隊列; 條件確定單元,用於確定是否滿足預定的隊列優化條件; 合併確定單元,用於確定所述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息; 隊列控制單元,用於若滿足預定的隊列優化條件,則對確定可合併的控制消息進行合併得到合併後的控制消息,並將所述消息隊列中可合併的控制消息替換為合併後的控制消息O
7.根據權利要求6所述伺服器,其特徵在於, 所述條件確定單元,具體用於確定伺服器的狀態是否處於忙狀態,若是,則確定滿足預定的隊列優化條件。
8.根據權利要求6所述伺服器,其特徵在於, 合併確定單元,具體用於確定所述消息隊列中設定範圍內的控制消息之間是否屬於逆操作,若屬於逆操作,則確定屬於可合併的控制消息;或者,具體用於確定所述消息隊列中設定範圍內的控制消息中至少兩個控制消息是否具有等效控制消息,若存在則確定屬於可合併的控制性消息; 所述隊列控制單元,具體用於若滿足預定的隊列優化條件,則除互為逆操作的控制消息;或者,刪除具有等效控制消息的所述至少兩個控制消息,並將所述等效控制消息添加到所述消息隊列。
9.根據權利要求6至8任意一項所述伺服器,其特徵在於, 所述合併確定單元使用的設定範圍內的控制消息包括所述消息隊列中設定的到達時間段內的控制消息;或者,所述消息隊列中以設定起始位置的設定條數的控制消息。
10.根據權利要求9所述伺服器,其特徵在於,還包括 選擇單元,用於確定控制消息的到達頻率是否高於預定值,若否,則確定使用的設定範圍內的控制消息為所述消息隊列中設定的到達時間段內的控制消息,若是,則確定使用的設定範圍內的控制消息為所述消息隊列中以設定起始位置的設定條數的控制消息。
全文摘要
本發明實施例公開了一種消息隊列控制方法,及伺服器,其中方法的實現包括用於接收控制消息,並將所述控制消息添加到消息隊列;確定是否滿足預定的隊列優化條件,確定所述消息隊列中設定範圍內的控制消息是否屬於可合併的控制消息;若滿足預定的隊列優化條件,則對確定可合併的控制消息進行合併得到合併後的控制消息,並將所述消息隊列中可合併的控制消息替換為合併後的控制消息。採用以上方案,可以將控制消息隊列中的控制消息進行精簡,以減少消息隊列的長度,因而能夠提升伺服器處理控制消息的處理效率。
文檔編號H04L29/08GK102710749SQ201210133468
公開日2012年10月3日 申請日期2012年4月28日 優先權日2012年4月28日
發明者曾相宗 申請人:廣東威創視訊科技股份有限公司