亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在分布式消息處理系統(tǒng)中的消息管理設備和方法

文檔序號:6380495閱讀:191來源:國知局
專利名稱:在分布式消息處理系統(tǒng)中的消息管理設備和方法
技術領域
本發(fā)明涉及消息處理領域,具體涉及一種在分布式消息處理系統(tǒng)中的消息管理設備和方法。
背景技術
目前用于消息(如日志)處理的消息系統(tǒng)有很多,比較流行的是分布式消息系統(tǒng)。分布式消息系統(tǒng)的具體形式有很多,如Spread、Kafka等。下面僅以常用的一種分布式消息系統(tǒng)Kafka為例進行說明。
Kafka是用于日志處理的分布式消息系統(tǒng),主要針對日志數(shù)據(jù)容量大,但對可靠性要求不是很高的業(yè)務。這些系統(tǒng)中的日志數(shù)據(jù)主要包括用戶行為,例如,登錄、瀏覽、點擊、分享以及喜歡等,還包括系統(tǒng)運行日志,例如,CPU (Central Processing Unit,中央處理器)、內(nèi)存、磁盤、網(wǎng)絡、系統(tǒng)及進程等的運行狀態(tài)。圖I為相關技術中Kafka系統(tǒng)架構示意圖。該Kafka系統(tǒng)包括以下四個角色Producer (消息產(chǎn)生者,簡稱PD) 11、Broker (簡稱BK) 12、Consumer (消息處理者,簡稱CS) 13以及Zooke印er(管理者,簡稱ZK) 14,每個角色都可以是多個。Consumer 13在Kafka系統(tǒng)中負責處理消息;Producer 11在Kafka系統(tǒng)中負責產(chǎn)生消息;Brokerl2是Kafka系統(tǒng)中用來存放消息的地方,負責接收Producer 11發(fā)來的消息,當Consumer 13有請求時,將這些消息返回給Consumerl3 ;ZooKeeper 14是一個開放源碼的分布式應用程序協(xié)調(diào)服務,包含一個簡單的原語集,是Hadoop和Hbase的重要組件,分布式應用可以使用它來實現(xiàn)諸如統(tǒng)一命名服務、配置管理、分布式鎖服務、集群管理等功能。Producer 11發(fā)送消息到Broker 12,消息持久化存儲在Brokerl2上,Consumer 13再從Brokerl2取得消息進行處理。Zookeeper 14 用來存儲 Producer 11, Consumer 13,與 Brokerl2 的一些狀態(tài)信息。Kafka系統(tǒng)對消息的處理是采用pull (拉)的方式,每次由Consumer 13從Broker12上獲取要處理的消息。成功處理的消息的位置Offset由Consumerl3來保存。在上述消息處理方式中,Consumer 13需要自己對成功處理的消息的位置Offset進行管理、保存,Off set—般保存在Consumer 13所屬的消息處理設備的內(nèi)存或者本地磁盤上,當消息處理設備意外終止或者機器磁盤壞掉后,之前保存的Offset就丟失了。當重新啟動消息處理設備后,將從最近一次保存的Offset、或者從頭開始消費,Consumer 13無法緊接上次成功處理的消息的位置繼續(xù)對消息進行處理。

發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的在分布式消息處理系統(tǒng)中的消息管理設備和方法。依據(jù)本發(fā)明的一個方面,提供了一種在分布式消息處理系統(tǒng)中的消息管理設備,該分布式消息處理系統(tǒng)還包括一個或多個消息存儲設備和一個或多個消息處理設備,其中每條消息具有相應的主題,消息存儲設備為相應主題建立一個或者多個存儲分區(qū),并且根據(jù)消息的主題將消息存儲在相應主題的存儲分區(qū)之一中,消息管理設備包括消息分布狀態(tài)存儲器,被配置為至少存儲每個消息存儲設備中有關存儲分區(qū)的信息、以及每個存儲分區(qū)中有關消息處理設備當前要處理的消息的位置信息;傳輸接口,被配置為接收消息處理設備發(fā)送的消息處理請求,消息處理請求至少包括所請求處理消息的主題;分區(qū)狀態(tài)查詢器,被配置為在消息分布狀態(tài)存儲器中查詢與消息處理請求中的主題相對應的存儲分區(qū)信息,并經(jīng)由傳輸接口將所查詢到的存儲分區(qū)信息發(fā)送給相應消息處理設備;以及消息位置管理器,被配置為處理通過傳輸接口接收的、來自消息處理設備的消息位置查詢請求,從消息分布狀態(tài)存儲器中獲取與該消息位置查詢請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息、并經(jīng)由傳輸接口發(fā)送給相應消息處理設備;以及被配置為處理通過傳輸接口接收的、來自消息處理設備的消息位置更新請求,基于消息位置更新請求中的消息大小,更新消息分布狀態(tài)存儲器中、與消息位置更新請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息。可選的,消息分布狀態(tài)存儲器中還存儲有消息處理設備每次所要處理的消息的大小;分區(qū)狀態(tài)查詢器還被配置為在消息分布狀態(tài)存儲器中查詢相應消息處理設備所要處理 的消息的大小,并通過傳輸接口發(fā)送給相應消息處理設備。根據(jù)本發(fā)明的另一個方面,還提供了一種消息管理方法,該方法適于在分布式消息處理系統(tǒng)中的消息管理設備上執(zhí)行,該分布式消息處理系統(tǒng)還包括一個或多個消息存儲設備和一個或多個消息處理設備,其中每條消息具有相應的主題,消息存儲設備為相應主題建立一個或者多個存儲分區(qū),并且根據(jù)消息的主題將消息存儲在相應主題的存儲分區(qū)之一中,消息管理方法包括接收消息處理設備發(fā)送的消息處理請求,消息處理請求至少包括所請求處理消息的主題;查詢與消息處理請求中的主題相對應的存儲分區(qū)信息,并將所查詢到的存儲分區(qū)信息發(fā)送給相應消息處理設備,其中,消息管理設備中至少存儲每個消息存儲設備中有關存儲分區(qū)的信息、以及每個存儲分區(qū)中有關消息處理設備當前要處理的消息的位置信息;以及處理來自消息處理設備的消息位置查詢請求,查詢與該消息位置查詢請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息、并發(fā)送給相應消息處理設備;以及處理來自消息處理設備的消息位置更新請求,基于消息位置更新請求中的消息大小,更新與消息位置更新請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息??蛇x的,上述消息管理方法還包括查詢相應消息處理設備所要處理的消息的大小、并發(fā)送給相應消息處理設備,其中消息管理設備中還存儲有消息處理設備每次所要處理的消息的大小。本發(fā)明的技術方案在消息管理設備上存儲有每個消息存儲設備中有關存儲分區(qū)的信息、以及每個存儲分區(qū)中有關消息處理設備當前要處理的消息的位置信息,當消息處理設備獲取要處理的消息時,只需從消息管理設備查詢消息處理設備處理的主題下的消息在消息存儲設備上的存儲分區(qū)信息,以及消息處理設備在相應的存儲分區(qū)的當前要處理的消息的位置信息,即可發(fā)送請求消息從消息存儲設備獲取消息進行處理,這樣,即使消息處理設備發(fā)生故障,在消息處理設備恢復正常后,仍然可以緊接上次成功處理消息的位置獲取消息進行處理,避免了消息的重復處理或遺漏。上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式
。


