專利名稱:一種云環(huán)境下消息的轉發(fā)方法
技術領域:
本發(fā)明涉及云計算通訊技術領域,具體地說是一種云環(huán)境下消息的轉發(fā)方法。
背景技術:
隨著虛擬化技術的發(fā)展成熟以及網格技術與其結合下,孕育出云計算。而云計算環(huán)境中各物理節(jié)點間的消息通訊成為其重要的組成部分,消息通訊是云計算環(huán)境中很多諸如監(jiān)控服務、系統(tǒng)管理、調度、負載均衡、高可用等操作的基礎。然而如何保證這些進程或服務間的可靠的消息通訊便成為當前云計算環(huán)境下急需解決的關鍵問題。而解決消息通訊最大的問題便是云環(huán)境下大量進程和服務之間的消息轉發(fā)和路由。因此,需要設計一種能夠方便的進行消息轉發(fā)的方法和系統(tǒng),能夠確保異構復雜的云計算環(huán)境下的進程或服務的可靠通訊。同時保證此方法和系統(tǒng)的通用性和移植性,降低消息通訊機制開發(fā)的復雜性和成本。
發(fā)明內容
本發(fā)明的技術任務是解決現(xiàn)有技術的不足,提供一種新式云環(huán)境下消息的轉發(fā)方法。本發(fā)明的技術方案是按以下方式實現(xiàn)的,是以轉發(fā)器為核心,通過綁定關鍵字將特定類型轉發(fā)器和指定隊列來進行綁定,消息發(fā)送者將帶有轉發(fā)關鍵字的消息發(fā)送給特定類型轉發(fā)器,該轉發(fā)器再通過將消息中的轉發(fā)關鍵字與綁定關鍵字進行匹配,然后將消息轉發(fā)給匹配的隊列,消息接收者從隊列中取得所需消息,以上便實現(xiàn)了云環(huán)境下消息的轉發(fā)。該系統(tǒng)包括直接式轉發(fā)器(1),廣播式轉發(fā)器(2),主題式轉發(fā)器(3),消息頭式轉發(fā)器
`(4),消息隊列(5)其中
直接式轉發(fā)器(I)是所有轉發(fā)器的實現(xiàn)基礎,負則消息的直接轉發(fā)。其原則是通過精確匹配消息的轉發(fā)關鍵字,將消息轉發(fā)到零個或者多個隊列中,綁定關鍵字用來將隊列和轉發(fā)器綁定到一起,這樣便可以構建經典的點對點隊列消息傳輸模型,不過和任何已定義的轉發(fā)器類型一樣,當消息的轉發(fā)關鍵字與多個綁定關鍵字匹配時,消息可能會被發(fā)送到多個隊列中;
廣播式轉發(fā)器(2)負則消息的廣播發(fā)送,其原則是不論消息的轉發(fā)關鍵字是什么,這條消息都會被轉發(fā)到所有與該轉發(fā)器綁定的隊列中。廣播式轉發(fā)器類型的工作方式為不使用任何參數(shù)將消息隊列與轉發(fā)器綁定在一起。當消息發(fā)送者向轉發(fā)器發(fā)送一條消息時,消息被無條件的傳遞到所有和這個轉發(fā)器綁定的消息隊列中,完成消息轉發(fā);
主題式轉發(fā)器(3)負則消息的模式匹配轉發(fā),其原則是通過消息的轉發(fā)關鍵字和綁定關鍵字的模式匹配,將消息轉發(fā)到被綁定的隊列中。這種轉發(fā)器類型可以被用來支持經典的發(fā)布/訂閱消息傳輸模型。使用主題名字空間作為消息尋址模式,將消息轉發(fā)給那些部分或者全部匹配主題模式的多個隊列;
消息頭式轉發(fā)器(4)的作用是負責消息的多重屬性的轉發(fā),并且使用消息頭比轉發(fā)關鍵字更容易表述。消息頭轉發(fā)器器忽略轉發(fā)關鍵字屬性。取而代之的是,整個消息頭屬性被用于轉發(fā)匹配。如果消息頭的值與綁定隊列指定的值相同,則此消息會被匹配并發(fā)送給相應的隊列。消息頭式轉發(fā)器類似于主題式轉發(fā)器,都是指出多個過慮條件,但是消息頭轉發(fā)器的條件是通過消息頭來獲取,而不同于轉發(fā)關鍵字,可以是任何順序,匹配方式可以是any或all (也就是可以匹配指定的消息頭值的任何一個或者所有);
消息隊列(5)主要負責關聯(lián)消息接收者,并儲存消息轉發(fā)器發(fā)送的消息,當消息轉發(fā)器發(fā)送過來一條消息時,會將此消息儲存在隊列中,并通過消息接收者,當消息接收都將此消息從隊列中取出時,消息隊列會將此消息刪除。 具體轉發(fā)步驟如下
在系結構中,所有消息轉發(fā)器都先接受消息,然后將消息發(fā)送給匹配的消息隊列,消息隊列是一個緩沖區(qū),它為一組消接收者應用程序保存消息,應用程序在其權限范圍之內可以自由的創(chuàng)建、共享、使用和消費消息隊列,消息隊列提供了有限制的先進先出的保證,服務器會將從某一個消息發(fā)送者發(fā)出的同等優(yōu)先級的消息,按照它們進入隊列的順序傳遞給某個消息接收者,只要用戶或消息接收者擁有相應的權限,任何隊列都可以被顯式刪除,消息隊列將消息保存在內存、硬盤或者這兩種介質的組合之中,消息隊列保存消息,并將消息分發(fā)給一個或多個消息接收者,消息隊列會跟蹤消息的獲取情況,消息要出隊就必須被獲取,然后再消費,獲取和消費是兩個動作,先執(zhí)行獲取,相當于對消息加鎖。這就阻止了多個消息接收者同時獲取和消費同一條消息,也可以被用來做單個隊列多個消息接收者之間的負載均衡;
所述的“綁定”就是將一個特定的消息轉發(fā)器和一個特定的隊列綁定起來,程序中語句聲明方法為
channel. queueBind(〃Exchange〃,〃Queue〃,〃BindingKey〃);
消息都有一個叫做 轉發(fā)關鍵字的屬性,消息轉發(fā)器要想將該消息轉發(fā)給特定的隊列,該隊列與轉發(fā)器的綁定關鍵字必須與消息的轉發(fā)關鍵字相匹配才行;
直接式轉發(fā)器,當某個消息到直接式轉發(fā)器時,如果他轉發(fā)的關鍵字是orange,則他將被交付給消息隊列I,如果他轉發(fā)的關鍵字是black或者是green,則他將被交付給隊列消息隊列2 ;
所述的廣播式轉發(fā)器,不使用任何參數(shù)將消息隊列與轉發(fā)器綁定在一起,消息發(fā)送者向廣播式轉發(fā)器發(fā)送一條消息,消息被無條件的轉發(fā)給所有和這個轉發(fā)器綁定的消息隊列中,送達廣播式轉發(fā)器的所有消息,將被送到所有和轉發(fā)器綁定的隊列上;
所述的主題式轉發(fā)器,其工作方式為綁定關鍵字用零個或多個標記構成,每一個標記之間用”字符分隔,綁定關鍵字必須用這種形式明確說明,并支持通配符“*”匹配一個詞組,“#”零個或多個詞組,因此,綁定關鍵字stock. #”匹配轉發(fā)關鍵字“usd. stock”和“eur. stock, db”,但是不匹配“stock, nasdaq”,可匹配任意一個單詞,“#”可匹配任意多個關鍵字,包括O個,送到主題式轉發(fā)器的消息,匹配了特定的轉發(fā)關鍵字時,就能送達特定的隊列,如果他轉發(fā)的關鍵字是a. orange, b,則他將被交付給消息隊列I,如果他轉發(fā)的關鍵字是a. be. black或者green, a. b,則他將被交付給消息隊列2 ;
如果消息頭的值與綁定隊列指定的值相同,則此消息會被匹配并發(fā)送給相應的隊列,消息頭式轉發(fā)器類似于主題式轉發(fā)器,都是指出多個過慮條件,但是消息頭轉發(fā)器的條件是通過消息頭來獲取,而不同于轉發(fā)關鍵字,是任何順序,匹配方式是any或all,也就是匹配指定的消息頭值的任何一個或者所有,消息頭式轉發(fā)器將消息發(fā)送給消息隊列1,那是因為“x-match”的參數(shù)設置為了 “any”,這就意味著消息頭的條件中只要有一個條件匹配,就能將消息發(fā)送給該隊列,當“x-match”的參數(shù)設置為“all”時,意味著所有的消息頭條件都要匹配,消息頭式轉發(fā)器被用于指向型消息,其特點是只知道所有包含條件的一個子集,但順序是不確定的,為復雜的條件類型提供一種方便的匹配形式。本發(fā)明的有益效果是保證在異構復雜的云計算環(huán)境下各個進程或服務之間消息的可靠轉發(fā)或路由,并形成一個獨立通用的消息系統(tǒng),這樣就降低進程或服務間通訊的耦合度,進而降低了云計算環(huán)境下服務通訊的開發(fā)成本。本發(fā)明通過設計一種方便可靠的消息轉發(fā)方法,保證了消息系統(tǒng)的通用性和健壯性,使其能很好的移植到一個新的云計算環(huán)境中。
圖1是一種直接式轉發(fā)器模型結構示意 圖2是一種廣播式轉發(fā)器模型結構示意 圖3是一種主題式轉發(fā)器模型結構示意 圖4是一種消息頭式轉發(fā)器模型結構示意圖。
具體實施例方式下面參照附圖,對本發(fā)明的內容以一個具體實例來描述實現(xiàn)這一消息轉發(fā)系統(tǒng)的過程。
正如發(fā)明內容中所描述的,本發(fā)明體系結構主要包括直接式轉發(fā)器(1),廣播式轉發(fā)器(2),主題式轉發(fā)器(3),消息頭式轉發(fā)器(4),消息隊列(5)
在這一體系結構中所提到的所有消息轉發(fā)器都先接受消息,然后將消息發(fā)送給匹配的消息隊列。消息隊列是一個緩沖區(qū),它為一組消接收者應用程序保存消息。應用程序在其權限范圍之內可以自由的創(chuàng)建、共享、使用和消費消息隊列。消息隊列提供了有限制的先進先出保證。服務器會將從某一個消息發(fā)送者發(fā)出的同等優(yōu)先級的消息按照它們進入隊列的順序傳遞給某個消息接收者。只要用戶(消息接收者)擁有相應的權限,任何隊列都可以被顯式刪除。消息隊列將消息保存在內存、硬盤,或者這兩種介質的組合之中。消息隊列保存消息,并將消息分發(fā)給一個或多個消息接收者。消息隊列會跟蹤消息的獲取情況,消息要出隊就必須被獲取,然后再消費(獲取和消費是兩個動作,先執(zhí)行獲取,相當于對消息加鎖)。這阻止了多個消息接收者同時獲取和消費同一條消息,也可以被用來做單個隊列多個消息接收者之間的負載均衡。在這一體系結構中所提到的綁定就是將一個特定的消息轉發(fā)器和一個特定的隊列綁定起來。程序中語句聲明方法為
channel. queueBind(〃Exchange〃,〃Queue〃,〃BindingKey〃);
消息都有一個叫做轉發(fā)關鍵字的屬性,消息轉發(fā)器要想將該消息轉發(fā)給特定的隊列,該隊列與轉發(fā)器的綁定關鍵字必須與消息的轉發(fā)關鍵字相匹配才行。在這一體系結構中所提到的直接式轉發(fā)器的實現(xiàn)如圖1所示,當某個消息到直接式轉發(fā)器時,如果的他的轉發(fā)關鍵字orange,則他將被交付給消息隊列1,如果的他的轉發(fā)關鍵字是black或者是green,則他將被交付給隊列消息隊列2.
在這一體系結構中所提到的廣播式轉發(fā)器的實現(xiàn)如圖2所示,不使用任何參數(shù)將消息隊列與轉發(fā)器綁定在一起。消息發(fā)送者向廣播式轉發(fā)器發(fā)送一條消息。消息被無條件的轉發(fā)給所有和這個轉發(fā)器綁定的消息隊列中。在圖中,送達廣播式轉發(fā)器的所有消息,將被送到所有和轉發(fā)器綁定的隊列上。在這一體系結構中所提到的主題式轉發(fā)器的實現(xiàn)如圖3所示,其工作方式為綁定關鍵字用零個或多個標記構成,每一個標記之間用”字符分隔。綁定關鍵字必須用這種形式明確說明,并支持通配符“*”(匹配一個詞組),“#” (零個或多個詞組)。因此綁定關鍵字“*· stock. #,,匹配轉發(fā)關鍵字“usd. stock”和“eur. stock, db”,但是不匹配“stock.nasdaq”。圖中,*可匹配任意一個單詞,#可匹配任意多個(包括O個)關鍵字,送到主題式轉發(fā)器的消息,匹配了特定的轉發(fā)關鍵字時,就能送達特定的隊列。如果的他的轉發(fā)關鍵字a. orange, b,則他將被交付給消息隊列1,如果的他的轉發(fā)關鍵字a. be. black或者green,a.b,則他將被交付給消息隊列2。在這一·體系結構中所提到的消息頭式轉發(fā)器的實現(xiàn)如圖4所示,如果消息頭的值與綁定隊列指定的值相同,則此消息會被匹配并發(fā)送給相應的隊列。消息頭式轉發(fā)器類似于主題式轉發(fā)器,都是指出多個過慮條件,但是消息頭轉發(fā)器的條件是通過消息頭來獲取,而不同于轉發(fā)關鍵字,可以是任何順序,匹配方式可以是any或all (也就是可以匹配指定的消息頭值的任何一個或者所有)。圖中,消息頭式轉發(fā)器將消息發(fā)送給消息隊列1,那是因為“x-match”的參數(shù)設置為了 “any”,這就意味著消息頭的條件中只要有一個條件匹配就可以,將消息發(fā)送給該隊列,當“x-match”的參數(shù)設置為“all”時,意味著所有的消息頭條件都要匹配才可以。消息頭式轉發(fā)器被用于指向型消息,其特點是只知道所有包含條件的一個子集,但順序是不確定的,為復雜的條件類型提供一種方便的匹配形式。除本發(fā)明的說明書公開的技術特征外均為本專業(yè)技術人員的公職技術。
權利要求
1. 一種云環(huán)境下消息的轉發(fā)方法,其特征在于,以轉發(fā)器為核心,通過綁定關鍵字將特定類型轉發(fā)器和指定隊列來進行綁定,消息發(fā)送者將帶有轉發(fā)關鍵字的消息發(fā)送給特定類型轉發(fā)器,該轉發(fā)器再通過將消息中的轉發(fā)關鍵字與綁定關鍵字進行匹配,然后將消息轉發(fā)給匹配的隊列,消息接收者從隊列中取得所需消息,實現(xiàn)云環(huán)境下消息的轉發(fā),系統(tǒng)包括直接式轉發(fā)器(I)、廣播式轉發(fā)器(2)、主題式轉發(fā)器(3)、消息頭式轉發(fā)器(4)和消息隊列(5),其中直接式轉發(fā)器(I)是所有轉發(fā)器的實現(xiàn)基礎,負則消息的直接轉發(fā),其原則是通過精確匹配消息的轉發(fā)關鍵字,將消息轉發(fā)到零個或者多個隊列中,綁定關鍵字用來將隊列和轉發(fā)器綁定到一起,這樣構建經典的點對點隊列消息傳輸模型,當消息的轉發(fā)關鍵字與多個綁定關鍵字匹配時,消息可能會被發(fā)送到多個隊列中;廣播式轉發(fā)器(2)負則消息的廣播發(fā)送,其原則是不論消息的轉發(fā)關鍵字是什么,這條消息都會被轉發(fā)到所有與該轉發(fā)器綁定的隊列中,廣播式轉發(fā)器類型的工作方式為不使用任何參數(shù)將消息隊列與轉發(fā)器綁定在一起,當消息發(fā)送者向轉發(fā)器發(fā)送一條消息時,消息被無條件的傳遞到所有和這個轉發(fā)器綁定的消息隊列中,完成消息轉發(fā);主題式轉發(fā)器(3)負則消息的模式匹配轉發(fā),其原則是通過消息的轉發(fā)關鍵字和綁定關鍵字的模式匹配,將消息轉發(fā)到被綁定的隊列中,這種轉發(fā)器類型被用來支持經典的發(fā)布/訂閱消息傳輸模型,使用主題名字空間作為消息尋址模式,將消息轉發(fā)給那些部分或者全部匹配主題模式的多個隊列;消息頭式轉發(fā)器(4)的作用是負責消息的多重屬性的轉發(fā),并且使用消息頭比轉發(fā)關鍵字更容易表述,消息頭轉發(fā)器器忽略轉發(fā)關鍵字屬性,取而代之的是,整個消息頭屬性被用于轉發(fā)匹配,如果消息頭的值與綁定隊列指定的值相同,則此消息會被匹配并發(fā)送給相應的隊列,消息頭式轉發(fā)器類似于主題式轉發(fā)器,都是指出多個過濾條件,但是消息頭轉發(fā)器的條件是通過消息頭來獲取,而不同于轉發(fā)關鍵字,是任何順序,匹配方式是any或all,即匹配指定的消息頭值的任何一個或者所有;消息隊列(5)主要負責關聯(lián)消息接收者,并儲存消息轉發(fā)器發(fā)送的消息,當消息轉發(fā)器發(fā)送過來一條消息時,會將此消息儲存在隊列中,并通過消息接收者,當消息接收都將此消息從隊列中取出時,消息隊列會將此消息刪除;具體轉發(fā)步驟如下在系結構中,所有消息轉發(fā)器都先接受消息,然后將消息發(fā)送給匹配的消息隊列,消息隊列是一個緩沖區(qū),它為一組消接收者應用程序保存消息,應用程序在其權限范圍之內可以自由的創(chuàng)建、共享、使用和消費消息隊列,消息隊列提供了有限制的先進先出的保證,服務器會將從某一個消息發(fā)送者發(fā)出的同等優(yōu)先級的消息,按照它們進入隊列的順序傳遞給某個消息接收者,只要用戶或消息接收者擁有相應的權限,任何隊列都可以被顯式刪除,消息隊列將消息保存在內存、硬盤或者這兩種介質的組合之中,消息隊列保存消息,并將消息分發(fā)給一個或多個消息接收者,消息隊列會跟蹤消息的獲取情況,消息要出隊就必須被獲取,然后再消費,獲取和消費是兩個動作,先執(zhí)行獲取,相當于對消息加鎖,這就阻止了多個消息接收者同時獲取和消費同一條消息,也可以被用來做單個隊列多個消息接收者之間的負載均衡;所述的“綁定”就是將一個特定的消息轉發(fā)器和一個特定的隊列綁定起來,程序中語句聲明方法為channel. queueBind(〃Exchange〃,〃Queue〃,〃BindingKey〃);消息都有一個叫做轉發(fā)關鍵字的屬性,消息轉發(fā)器要想將該消息轉發(fā)給特定的隊列,該隊列與轉發(fā)器的綁定關鍵字必須與消息的轉發(fā)關鍵字相匹配才行;直接式轉發(fā)器,當某個消息到直接式轉發(fā)器時,如果他轉發(fā)的關鍵字是orange,則他將被交付給消息隊列I,如果他轉發(fā)的關鍵字是black或者是green,則他將被交付給隊列消息隊列2 ;所述的廣播式轉發(fā)器,不使用任何參數(shù)將消息隊列與轉發(fā)器綁定在一起,消息發(fā)送者向廣播式轉發(fā)器發(fā)送一條消息,消息被無條件的轉發(fā)給所有和這個轉發(fā)器綁定的消息隊列中,送達廣播式轉發(fā)器的所有消息,將被送到所有和轉發(fā)器綁定的隊列上;所述的主題式轉發(fā)器,其工作方式為綁定關鍵字用零個或多個標記構成,每一個標記之間用”字符分隔,綁定關鍵字必須用這種形式明確說明,并支持通配符“*”匹配一個詞組,“#”零個或多個詞組,因此,綁定關鍵字stock. #”匹配轉發(fā)關鍵字“usd. stock”和“eur. stock, db”,但是不匹配“stock, nasdaq”,可匹配任意一個單詞,“#”可匹配任意多個關鍵字,包括O個,送到主題式轉發(fā)器的消息,匹配了特定的轉發(fā)關鍵字時,就能送達特定的隊列,如果他轉發(fā)的關鍵字是a. orange, b,則他將被交付給消息隊列I,如果他轉發(fā)的關鍵字是a. be. black或者green, a. b,則他將被交付給消息隊列2 ;如果消息頭的值與綁定隊列指定的值相同,則此消息會被匹配并發(fā)送給相應的隊列,消息頭式轉發(fā)器類似于主題式轉發(fā)器,都是指出多個過慮條件,但是消息頭轉發(fā)器的條件是通過消息頭來獲取,而不同于轉發(fā)關鍵字,是任何順序,匹配方式是any或all,也就是匹配指定的消息頭值的任何一個或者所有,消息頭式轉發(fā)器將消息發(fā)送給消息隊列1,那是因為“x-match”的參數(shù)設置為了 “any”,這就意味著消息頭的條件中只要有一個條件匹配,就能將消息發(fā)送給該隊列,當“x-match”的參數(shù)設置為“all”時,意味著所有的消息頭條件都要匹配,消息頭式轉發(fā)器被用于指向型消息,其特點是只知道所有包含條件的一個子集,但順序是不確定的,為復雜的條件類型提供一種方便的匹配形式。
2.根據(jù)權利要求1所述的云環(huán)境下消息的轉發(fā)方法,其特征在于在云環(huán)境中多個節(jié)點進行消息通訊時,通過不同的綁定關鍵字以區(qū)別不同的消息發(fā)送者和消息接收者,以保證在云環(huán)境下大量節(jié)點間消息轉發(fā)和通訊。
3.根據(jù)權利要求1所述的云環(huán)境下消息的轉發(fā)方法,其特征在于消息轉發(fā)器和消息隊列作為一個獨立的功能結構體,通過消息接收者或消息發(fā)送者的聲明來確定消息轉發(fā)器類型的選擇和消息轉發(fā)器與消息隊列的綁定關鍵字。
全文摘要
本發(fā)明提供一種云環(huán)境下消息的轉發(fā)方法,系統(tǒng)包括直接式轉發(fā)器(1)、廣播式轉發(fā)器(2)、主題式轉發(fā)器(3)、消息頭式轉發(fā)器(4)和消息隊列(5),該方法是以轉發(fā)器為核心,通過綁定關鍵字將特定類型轉發(fā)器和指定隊列來進行綁定,消息發(fā)送者將帶有轉發(fā)關鍵字的消息發(fā)送給特定類型轉發(fā)器,該轉發(fā)器再通過將消息中的轉發(fā)關鍵字與綁定關鍵字進行匹配,然后將消息轉發(fā)給匹配的隊列,消息接收者從隊列中取得所需消息,實現(xiàn)云環(huán)境下消息的轉發(fā),保證在異構復雜的云計算環(huán)境下各個進程或服務之間消息的可靠轉發(fā)或路由,并形成一個獨立通用的消息系統(tǒng),這樣就降低進程或服務間通訊的耦合度,進而降低了云計算環(huán)境下服務通訊的開發(fā)成本。
文檔編號H04L12/58GK103051521SQ20131000662
公開日2013年4月17日 申請日期2013年1月9日 優(yōu)先權日2013年1月9日
發(fā)明者崔贏, 顏秉珩, 張俊, 張現(xiàn)忠 申請人:浪潮電子信息產業(yè)股份有限公司