通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖I示出了一種Kafka系統(tǒng)架構示意圖;
圖2示出了根據(jù)本發(fā)明一個實施例的分布式消息處理系統(tǒng)的示意圖;圖3示出了根據(jù)本發(fā)明一個實施例的消息存儲設備內(nèi)部存儲結構的示意圖;圖4示出了根據(jù)本發(fā)明一個實施例的消息管理方法的流程圖;以及圖5示出了根據(jù)本發(fā)明一個實施例的消息處理方法的流程圖。
具體實施例方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。圖2示出了根據(jù)本發(fā)明一個實施例的分布式消息處理系統(tǒng)的示意圖。如圖所示,該分布式消息處理系統(tǒng)包括消息產(chǎn)生設備100、消息存儲設備200、消息處理設備300和消息管理設備400。消息產(chǎn)生設備100、消息存儲設備200和消息處理設備300分別可以為一個或多個,圖2中僅示例性給出了兩個消息產(chǎn)生設備100、兩個消息存儲設備200,以及一個消息處理設備300和一個消息管理設備400,本領域技術人員可以理解,本發(fā)明實施例對消息產(chǎn)生設備100、消息存儲設備200、消息處理設備300和消息管理設備400的數(shù)目并沒有限制。消息產(chǎn)生設備100可以是網(wǎng)絡設備、服務器、計算機或其它可以產(chǎn)生消息的任何設備,這里的消息可以是任何種類信息的數(shù)據(jù),如日志數(shù)據(jù)。每條消息具有相應的主題,如該主題可以是某種具體的用戶行為,如登錄行為、瀏覽行為、點擊行為、分享行為或者喜歡行為等,又如該主題可以是某種具體的系統(tǒng)運行日志,如CPU、內(nèi)存、磁盤、網(wǎng)絡、系統(tǒng)及進程的運行狀態(tài)等。例如,在一個實施例中,消息產(chǎn)生設備100為網(wǎng)絡服務器,在用戶瀏覽該網(wǎng)絡服務器的某網(wǎng)絡頁面時,該網(wǎng)絡服務器隨之產(chǎn)生一條主題為瀏覽該網(wǎng)絡頁面的消息。在消息產(chǎn)生設備100產(chǎn)生消息后,將產(chǎn)生的消息發(fā)送給消息存儲設備200。消息產(chǎn)生設備100向消息存儲設備200發(fā)送消息時,可以隨機發(fā)送,也可以根據(jù)用戶指定的回調(diào)函數(shù)進行發(fā)送。消息產(chǎn)生設備100將產(chǎn)生的消息發(fā)送給消息存儲設備200的一個示例代碼如下$zkCluster = ' Iocalhost:2181;;$msg = array' message content');$topic = ' test';$Producer = new Kafka_Producer($zkCluster);
$Producer- > send (array ($msg), $topic/ );本領域技術人員可以理解,以上傳遞消息的代碼僅僅是一個示例,任何可以實現(xiàn)將消息產(chǎn)生設備100產(chǎn)生的消息發(fā)送到消息存儲設備200的代碼實現(xiàn)都在本發(fā)明的保護范圍內(nèi)。消息存儲設備200接收到消息產(chǎn)生設備100發(fā)送的消息后,將接收到的消息進行存儲。消息存儲設備200有多種具體的存儲方式,例如,消息存儲設備200按照消息的主題進行存儲。具體而言,可以為每個消息主題建立一個或多個存儲分區(qū),將接收到的每條消息存儲在相應主題的存儲分區(qū)之一中。為了更好的介紹消息存儲設備200的內(nèi)部存儲結構,請同時參看圖3,其為根據(jù)本發(fā)明一個實施例的消息存儲設備200內(nèi)部存儲結構的示意圖。在圖3中,示出了第一消息存儲設備2001、第二消息存儲設備2002和第三消息存儲設備2003,以及每個消息存儲設備內(nèi)部的消息存儲路徑。此外,還示出了與這些消息存儲設備進行信息交互的第一消息產(chǎn) 生設備1001和第二消息產(chǎn)生設備1002,以及第一消息處理設備3001和第二消息處理設備3002。第一消息產(chǎn)生設備1001和第二消息產(chǎn)生設備1002產(chǎn)生的主題為Topicl以及Topic2的消息,會被發(fā)送到可以用來存儲Topicl的消息和Topic2的消息的第一消息存儲設備2001、第二消息存儲設備2002和第三消息存儲設備2003。因為分布式消息處理系統(tǒng)基于消息的主題(Topic)來進行消息管理,所以相應的,在消息存儲設備中也是基于Topic來進行存儲的。每個Topic的消息可以存儲在一個或多個存儲分區(qū)(Partition)中,當存儲在多個存儲分區(qū)時,這些多個存儲分區(qū)可以位于一個消息存儲設備上,也可以位于多個消息存儲設備上。在圖3中,主題為Topicl的消息存儲在第一消息存儲設備2001中Topicl下的存儲分區(qū)parti和存儲分區(qū)part2、第二消息存儲設備2002中Topicl下的存儲分區(qū)parti和存儲分區(qū)part2,以及第三消息存儲設備2003中Topicl下的存儲分區(qū)parti。主題為Topic2的消息存儲在第一消息存儲設備2001中Topic2下的存儲分區(qū)parti、第二消息存儲設備2002中Topic2下的存儲分區(qū)parti,以及第三消息存儲設備2003中Topic2下的存儲分區(qū)parti。其中每個存儲分區(qū)具有多條消息,每條消息相對于存儲分區(qū)頭部具有不同的位置。例如,根據(jù)本發(fā)明的一個實施例,每條消息都具有消息id,消息id由其邏輯位置決定,即從消息id可直接定位到消息的存儲位置,避免id到存儲位置的額外映射。上面通過圖3詳細介紹了圖2中消息存儲設備200的一種內(nèi)部存儲結構,下面再回到圖2所示的實施例。消息存儲設備200在存儲其接收的消息后,可以將每次有關存儲分區(qū)更新的信息發(fā)送給消息管理設備400,由消息管理設備400保存。以上介紹了一個實施例中的消息產(chǎn)生設備100和消息存儲設備200,下面結合對某個主題下的消息的具體處理過程,繼續(xù)介紹消息處理設備300和消息管理設備400。由于消息處理設備300中的各部件和消息管理設備400中的各部件信息交互較多,因此下面先概括介紹消息處理設備300中所包括的各部件,以及消息管理設備400包括的各部件,然后在具體信息交互過程中對涉及到的各部件再進行更詳細的介紹。消息處理設備300包括傳輸接口 304、存儲信息獲取器302、消息位置管理器306和消息獲取器308,消息管理設備400包括傳輸接口 404、消息分布狀態(tài)存儲器402、分區(qū)狀態(tài)查詢器406和消息位置管理器408。當消息處理設備300需要處理某個Topic的消息時,首先通過消息處理設備300的存儲信息獲取器302生成消息處理請求,該消息處理請求至少包括消息處理設備300所請求處理消息的主題,然后通過消息處理設備300的傳輸接口 304將消息處理請求傳送給消息管理設備400的傳輸接口 404。消息管理設備400的傳輸接口 404接收到來自消息處理設備300的消息處理請求后,將該消息處理請求發(fā)送給分區(qū)狀態(tài)查詢器406,然后分區(qū)狀態(tài)查詢器406在消息分布狀態(tài)存儲器402中查詢與該消息處理請求中的主題相對應的一個或多個存儲分區(qū)信息。具體而言,由于消息分布狀態(tài)存儲器402中存儲有消息管理設備400接收的、來自每個消息存儲設備200的有關存儲分區(qū)的信息,因此分布狀態(tài)查詢器406可以根據(jù)消息處理請求中指定的消息的主題,從消息分布狀態(tài)存儲器402中查詢該主題下的消息存儲在哪 些或哪個消息存儲設備200的哪些或哪個存儲分區(qū)上。例如,假定分布狀態(tài)查詢器406查詢到共有5個存儲分區(qū)存儲消息處理請求中指定主題下的消息,每個存儲分區(qū)用bix)ker_id-partition_id 標識,分別是bl_pl, bl_p2, b2_pl, b2_p2, b3_pl,則將查詢到的包含該 5個存儲分區(qū)標識的存儲分區(qū)信息,通過傳輸接口 404發(fā)送給相應的消息處理設備300的傳輸接口 304。消息處理設備300的傳輸接口 304接收到來自消息管理設備400、與消息處理請求中的主題相對應的一個或多個存儲分區(qū)信息后,轉發(fā)給消息位置管理器306進行處理。具體而言,消息位置管理器306從一個或多個存儲分區(qū)信息中依次選擇一個存儲分區(qū)信息,然后從消息管理設備400中獲取所選擇的存儲分區(qū)信息對應的當前要處理消息的位置信息。例如,消息位置管理器306包括選擇模塊和消息位置查詢模塊,首先選擇模塊從一個或多個存儲分區(qū)信息中依次選擇一個存儲分區(qū)信息,在選擇存儲分區(qū)信息時,可以是從一個或多個存儲分區(qū)信息中依次隨機選擇一個存儲分區(qū)信息,也可以是按照消息存儲設備200的編號及在相應的消息存儲設備200上的存儲分區(qū)的編號依次選擇一個存儲分區(qū)信息。然后消息位置查詢模塊根據(jù)選擇模塊選擇的存儲分區(qū)信息生成相應的消息位置查詢請求,消息位置查詢請求中包括選擇模塊所選擇的存儲分區(qū)信息,進而通過傳輸接口304將消息位置查詢模塊所生成的消息位置查詢請求發(fā)送給消息管理設備400的傳輸接口404,以便從消息管理設備400中獲取該存儲分區(qū)信息對應的當前要處理的消息的位置信肩、O消息管理設備400的傳輸接口 404接收到來自消息處理設備300的消息位置查詢請求后,將該消息位置查詢請求轉發(fā)給消息位置管理器408。因為在消息分布狀態(tài)存儲器402中還存儲有每個存儲分區(qū)中有關消息處理設備當前要處理的消息的位置信息,所以消息位置管理器408接收到消息位置查詢請求后,從消息分布狀態(tài)存儲器402中查詢與該消息位置查詢請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理的消息的位置信息,查詢完畢后將查詢結果通過傳輸接口 404發(fā)送給相應消息處理設備300的傳輸接口 304。如果消息分布狀態(tài)存儲器402中不存與該消息位置查詢請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理的消息的位置信息,可以由消息位置管理器408將相應存儲分區(qū)當前要處理的消息的位置信息的初始值設為0,并發(fā)送給相應的消息處理設備300。另外,也可以由消息位置管理器408將不存在相應存儲分區(qū)當前要處理的消息的位置信息直接發(fā)送給消息處理設備300,由消息處理設備300將相應存儲分區(qū)當前要處理的消息的位置信息的初始值設為O。應當注意的是,在上一個實施例中,消息處理設備300的存儲信息獲取器302先向消息管理設備400發(fā)送消息處理請求,獲得消息管理設備400返回的結果后,消息位置管理器306再向消息管理設備400發(fā)送消息位置查詢請求。在又一個實施例中,消息處理設備300的存儲信息獲取器302和消息位置管理器306也可以將消息處理請求和消息位置查詢請求同時發(fā)送給消息管理設備400。例如,假定消息管理設備400同時接收到來自消息處理設備300的消息處理請求和消息位置查詢請求,進而分布狀態(tài)查詢器406根據(jù)消息處理請求查詢到共有5個存儲分區(qū)存儲消息處理請求中指定主題下的消息,然后消息位置管理器408根據(jù)分布狀態(tài)查詢器406的查詢結果以及消息 位置查詢請求,進一步查詢這5個存儲分區(qū)當前分別要處理的消息的位置信息,最后將這5個存儲分區(qū)當前分別要處理的消息的位置信息一并發(fā)送給相應的消息處理設備300。消息處理設備300的傳輸接口 304在接收到消息管理設備400返回的、與消息位置查詢請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理的消息的位置信息后,將該位置信息經(jīng)消息位置管理器306轉發(fā)給消息獲取器308 ;或者也可由傳輸接口 304將接收到的位置信息直接發(fā)送給消息獲取器308。消息處理設備300在從消息管理設備400查詢到所處理主題的消息的存儲分區(qū)信息及在相應存儲分區(qū)的當前要處理的消息位置信息后,消息獲取器308即可生成消息獲取請求,并通過傳輸接口 304將該消息獲取請求發(fā)送給消息管理器306所選擇的存儲分區(qū)所在的消息存儲設備200。消息獲取請求中需要指明Topic, Partition, Offset, Fetchsize四個參數(shù),Topic是指要處理什么主題的消息,Partition是指要處理該Topic下哪個存儲分區(qū)的消息,Offset是指從該存儲分區(qū)的哪個位置開始取消息,F(xiàn)etchsize是指從該存儲分區(qū)的Offset處取多少長度的消息。在這四個參數(shù)中,Topic, Partition和Offset參數(shù)已經(jīng)在上面和消息管理設備400的交互過程中獲得,F(xiàn)etchsize參數(shù)可以由消息獲取器308根據(jù)消息處理設備300本身的狀況來決定。消息處理設備300的消息獲取器308將生成的消息獲取請求發(fā)送給相應的消息存儲設備200的一個示例代碼如下SzkCluster = ' Iocalhost:2181;;$topic =' test';$Consumer = new Kafka_Consumer ($zkCluster, $topic);$msg = $ Consumer- > fetchMsg ();本領域技術人員可以理解,以上傳遞消息獲取請求的代碼僅僅是一個示例,任何可以實現(xiàn)將消息處理設備300產(chǎn)生的消息獲取請求發(fā)送到消息存儲設備200的代碼實現(xiàn)都在本發(fā)明的保護范圍內(nèi)。需要說明的是,消息處理設備300所要處理的消息大小Fetchsize —般是一個固定值,如IM(兆)。Fetchsize可以保存在消息處理設備300本地,在這種情況下,消息獲取器308在生成消息獲取請求時,只需在消息處理設備300的本地磁盤中查詢Fetchsize即可。本領域技術人員可以理解,F(xiàn)etchsize也可保存在消息管理設備400的消息分布狀態(tài)存儲器402中,這種情況下,可以在分區(qū)狀態(tài)查詢器403從分布狀態(tài)存儲器402查詢信息來處理消息獲取請求時,將Fetchsize與有關存儲分區(qū)的信息一起獲取并發(fā)送給消息處理設備300的消息位置管理器306。當然,也可由消息處理設備300的存儲信息獲取器302或消息位置管理器306生成Fetchsize獲取請求,再將Fetchsize獲取請求發(fā)生到消息管理設備400,進而從消息管理設備400中的消息分布狀態(tài)存儲器402查詢獲取所要處理的消息大小Fetchsize0消息存儲設備200在接收到消息處理設備300的消息獲取器308生成的消息獲取請求后,查詢與該消息獲取請求中的Topic和Partition對應的存儲分區(qū),并從該存儲分區(qū)從Offset指定的位置開始截取長度為Fetchsize的消息,然后將查詢的消息返回給消息處理設備300。在又一個實施例中,消息處理設備300還包括消息處理器,消息處理器對消息存儲設備200返回的消息按消息格式進行解析,假如解析得到三條消息及其長度分別是msgl, Ienl ;msg2, len2 ;msg3, len3,那么消息處理器依次處理這三條消息。
在又一個實施例中,消息處理設備300還包括消息位置更新器。在消息處理器成功處理消息后,消息位置更新器生成消息位置更新請求,并經(jīng)由傳輸接口 304將所生成的消息位置更新請求發(fā)送給消息管理設備400,消息位置更新請求包括消息處理器最近一次或多次成功處理的消息大小及該消息所在的存儲分區(qū)信息。消息管理設備400的傳輸接口 404在接收到來自消息處理設備300的消息位置更新請求后,轉發(fā)給消息位置管理器408。消息位置管理器408基于消息位置更新請求中的消息大小,更新消息分布狀態(tài)存儲器402中、與消息位置更新請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息。在具體實現(xiàn)當前要處理的消息的位置信息offset的更新時,可以有多種方式。例如,消息位置更新器可以在消息處理器每成功處理完一條消息,就生成包含所處理消息大小的消息位置更新請求,如當消息處理器成功處理完消息msgl時,消息位置更新器生成包含msgl的大小Ienl的消息位置更新請求,消息管理設備400的消息位置管理器408將新的位置信息offset+lenl存入到消息分布狀態(tài)存儲器402中的節(jié)點/consumer/offset/bl-pl中。當消息處理器成功處理完第二條消息msg2時,消息位置更新器生成包含msg2的大小len2的消息位置更新請求,消息管理設備400的消息位置管理器408再在新的offset上再加上len2,并更新消息分布狀態(tài)存儲器402中的節(jié)點/consumer/offset/bl-pl 的內(nèi)容。如果對于對安全性要求不高的主題,可以在消息處理器成功處理完多條消息后,再由消息位置更新器生成消息位置更新請求更新消息管理設備400的消息分布狀態(tài)存儲器402中相應存儲分區(qū)的offset。例如,在上面的例子中,也可在消息處理器成功處理完三條消息msgl、msg2、msg3后,消息位置更新器再生成包含三條消息大小Ienl+len2+len3的消息位置更新請求并發(fā)送給消息管理設備400,消息管理設備400的消息位置管理器408將新的位置信息offset+lenl+len2+len3存入到消息分布狀態(tài)存儲器402中節(jié)點/consumer/offset/bl-pl中,對offset進行更新,這樣可以增加一些效率。通過以上本發(fā)明的多個實施例可以看出,本發(fā)明實施例通過將每個存儲分區(qū)中有關消息處理設備當前要處理的消息的位置信息offset保存在消息管理設備中,避免了消息處理設備每次處理消息時需要在本地來計算offset,可以降低消息處理設備的使用成本,提高其資源的利用效率。進一步,因為在消息管理設備400上存儲有每個消息存儲設備200中有關存儲分區(qū)的信息、以及每個存儲分區(qū)中有關消息處理設備300當前要處理的消息的位置信息,因此當消息處理設備300獲取要處理的消息時,只需從消息管理設備400查詢消息處理設備300處理的主題下的消息在消息存儲設備200上的存儲分區(qū)信息,以及消息處理設備300在相應的存儲分區(qū)的當前要處理的消息的位置信息,即可發(fā)送消息獲取請求從消息存儲設備200獲取相應的消息進行處理,這樣,即使消息處理設備300發(fā)生故障,在消息處理設備300恢復正常后,仍然可以緊接上次成功處理消息的位置獲取消息進行處理,避免了消息的重復處理或遺漏。與前述本發(fā)明一個實施例分布式消息處理系統(tǒng)相對應,圖4示出了根據(jù)本發(fā)明一個實施例的適于在分布式消息處理系統(tǒng)中的消息管理設備上執(zhí)行的消息管理方法的流程圖。該分布式消息處理系統(tǒng)包括一個或多個如圖2實施例所描述的消息產(chǎn)生設備100、一個 或多個如圖2實施例所描述的消息存儲設備200、一個或多個如圖2實施例所描述的消息處理設備300以及如圖2實施例所描述的消息管理設備400。該消息管理方法適于在圖2實施例所描述的消息管理設備400上執(zhí)行。該消息管理方法始于步驟S410,在步驟S410中,接收消息處理設備發(fā)送的消息處理請求,該消息處理請求至少包括所請求處理消息的主題。本步驟可以通過前述消息管理設備400中的傳輸接口 404來執(zhí)行,相關的技術實現(xiàn)可以參考前述消息管理設備400中的傳輸接口 404在各實施例中的相關描述,此處不再贅述。在步驟S410接收到消息處理請求后,步驟S420在消息管理設備中查詢與消息處理請求中的主題相對應的存儲分區(qū)信息,并將所查詢到的存儲分區(qū)信息發(fā)送給相應的消息處理設備。具體而言,由于消息管理設備中通常存儲有每個消息存儲設備中有關存儲分區(qū)的信息、以及每個存儲分區(qū)中有關消息處理設備當前要處理的消息的位置信息,因此,在本步驟中,可以根據(jù)消息處理請求中指定的消息的主題,從消息管理設備中查詢該主題下的消息存儲在哪個或哪些消息存儲設備的哪個或些存儲分區(qū)上。例如,假定查詢到共有5個存儲分區(qū)存儲該主題的消息,每個存儲分區(qū)用broker_id-pa;rtition_id標識,分別是bl-pl,bl-p2,b2-pl,b2-p2,b3_pl,則將查詢到的包含這5個存儲分區(qū)標識的存儲分區(qū)信息發(fā)送給相應的消息處理設備。當消息管理設備中還存儲有消息處理設備所要處理的消息的大小時,還可在查詢有關存儲分區(qū)信息的同時,查詢相應消息處理設備所要處理的消息的大小,一并發(fā)送給相應的消息處理設備。本步驟可以通過前述消息管理設備400中的分區(qū)狀態(tài)查詢器406來執(zhí)行,相關的技術實現(xiàn)可以參考前述分區(qū)狀態(tài)查詢器406在各實施例中的相關描述,此處不再贅述。通過步驟S420,消息處理設備已經(jīng)獲得了其要處理的主題下的消息的存儲分區(qū)信息,因此后續(xù)消息處理設備就會根據(jù)選擇的存儲分區(qū)信息生成消息位置查詢請求,并發(fā)送給消息管理設備。于是,在步驟S430中處理來自消息處理設備的消息位置查詢請求。例如,在消息管理設備中查詢與該消息位置查詢請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息,然后將查詢到的位置信息發(fā)送給相應消息處理設備。在具體實現(xiàn)本步驟時可以有多種方式,例如,假定消息處理設備獲取的存儲分區(qū)共有5個,分別是bl-pl,bl-p2,b2-pl,b2-p2,b3-pl,依次輪流從這5個存儲分區(qū)中選擇一個存儲分區(qū)生成消息位置查詢請求,如果當前要查詢bl-pl存儲分區(qū)當前要處理的消息的位置信息,則生成包含bl-pl存儲分區(qū)的消息位置查詢請求給消息管理設備,在步驟S430中從消息管理設備中相應的節(jié)點/consumer/offset/bl-pl查詢到bl-pl存儲分區(qū)當前要處理的消息的位置信息offset,并發(fā)送給相應的消息處理設備。如果消息管理設備中不存在該節(jié)點,則將bl-pl存儲分區(qū)當前要處理的消息的位置信息的初始值設為0,并發(fā)送給相應的消息處理設備。另外,也可以將不存在該節(jié)點的信息直接發(fā)送給消息處理設備,由消息處理設備將b l-pl存儲分區(qū)當前要處理的消息位置信息的初始值設為O。本步驟可以通過前述消息管理設備400中的消息位置管理器408來執(zhí)行,相關的技術實現(xiàn)可以參考前述消息位置管理器408在各實施例中的相關描述,此處不再贅述。通過步驟S430,消息處理設備已經(jīng)獲得了所選擇的存儲分區(qū)的當前要處理的消息的位置信息,因此可以據(jù)此從消息存儲設備的相應存儲分區(qū)獲取相應的消息,并對消息進行處理。由于消息處理設備對消息的處理會導致后續(xù)處理消息的位置信息的變化,因此消息處理設備會向消息管理設備發(fā)送消息位置更新請求。具體而言,在步驟S440中,處理來自消息處理設備的消息位置更新請求,基于消息位置更新請求中的消息大小,更新消息管理設備中、與消息位置更新請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息。在更新消息管理設備中相應存儲分區(qū)的當前要處理的消息位置信息offset時,消息處理設備可以在每成功處理完一條消息,就發(fā)送消息位置更新請求更新消息管理設備中相應存儲分區(qū)的offset。例如當消息處理設備成功處理完消息msgl時,消息管理設備根據(jù)消息處理設備發(fā)送的包含Ienl的消息位置更新請求,將新的位置信息offset+lenl存入到消息管理設備的相應節(jié)點/consumer/offset/bl-pl中;當消息處理設備成功處理完第二條消息msg2時,消息管理設備根據(jù)消息處理設備發(fā)送的包含len2的消息位置更新請求,在新的offset上再加上len2,并更新相應消息管理設備中的內(nèi)容。如果對于對安全性要求不高的主題,可以在消息處理設備成功處理完多條消息后再更新相應消息管理設備中的offset,例如,在上面的例子中,也可以在消息處理設備成功處理完三條消息后,消息管理設備根據(jù)消息處理設備發(fā)送的包含Ienl+len2+len3的消息位置更新請求,將新的位置信息offset+lenl+len2+len3存入到消息管理設備的相應節(jié)點/consumer/offset/bl-pl中,這樣可以增加一些效率。步驟S430可以通過前述消息管理設備400中的消息位置管理器408來執(zhí)行,相關的技術實現(xiàn)可以參考前述消息位置管理器408在各實施例中的相關描述,此處不再贅述。上述實施例中,由于在消息管理設備上存儲有每個消息存儲設備中有關存儲分區(qū)的信息、以及每個存儲分區(qū)中有關消息處理設備當前要處理的消息的位置信息,當消息處理設備獲取要處理的消息時,只需從消息管理設備查詢消息處理設備處理的主題下的消息在消息存儲設備上的存儲分區(qū)信息,以及消息處理設備在相應的存儲分區(qū)的當前要處理的消息的位置信息,即可發(fā)送消息獲取請求從消息存儲設備獲取相應的消息進行處理,這樣,即使消息處理設備發(fā)生故障,在消息處理設備恢復正常后,仍然可以緊接上次成功處理消息的位置獲取消息進行處理,避免了消息的重復處理或遺漏。與前述本發(fā)明一個實施例分布式消息處理系統(tǒng)相對應,圖5不出了根據(jù)本發(fā)明一個實施例的適于在分布式消息處理系統(tǒng)中的消息處理設備上執(zhí)行的消息處理方法的流程圖。該分布式消息處理系統(tǒng)包括一個或多個如圖2實施例所描述的消息產(chǎn)生設備100、一個或多個如圖2實施例所描述的消息存儲設備200、一個或多個如圖2實施例所描述的消息處理設備300以及如圖2實施例所描述的消息管理設備400。該消息處理方法適于在圖2實施例所描述的消息處理設備300上執(zhí)行。該消息處理方法始于步驟S510,在步驟S510中,生成消息處理請求,消息處理請求至少包括所請求處理消息的主題。具體而言,消息處理設備根據(jù)要處理的消息主題生成消息處理請求。本步驟可以通過前述消息處理設備300中的存儲信息獲取器302來執(zhí)行,相關的技術實現(xiàn)可以參考前述存儲信息獲取器202在各實施例中的相關描述,此處不再贅述。進而,在步驟S520中,將步驟S510中生成的消息處理請求發(fā)送給消息管理設備,并接收消息管理設備發(fā)送的與消息處理請求中的主題相對應的一個或者多個存儲分區(qū)信息。在將消息處理請求發(fā)送給消息管理設備后,消息管理設備根據(jù)消息處理請求中指定的主題,查詢出與該主題相對應的一個或者多個存儲分區(qū)信息,并發(fā)送給相應的消息處理設備。本步驟可以通過前述消息處理設備300中的傳輸接口 304來執(zhí)行,相關的技術實現(xiàn)可以參考前述消息處理設備300中的傳輸接口 304在各實施例中的相關描述,此處不再贅述。
此后,在步驟S530中,先從步驟S520獲取的一個或者多個存儲分區(qū)信息中選擇一個存儲分區(qū)信息,然后獲取所選擇的存儲分區(qū)信息對應的當前要處理消息的位置信息。具體而言,可以通過如下方式實現(xiàn)從步驟S520獲取的一個或者多個存儲分區(qū)信息中依次選擇一個存儲分區(qū)信息(該步驟可以通過前述的選擇模塊來執(zhí)行)。例如,可以是先從一個或者多個存儲分區(qū)信息中依次隨機選擇一個存儲分區(qū)信息,也可以是按照消息存儲設備的編號及在相應的消息存儲設備上的存儲分區(qū)的編號依次選擇一個存儲分區(qū)信息;然后根據(jù)所選擇的存儲分區(qū)信息生成消息位置查詢請求并發(fā)送給消息管理設備,消息位置查詢請求包括所選擇的存儲分區(qū)信息,以從消息管理設備中獲取與所選擇的存儲分區(qū)信息對應的當前要處理消息的位置信息(該步驟可用通過前面的消息位置查詢模塊來執(zhí)行)。步驟S530可以通過前述消息處理設備300中的消息位置管理器306來執(zhí)行,相關的技術實現(xiàn)可以參考前述消息處理設備300中的消息位置管理器306在各實施例中的相關描述,此處不再贅述。然后,在步驟S540中,根據(jù)步驟S520和S530獲得的存儲分區(qū)信息和相應的存儲分區(qū)中當前要處理的消息的位置信息生成消息獲取請求,該消息獲取請求包括所請求處理消息的主題、所選擇的存儲分區(qū)、該存儲分區(qū)的當前要處理消息的位置信息和所要處理的消息大小。本步驟可以通過前述消息處理設備300中的消息獲取器308來執(zhí)行,相關的技術實現(xiàn)可以參考前述消息處理設備300中的消息獲取器器308在各實施例中的相關描述,此處不再贅述。最后,在步驟S550中,將步驟S540生成的消息獲取請求發(fā)送給對應的存儲分區(qū)所在的消息存儲設備,以及接收該存儲分區(qū)所在的消息存儲設備返回的對應于該消息獲取請求的消息。本步驟可以通過前述消息處理設備300中的傳輸接口 304來執(zhí)行,相關的技術實現(xiàn)可以參考前述消息處理設備300中的傳輸接口 304在各實施例中的相關描述,此處不再贅述。此外,需要指出的是,在執(zhí)行步驟S520時,也可以將消息處理請求和消息位置查詢請求同時發(fā)送給消息管理設備。例如,假定消息管理設備根據(jù)消息處理請求查詢到共有5個存儲分區(qū)存儲某主題下的消息,消息管理設備還可以根據(jù)查詢到的結果,進一步查詢這5個存儲分區(qū)當前分別要處理的消息位置信息,并將這5個存儲分區(qū)當前分別要處理的消息位置信息同時應步驟S520的請求返回給消息處理設備。這樣,步驟S530同樣可以依次輪流從這5個存儲分區(qū)選擇一個存儲分區(qū)及相應的存儲分區(qū)中當前要處理的消息的位置信息。上述消息處理方法還可以包括以下步驟對接收到的對應于消息獲取請求的消息進行處理。例如,對消息存儲設備根據(jù)消息獲取請求返回的相應的消息按消息格式進行解析,假如解析得到三條消息及其長度分別是msgl, Ienl ;msg2, len2 ;msg3, len3,對這三條消息依次進行處理。本步驟可以通過前述消息處理設備300中的消息處理器來執(zhí)行,相關的技術實現(xiàn)可以參考前述消息處理設備300中的消息處理器在各實施例中的相關描述,此處不再贅述。上述消息處理方法還包括以下步驟生成消息位置更新請求并發(fā)送給消息管理設備,消息位置更新請求包括最近一次或多次成功處理的消息大小及該消息所在的存儲分區(qū)信息。在本步驟中,可以有多種實現(xiàn)方式,例如,可以在每成功處理完一條消息,就發(fā)送包含所處理消息大小的消息位置更新請求給消息管理設備,消息管理設備更新相應存儲分區(qū)的當前要處理的消息位置信息offset。例如當成功處理完消息msgl時,生成包含msgl 的大小Ienl的消息位置更新請求,并發(fā)送給消息管理設備,消息管理設備將新的位置信息offset+lenl存入到相應節(jié)點/consumer/offset/bl-pl中;當成功處理完第二條消息msg2時,生成包含msg2的大小len2的消息位置更新請求,并發(fā)送給消息管理設備,消息管理設備再在新的offset上再加上len2,并更新相應節(jié)點/consumer/offset/b I-pi的內(nèi)容。在另一種實現(xiàn)方式中,如果對于對安全性要求不高的主題,可以在成功處理完多條消息后,再生成消息位置更新請求更新消息管理設備中相應存儲分區(qū)的offset,例如,在上面的例子中,也可在成功處理完三條消息mSgl、mSg2、mSg3后,再生成包含三條消息大小Ienl+len2+len3的消息位置更新請求并發(fā)送給消息管理設備,消息管理設備將新的位置信息 offset+lenl+len2+len3 存入到相應節(jié)點 /consumer/offset/bl-pl 中,對 offset 進行更新,這樣可以增加一些效率。本步驟可通過前述消息處理設備300中的消息位置更新器來執(zhí)行,相關的技術實現(xiàn)可以參考前述消息處理設備300中的消息位置更新器在各實施例中的相關描述,此處不再贅述。上述實施例中,由于消息管理設備上存儲有每個消息存儲設備中有關存儲分區(qū)的信息、以及每個存儲分區(qū)中有關消息處理設備當前要處理的消息的位置信息,因此當消息處理設備獲取要處理的消息時,只需從消息管理設備查詢消息處理設備處理的主題下的消息在消息存儲設備上的存儲分區(qū)信息,以及消息處理設備在相應的存儲分區(qū)的當前要處理的消息的位置信息,即可發(fā)送消息獲取請求從消息存儲設備獲取消息進行處理,這樣,即使消息處理設備發(fā)生故障,在消息處理設備恢復正常后,仍然可以緊接上次成功處理消息的位置獲取消息進行處理,避免了消息的重復處理或遺漏。在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類系統(tǒng)所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。類似地,應當理解,為了精簡本說明書公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式
的權利要求書由此明確地并入該具體實施方式
,其中每個權利要求本身都作為本發(fā)明的單獨實施例。本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有 特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的設備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。本申請可以應用于計算機系統(tǒng)/服務器,其可與眾多其它通用或專用計算系統(tǒng)環(huán)境或配置一起操作。適于與計算機系統(tǒng)/服務器一起使用的眾所周知的計算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于個人計算機系統(tǒng)、服務器計算機系統(tǒng)、瘦客戶機、厚客戶機、手持或膝上設備、基于微處理器的系統(tǒng)、機頂盒、可編程消費電子產(chǎn)品、網(wǎng)絡個人電腦、小型計算機系統(tǒng)、大型計算機系統(tǒng)和包括上述任何系統(tǒng)的分布式云計算技術環(huán)境,等等。計算機系統(tǒng)/服務器可以在由計算機系統(tǒng)執(zhí)行的計算機系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括例程、程序、目標程序、組件、邏輯、數(shù)據(jù)結構等等,它們執(zhí)行特定的任務或者實現(xiàn)特定的抽象數(shù)據(jù)類型。計算機系統(tǒng)/服務器可以在分布式云計算環(huán)境中實施,分布式云計算環(huán)境中,任務是由通過通信網(wǎng)絡鏈接的遠程處理設備執(zhí)行的。 在分布式云計算環(huán)境中,程序模塊可以位于包括存儲設備的本地或遠程計算系統(tǒng)存儲介質(zhì)上。
權利要求
1.一種在分布式消息處理系統(tǒng)中的消息管理設備,該分布式消息處理系統(tǒng)還包括一個或多個消息存儲設備和一個或多個消息處理設備,其中每條消息具有相應的主題,所述消息存儲設備為相應主題建立一個或者多個存儲分區(qū),并且根據(jù)消息的主題將消息存儲在相應主題的存儲分區(qū)之一中,所述消息管理設備包括 消息分布狀態(tài)存儲器,被配置為至少存儲每個消息存儲設備中有關存儲分區(qū)的信息、以及每個存儲分區(qū)中有關消息處理設備當前要處理的消息的位置信息; 傳輸接口,被配置為接收消息處理設備發(fā)送的消息處理請求,所述消息處理請求至少包括所請求處理消息的主題; 分區(qū)狀態(tài)查詢器,被配置為在所述消息分布狀態(tài)存儲器中查詢與所述消息處理請求中的主題相對應的存儲分區(qū)信息,并經(jīng)由所述傳輸接口將所查詢到的存儲分區(qū)信息發(fā)送給相應消息處理設備;以及 消息位置管理器,被配置為處理通過所述傳輸接口接收的、來自消息處理設備的消息位置查詢請求,從所述消息分布狀態(tài)存儲器中獲取與該消息位置查詢請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息、并經(jīng)由所述傳輸接口發(fā)送給相應消息處理設備;以及被配置為處理通過所述傳輸接口接收的、來自消息處理設備的消息位置更新請求,基于所述消息位置更新請求中的消息大小,更新所述消息分布狀態(tài)存儲器中、與所述消息位置更新請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息。
2.如權利要求I所述的消息管理設備,其中所述消息分布狀態(tài)存儲器中還存儲有消息處理設備每次所要處理的消息的大??; 所述分區(qū)狀態(tài)查詢器還被配置為在所述消息分布狀態(tài)存儲器中查詢相應消息處理設備所要處理的消息的大小,并通過所述傳輸接口發(fā)送給相應消息處理設備。
3.—種消息管理方法,該方法適于在分布式消息處理系統(tǒng)中的消息管理設備上執(zhí)行,該分布式消息處理系統(tǒng)還包括一個或多個消息存儲設備和一個或多個消息處理設備,其中每條消息具有相應的主題,所述消息存儲設備為相應主題建立一個或者多個存儲分區(qū),并且根據(jù)消息的主題將消息存儲在相應主題的存儲分區(qū)之一中,所述消息管理方法包括 接收消息處理設備發(fā)送的消息處理請求,所述消息處理請求至少包括所請求處理消息的主題; 查詢與所述消息處理請求中的主題相對應的存儲分區(qū)信息,并將所查詢到的存儲分區(qū)信息發(fā)送給相應消息處理設備,其中,所述消息管理設備中至少存儲每個消息存儲設備中有關存儲分區(qū)的信息、以及每個存儲分區(qū)中有關消息處理設備當前要處理的消息的位置信息;以及 處理來自消息處理設備的消息位置查詢請求,查詢與該消息位置查詢請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息、并發(fā)送給相應消息處理設備;以及處理來自消息處理設備的消息位置更新請求,基于所述消息位置更新請求中的消息大小,更新與所述消息位置更新請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信肩、O
4.如權利要求3所述的消息管理方法,還包括 查詢相應消息處理設備所要處理的消息的大小、并發(fā)送給相應消息處理設備,其中所述消息管理設備中還存儲有消息處理設備每次所要處理的消息的大小。
全文摘要
本發(fā)明公開了一種在分布式消息處理系統(tǒng)中的消息管理設備和方法。其中消息管理方法包括接收消息處理設備發(fā)送的消息處理請求,所述消息處理請求至少包括所請求處理消息的主題;查詢與所述消息處理請求中的主題相對應的存儲分區(qū)信息,并將所查詢到的存儲分區(qū)信息發(fā)送給相應消息處理設備;以及處理來自消息處理設備的消息位置查詢請求,查詢與該消息位置查詢請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息、并發(fā)送給相應消息處理設備;以及處理來自消息處理設備的消息位置更新請求,基于所述消息位置更新請求中的消息大小,更新與所述消息位置更新請求中的存儲分區(qū)相對應的存儲分區(qū)的當前要處理消息的位置信息。
文檔編號G06F9/50GK102955717SQ20121043638
公開日2013年3月6日 申請日期2012年11月5日 優(yōu)先權日2012年11月5日
發(fā)明者代兵, 陳超, 桂勇哲, 朱超, 王超 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1