專利名稱:分布式消息系統(tǒng)及其設(shè)備和協(xié)調(diào)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及消息處理領(lǐng)域,具體涉及一種分布式消息系統(tǒng)及其設(shè)備和協(xié)調(diào)方法。
背景技術(shù):
目前用于消息(如日志)處理的消息系統(tǒng)有很多,比較流行的是分布式消息系統(tǒng)。分布式消息系統(tǒng)的具體形式有很多,如Spread、Kafka等。下面僅以常用的一種分布式消息系統(tǒng)Kafka為例進(jìn)行說明。Kafka是用于日志處理的分布式消息系統(tǒng),主要針對(duì)日志數(shù)據(jù)容量大,但對(duì)可靠性要求不是很高的業(yè)務(wù)。這些系統(tǒng)中的日志數(shù)據(jù)主要包括用戶行為,例如,登錄、瀏覽、點(diǎn)擊、分享以及喜歡等,還包括系統(tǒng)運(yùn)行日志,例如,CPU (Central Processing Unit,中央處理器)、內(nèi)存、磁盤、網(wǎng)絡(luò)、系統(tǒng)及進(jìn)程等的運(yùn)行狀態(tài)。圖1為相關(guān)技術(shù)中Kafka系統(tǒng)架構(gòu)示意圖。該Kafka系統(tǒng)包括以下四個(gè)角色Producer (消息產(chǎn)生者,簡(jiǎn)稱PD) 11、Broker (簡(jiǎn)稱BK) 12、Consumer (消息處理者,簡(jiǎn)稱CS) 13以及Zooke印er(管理者,簡(jiǎn)稱ZK) 14,每個(gè)角色都可以是多個(gè)。Consumer 13在Kafka系統(tǒng)中負(fù)責(zé)處理消息;Producerll在Kafka系統(tǒng)中負(fù)責(zé)產(chǎn)生消息;Brokerl2是Kafka系統(tǒng)中用來存放消息的地方,負(fù)責(zé)接收Producerll發(fā)來的消息,當(dāng)Consumerl3有請(qǐng)求時(shí),將這些消息返回給Consumerl3 ;ZooKeeperl4是一個(gè)開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),包含一個(gè)簡(jiǎn)單的原語集,是Hadoop和Hbase的重要組件,分布式應(yīng)用可以使用它來實(shí)現(xiàn)諸如統(tǒng)一命名服務(wù)、配置管理、分布式鎖服務(wù)、集群管理等功能。Producerll發(fā)送消息到Broker 12,消息持久化存儲(chǔ)在Brokerl2上,Consumerl3再?gòu)腂rokerl2取得消息進(jìn)行處理。Zookeeperl4 用來存儲(chǔ) Producerll, Consumer 13,與 Brokerl2 的一些狀態(tài)信息。分布式消息系統(tǒng)基于消息的主題(Topic)來進(jìn)行消息管理。在消息存儲(chǔ)設(shè)備中也是基于Topic來進(jìn)行存儲(chǔ)的。每個(gè)Topic的消息可以存儲(chǔ)在Brokel2的一個(gè)或多個(gè)存儲(chǔ)分區(qū)(Partition)中。所有的Consumerl3以及每個(gè)Brokerl2中存有哪些Topic,以及該Topic有多少個(gè)Partition都保存在Zookeeper上。在進(jìn)行消息處理時(shí),一般由多個(gè)Consumerl3相互協(xié)作處理某個(gè)主題的消息,在Zookeeperl4還存儲(chǔ)有涉及該主題的每個(gè)Consumerl3所分配的進(jìn)行消息處理的存儲(chǔ)分區(qū)信息,每個(gè)存儲(chǔ)分區(qū)只分配給一個(gè)ConSumerl3進(jìn)行消息處理。當(dāng)有Brokerl2或者涉及同一主題的Consumerl3加入或者離開時(shí),涉及同一主題的的Consumerl3會(huì)得到通知,然后每個(gè)Consumerl3所屬的消息處理設(shè)備都會(huì)執(zhí)行一個(gè)平衡策略(Rebalancing Algorithm),這樣讓涉及同一主題的所有消息處理設(shè)備達(dá)成一致一哪個(gè)消息處理設(shè)備處理哪些存儲(chǔ)分區(qū)的消息。在上述的方法中,平衡策略的執(zhí)行發(fā)生在BrokerU發(fā)生變動(dòng)、以及涉及同一主題的Consumer 13有變動(dòng)時(shí),這會(huì)導(dǎo)致Consumer 13所屬的消息處理設(shè)備遭受驚群效應(yīng),因?yàn)橄⑻幚碓O(shè)備在進(jìn)行處理消息時(shí)時(shí)需要監(jiān)聽兩個(gè)事件(I)所處理Topic涉及的存儲(chǔ)分區(qū)數(shù)(BrokerU增加或者減少時(shí)會(huì)導(dǎo)致存儲(chǔ)分區(qū)數(shù)變動(dòng));(2)涉及同一主題的消息處理設(shè)備。因此,這兩個(gè)事件中任何一個(gè)發(fā)生改變,都會(huì)引起所有的消息處理設(shè)備分別重新計(jì)算其應(yīng)該處理的分區(qū),而這是一個(gè)比較費(fèi)時(shí)的操作。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的分布式消息系統(tǒng)及其設(shè)備和協(xié)調(diào)方法。依據(jù)本發(fā)明的一個(gè)方面,提供了一種用于分布式消息系統(tǒng)的協(xié)調(diào)設(shè)備,分布式消息系統(tǒng)還包括一個(gè)或者多個(gè)存儲(chǔ)消息的消息存儲(chǔ)設(shè)備、一個(gè)或者多個(gè)對(duì)消息進(jìn)行處理的消息處理設(shè)備和消息管理設(shè)備,其中每條消息具有相應(yīng)的主題,消息存儲(chǔ)設(shè)備為相應(yīng)的主題建立一個(gè)或者多個(gè)存儲(chǔ)分區(qū),并且根據(jù)消息的主題將消息存儲(chǔ)在相應(yīng)主題的存儲(chǔ)分區(qū)之一中;消息處理設(shè)備適于處理在某主題下的一個(gè)或者多個(gè)存儲(chǔ)分區(qū)中的消息;消息管理設(shè)備中存儲(chǔ)有與消息存儲(chǔ)設(shè)備、消息處理設(shè)備、以及消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)相關(guān)的信息;協(xié)調(diào)設(shè)備包括監(jiān)聽器,被配置為監(jiān)聽在消息管理設(shè)備處登記的消息管理設(shè)備的相關(guān)信息;第一獲取器,被配置為從消息管理設(shè)備獲取適于處理特定主題消息的消息處理設(shè)備的信息;第二獲取器,被配置為從消息管理設(shè)備獲取存儲(chǔ)特定主題消息的消息存儲(chǔ)設(shè)備中的存儲(chǔ)分區(qū)的信息;分配器,被配置為在監(jiān)聽器所監(jiān)聽的信息發(fā)生變化時(shí),根據(jù)相關(guān)信息發(fā)生變化的消息存儲(chǔ)設(shè)備涉及的一個(gè)或者多個(gè)消息主題,從第一獲取器獲取與所涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題相關(guān)的消息處理設(shè)備的信息以及從第二獲取器獲取與所涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題相關(guān)的存儲(chǔ)分區(qū)的信息,并基于所獲取的消息處理設(shè)備和存儲(chǔ)分區(qū)的信息,重新計(jì)算為所獲取的每個(gè)消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果;以及結(jié)果輸出器,被配置為將分配器的分配結(jié)果輸出到消息管理設(shè)備,以便更新每個(gè)消息處理設(shè)備的目標(biāo)存儲(chǔ)分區(qū)信息。根據(jù)本發(fā)明的又一個(gè)方面,還提供了一種分布式消息系統(tǒng),包括如上的協(xié)調(diào)設(shè)備;一個(gè)或多個(gè)存儲(chǔ)消息的消息存儲(chǔ)設(shè)備;一個(gè)或多個(gè)對(duì)消息進(jìn)行處理的消息處理設(shè)備;以及消息管理設(shè)備;其中,每條消息具有相應(yīng)的主題,所述消息存儲(chǔ)設(shè)備為每個(gè)相應(yīng)的主題建立一個(gè)或者多個(gè)存儲(chǔ)分區(qū),并且根據(jù)消息的主題將消息存儲(chǔ)在相應(yīng)主題的存儲(chǔ)分區(qū)之一中;所述消息處理設(shè)備適于處理在某主題下的一個(gè)或者多個(gè)存儲(chǔ)分區(qū)中的消息;所述協(xié)調(diào)設(shè)備適于提供為所述消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果;所述消息管理設(shè)備包括信息存儲(chǔ)器,被配置為至少存儲(chǔ)向其登記的消息存儲(chǔ)設(shè)備、消息處理設(shè)備、以及消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息;檢測(cè)器,被配置為在檢測(cè)所述消息存儲(chǔ)設(shè)備、消息處理設(shè)備的信息是否發(fā)生變化,并根據(jù)檢測(cè)結(jié)果更新所述信息存儲(chǔ)器中存儲(chǔ)的消息存儲(chǔ)設(shè)備、消息處理設(shè)備的信息;以及分配結(jié)果判斷器,被配置為接收所述協(xié)調(diào)設(shè)備發(fā)送的分配結(jié)果,其中所述分配結(jié)果包括在所述信息存儲(chǔ)器登記的某些消息處理設(shè)備所分配的處理消息的存儲(chǔ)分區(qū)信息,判斷所述分配結(jié)果中每個(gè)消息處理設(shè)備所分配的處理消息的存儲(chǔ)分區(qū)信息與所述信息存儲(chǔ)器中存儲(chǔ)的該消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息是否一致,若不一致,則對(duì)所述信息存儲(chǔ)器中存儲(chǔ)的該消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息進(jìn)行更新,并將更新后的信息發(fā)送通知給該消息處理設(shè)備。根據(jù)本發(fā)明的再一個(gè)方面,還提供了一種協(xié)調(diào)方法,適于在用于分布式消息系統(tǒng)的協(xié)調(diào)設(shè)備上執(zhí)行,分布式消息系統(tǒng)還包括一個(gè)或者多個(gè)存儲(chǔ)消息的消息存儲(chǔ)設(shè)備、一個(gè)或者多個(gè)對(duì)消息進(jìn)行處理的消息處理設(shè)備和消息管理設(shè)備,其中每條消息具有相應(yīng)的主題,消息存儲(chǔ)設(shè)備為相應(yīng)的主題建立一個(gè)或者多個(gè)存儲(chǔ)分區(qū),并且根據(jù)消息的主題將消息存儲(chǔ)在相應(yīng)主題的存儲(chǔ)分區(qū)之一中;消息處理設(shè)備適于處理在某主題下的一個(gè)或者多個(gè)存儲(chǔ)分區(qū)中的消息;消息管理設(shè)備中存儲(chǔ)有與消息存儲(chǔ)設(shè)備、消息處理設(shè)備、以及消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)相關(guān)的信息;協(xié)調(diào)方法包括監(jiān)聽在消息管理設(shè)備處登記的消息管理設(shè)備的相關(guān)信息;在所監(jiān)聽的信息發(fā)生變化時(shí),根據(jù)相關(guān)信息發(fā)生變化的消息存儲(chǔ)設(shè)備涉及的一個(gè)或者多個(gè)消息主題,從消息管理設(shè)備獲取與所涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題相關(guān)的消息處理設(shè)備的信息以及與所涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題相關(guān)的存儲(chǔ)分區(qū)的信息;基于所獲取的消息處理設(shè)備和存儲(chǔ)分區(qū)的信息,重新計(jì)算為所獲取的每個(gè)消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果;將分配結(jié)果發(fā)送給消息管理設(shè)備,以便更新每個(gè)消息處理設(shè)備的目標(biāo)存儲(chǔ)分區(qū)信息。本發(fā)明的技術(shù)方案通過監(jiān)聽在消息管理設(shè)備處登記的消息處理設(shè)備的相關(guān)信息,當(dāng)所監(jiān)聽的信息發(fā)生變化時(shí),根據(jù)相關(guān)信息發(fā)生變化的消息處理設(shè)備涉及的消息主題,獲取該消息主題相關(guān)的消息處理設(shè)備、存儲(chǔ)分區(qū)的信息,重新為適于處理該消息主題的消息處理設(shè)備分配各自進(jìn)行消息處理的存儲(chǔ)分區(qū),由于通過統(tǒng)一計(jì)算實(shí)現(xiàn)任務(wù)的分配,這樣能保證每個(gè)存儲(chǔ)分區(qū)的消息都能被處理到,而且不會(huì)出現(xiàn)同一存儲(chǔ)分區(qū)的消息同時(shí)被分配給幾個(gè)消息處理設(shè)備進(jìn)行處理,避免了同一存儲(chǔ)分區(qū)的消息被幾個(gè)消息處理設(shè)備重復(fù)處理。本發(fā)明的技術(shù)方案通過監(jiān)聽在消息管理設(shè)備處登記的消息存儲(chǔ)設(shè)備的相關(guān)信息,當(dāng)所監(jiān)聽的信息發(fā)生變化時(shí),對(duì)于相關(guān)信息發(fā)生變化的消息存儲(chǔ)設(shè)備涉及的一個(gè)或多個(gè)消息主題中的每個(gè)消息主題,獲取該消息主題相關(guān)的消息處理設(shè)備、存儲(chǔ)分區(qū)的信息,重新為適于處理該消息主題的消息處理設(shè)備分配各自進(jìn)行消息處理的存儲(chǔ)分區(qū),由于通過統(tǒng)一計(jì)算實(shí)現(xiàn)任務(wù)的分配,這樣能保證每個(gè)存儲(chǔ)分區(qū)的消息都能被處理到,而且不會(huì)出現(xiàn)同一存儲(chǔ)分區(qū)的消息同時(shí)被分配給幾個(gè)消息處理設(shè)備進(jìn)行處理,避免了同一存儲(chǔ)分區(qū)的消息被幾個(gè)消息處理設(shè)備重復(fù)處理。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式
。
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中圖1為相關(guān)技術(shù)中Kafka系統(tǒng)架構(gòu)示意圖;圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的分布式消息系統(tǒng)的示意圖;圖3為根據(jù)本發(fā)明一個(gè)實(shí)施例的消息存儲(chǔ)設(shè)備內(nèi)部存儲(chǔ)結(jié)構(gòu)的示意圖;圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的適于用于分布式消息系統(tǒng)的協(xié)調(diào)設(shè)備上執(zhí)行的協(xié)調(diào)方法的流程圖;圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的適于用于分布式消息系統(tǒng)的消息管理設(shè)備上執(zhí)行的消息管理方法的流程圖。
具體實(shí)施例方式下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的分布式消息系統(tǒng)的示意圖。如圖所示,該分布式消息系統(tǒng)包括消息產(chǎn)生設(shè)備100、消息存儲(chǔ)設(shè)備200、消息處理設(shè)備300、消息管理設(shè)備400和協(xié)調(diào)設(shè)備500。消息產(chǎn)生設(shè)備100、消息存儲(chǔ)設(shè)備200和消息處理設(shè)備300分別可以為一個(gè)或多個(gè),圖2中僅示例性給出了兩個(gè)消息產(chǎn)生設(shè)備100、兩個(gè)消息存儲(chǔ)設(shè)備200和兩個(gè)消息處理設(shè)備300,本領(lǐng)域技術(shù)人員可以理解,本發(fā)明實(shí)施例對(duì)消息產(chǎn)生設(shè)備100、消息存儲(chǔ)設(shè)備200和消息處理設(shè)備300的數(shù)目并沒有限制,同樣,本發(fā)明對(duì)其它部件的數(shù)量也沒有任何限制。消息產(chǎn)生設(shè)備100可以是網(wǎng)絡(luò)設(shè)備、服務(wù)器、計(jì)算機(jī)或其它可以產(chǎn)生消息的任何設(shè)備,這里的消息可以是任何種類信息的數(shù)據(jù),如日志數(shù)據(jù)。每條消息具有相應(yīng)的主題,如該主題可以是某種具體的用戶行為,如登錄行為、瀏覽行為、點(diǎn)擊行為、分享行為或者喜歡行為等,又如該主題可以是某種具體的系統(tǒng)運(yùn)行日志,如CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)、系統(tǒng)及進(jìn)程的運(yùn)行狀態(tài)等。例如,在一個(gè)實(shí)施例中,消息產(chǎn)生設(shè)備100為網(wǎng)絡(luò)服務(wù)器,在用戶瀏覽該網(wǎng)絡(luò)服務(wù)器的某網(wǎng)絡(luò)頁(yè)面時(shí),該網(wǎng)絡(luò)服務(wù)器隨之產(chǎn)生一條主題為瀏覽該網(wǎng)絡(luò)頁(yè)面的消息。在消息產(chǎn)生設(shè)備100產(chǎn)生消息后,將產(chǎn)生的消息發(fā)送給消息存儲(chǔ)設(shè)備200。消息產(chǎn)生設(shè)備100向消息存儲(chǔ)設(shè)備200發(fā)送消息時(shí),可以隨機(jī)發(fā)送,也可以根據(jù)用戶指定的回調(diào)函數(shù)向指定消息存儲(chǔ)設(shè)備200進(jìn)行發(fā)送。消息存儲(chǔ)設(shè)備200接收到消息產(chǎn)生設(shè)備100發(fā)送的消息后,將接收到的消息進(jìn)行存儲(chǔ)。消息存儲(chǔ)設(shè)備200有多種具體的存儲(chǔ)方式,例如,消息存儲(chǔ)設(shè)備200按照消息的主題進(jìn)行存儲(chǔ)。具體而言,可以為每個(gè)消息主題建立一個(gè)或多個(gè)存儲(chǔ)分區(qū),將接收到的每條消息存儲(chǔ)在相應(yīng)主題的存儲(chǔ)分區(qū)之一中。為了更好的介紹消息存儲(chǔ)設(shè)備200的內(nèi)部存儲(chǔ)結(jié)構(gòu),請(qǐng)同時(shí)參看圖3,其為根據(jù)本發(fā)明一個(gè)實(shí)施例的消息存儲(chǔ)設(shè)備內(nèi)部存儲(chǔ)結(jié)構(gòu)的示意圖。在圖3中,示出了第一消息存儲(chǔ)設(shè)備2001、第二消息存儲(chǔ)設(shè)備2002和第三消息存儲(chǔ)設(shè)備2003,以及每個(gè)消息存儲(chǔ)設(shè)備內(nèi)部的消息存儲(chǔ)路徑。此外,還示出了與這些消息存儲(chǔ)設(shè)備進(jìn)行信息交互的第一消息產(chǎn)生設(shè)備1001和第二消息產(chǎn)生設(shè)備1002,以及第一消息處理設(shè)備3001和第二消息處理設(shè)備3002。第一消息產(chǎn)生設(shè)備1001和第二消息產(chǎn)生設(shè)備1002產(chǎn)生的主題為Topicl以及Topic2的消息,會(huì)被發(fā)送到可以用來存儲(chǔ)Topicl的消息和Topic2的消息的第一消息存儲(chǔ)設(shè)備2001、第二消息存儲(chǔ)設(shè)備2002和第三消息存儲(chǔ)設(shè)備2003。因?yàn)榉植际较⑻幚硐到y(tǒng)基于消息的主題(Topic)來進(jìn)行消息管理,所以相應(yīng)的,在消息存儲(chǔ)設(shè)備中也是基于Topic來進(jìn)行存儲(chǔ)的。每個(gè)Topic的消息可以存儲(chǔ)在一個(gè)或多個(gè)存儲(chǔ)分區(qū)(Partition)中,當(dāng)存儲(chǔ)在多個(gè)存儲(chǔ)分區(qū)時(shí),這些多個(gè)存儲(chǔ)分區(qū)可以位于一個(gè)消息存儲(chǔ)設(shè)備上,也可以位于多個(gè)消息存儲(chǔ)設(shè)備上。在圖3中,主題為Topicl的消息存儲(chǔ)在第一消息存儲(chǔ)設(shè)備2001中Topicl下的存儲(chǔ)分區(qū)parti和存儲(chǔ)分區(qū)part2、第二消息存儲(chǔ)設(shè)備2002中Topicl下的存儲(chǔ)分區(qū)parti和存儲(chǔ)分區(qū)part2,以及第三消息存儲(chǔ)設(shè)備2003中Topicl下的存儲(chǔ)分區(qū)parti和存儲(chǔ)分區(qū)part2。主題為Topic2的消息存儲(chǔ)在第一消息存儲(chǔ)設(shè)備2001中Topic2下的存儲(chǔ)分區(qū)part1、第二消息存儲(chǔ)設(shè)備2002中Topic2下的存儲(chǔ)分區(qū)partl,以及第三消息存儲(chǔ)設(shè)備2003中Topic2下的存儲(chǔ)分區(qū)parti。存儲(chǔ)分區(qū)中的消息id (Identity,身份標(biāo)識(shí))由其邏輯位置決定,即從消息id可直接定位到消息的存儲(chǔ)位置,避免id到存儲(chǔ)位置的額外映射。上面通過圖3詳細(xì)介紹了圖2中消息存儲(chǔ)設(shè)備200的一種內(nèi)部存儲(chǔ)結(jié)構(gòu),下面再回到圖2所示的實(shí)施例。消息存儲(chǔ)設(shè)備200在運(yùn)行時(shí),向消息管理設(shè)備400登記,將其存儲(chǔ)的消息涉及的一個(gè)或多個(gè)主題、涉及每個(gè)主題的存儲(chǔ)分區(qū)信息、以及每次存儲(chǔ)分區(qū)更新的信息發(fā)送給消息管理設(shè)備400,此外,還可將其物理位置標(biāo)識(shí)發(fā)送給消息管理設(shè)備400,由消息管理設(shè)備400保存,其中存儲(chǔ)分區(qū)更新包括該消息存儲(chǔ)設(shè)備200上存儲(chǔ)分區(qū)的增加或減少,物理位置標(biāo)識(shí)可包括消息存儲(chǔ)設(shè)備200的主機(jī)名、所在機(jī)房等信息。為提高消息處理的效率,可將存儲(chǔ)該主題的消息的存儲(chǔ)分區(qū)分配給多個(gè)消息處理設(shè)備300進(jìn)行消息處理,其中每個(gè)存儲(chǔ)分區(qū)分配給一個(gè)消息處理設(shè)備300進(jìn)行消息處理。消息處理設(shè)備300在運(yùn)行時(shí),向消息管理設(shè)備400登記,將其處理的消息主題以及所處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息發(fā)送給消息管理設(shè)備400。此外,還可將其物理位置標(biāo)識(shí)發(fā)送給消息管理設(shè)備400,由消息管理設(shè)備400保存,其中物理位置標(biāo)識(shí)可包括消息處理設(shè)備300的主機(jī)名、所在機(jī)房等信息。當(dāng)處理某主題的消息的消息處理設(shè)備300加入或退出時(shí),需要對(duì)涉及該主題的消息處理設(shè)備300處理消息的目標(biāo)存儲(chǔ)分區(qū)進(jìn)行重新分配;以及當(dāng)消息存儲(chǔ)設(shè)備200加入或退出,或消息存儲(chǔ)設(shè)備200的存儲(chǔ)分區(qū)增加或減少時(shí),將導(dǎo)致所涉及的一個(gè)或多個(gè)主題中每個(gè)主題的存儲(chǔ)分區(qū)發(fā)生變化,也需要對(duì)涉及該主題的消息處理設(shè)備300處理消息的目標(biāo)存儲(chǔ)分區(qū)進(jìn)行重新分配。而具體如何將涉及某主題的存儲(chǔ)分區(qū)重新分配給多個(gè)消息處理設(shè)備300進(jìn)行消息處理,將通過消息管理設(shè)備400和協(xié)調(diào)設(shè)備500相互協(xié)作來執(zhí)行。由于消息管理設(shè)備400中的各部件和協(xié)調(diào)設(shè)備500中的各部件信息交互較多,因此下面先概括介紹消息管理設(shè)備400中所包括的各部件,以及協(xié)調(diào)設(shè)備500包括的各部件,然后在具體信息交互過程中對(duì)涉及到的各部件再進(jìn)行更詳細(xì)的介紹。消息管理設(shè)備400包括信息存儲(chǔ)器402、檢測(cè)器404和分配結(jié)果判斷器406。協(xié)調(diào)設(shè)備500包括分配器504、第一獲取器506、第二獲取器508和結(jié)果輸出器510,其中,在圖2中還示出了第一監(jiān)聽器502和第二監(jiān)聽器512,協(xié)調(diào)設(shè)備500可以只包括第一監(jiān)聽器502或第二監(jiān)聽器512,也可以同時(shí)包括第一監(jiān)聽器502和第二監(jiān)聽器512。消息管理設(shè)備400的檢測(cè)器404檢測(cè)向信息存儲(chǔ)器402登記的消息存儲(chǔ)設(shè)備200、消息處理設(shè)備300的信息是否發(fā)生變化,在具體實(shí)現(xiàn)時(shí),可通過與消息存儲(chǔ)設(shè)備200、消息處理設(shè)備300分別建立長(zhǎng)連接,并定時(shí)檢測(cè)該長(zhǎng)連接是否斷開來檢測(cè)消息存儲(chǔ)設(shè)備200、消息處理設(shè)備300是當(dāng)前連接可用還是已退出,并根據(jù)檢測(cè)結(jié)果更新信息存儲(chǔ)器402中存儲(chǔ)的消息存儲(chǔ)設(shè)備200、消息處理設(shè)備300的信息。第一監(jiān)聽器502監(jiān)聽在消息管理設(shè)備400的信息存儲(chǔ)器402中登記的消息處理設(shè)備300的相關(guān)信息。當(dāng)信息存儲(chǔ)器402中消息處理設(shè)備300的相關(guān)信息發(fā)生更新時(shí),將相關(guān)信息發(fā)生變化的消息處理設(shè)備300所涉及的消息主題發(fā)送給第一監(jiān)聽器502,其中消息處理設(shè)備300的相關(guān)信息包括消息處理設(shè)備300是否增加或刪除、消息處理設(shè)備300要處理的消息主題是否改變等。消息存儲(chǔ)設(shè)備200的相關(guān)信息包括消息存儲(chǔ)設(shè)備200是否增加或刪除、消息存儲(chǔ)設(shè)備200的存儲(chǔ)分區(qū)是否增加或刪除等。第一監(jiān)聽器502將接收的相關(guān)信息發(fā)生變化的消息處理設(shè)備300所涉及的消息主題發(fā)送給分配器504,分配器504根據(jù)相關(guān)信息發(fā)生變化的消息處理設(shè)備300涉及的消息主題,通過第一獲取器506從消息管理設(shè)備400的信息存儲(chǔ)器402獲取與該消息主題相關(guān)的消息處理設(shè)備300的信息,以及通過第二獲取器508從消息管理設(shè)備400的信息存儲(chǔ)器402獲取與該消息主題相關(guān)的存儲(chǔ)分區(qū)的信息。第二監(jiān)聽器512監(jiān)聽在消息管理設(shè)備400的信息存儲(chǔ)器402中登記的消息存儲(chǔ)設(shè)備200的相關(guān)信息,當(dāng)信息存儲(chǔ)器402更新消息存儲(chǔ)設(shè)備200的相關(guān)信息時(shí),將相關(guān)信息發(fā)生變化的消息存儲(chǔ)設(shè)備200所涉及的消息主題發(fā)送給第二監(jiān)聽器512。第二監(jiān)聽器512將接收的相關(guān)信息發(fā)生變化的消息存儲(chǔ)設(shè)備200所涉及的一個(gè)或多個(gè)消息主題發(fā)送給分配器504,對(duì)于相關(guān)信息發(fā)生變化的消息存儲(chǔ)設(shè)備200涉及的一個(gè)或多個(gè)消息主題中的每個(gè)消息主題,分配器504通過第一獲取器506從消息管理設(shè)備400的信息存儲(chǔ)器402獲取與該消息主題相關(guān)的消息處理設(shè)備300的信息,以及通過第二獲取器508從消息管理設(shè)備400的信息存儲(chǔ)器402獲取與該消息主題相關(guān)的存儲(chǔ)分區(qū)的信息。協(xié)調(diào)設(shè)備500的分配器504基于所獲取的消息處理設(shè)備300的信息和存儲(chǔ)分區(qū)的信息,重新計(jì)算為所獲取的每個(gè)消息處理設(shè)備300分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果。具體而言,如果第一獲取器506獲取的消息處理設(shè)備300的信息包括消息處理設(shè)備300的物理位置標(biāo)識(shí),以及第二獲取器508獲取的存儲(chǔ)分區(qū)的信息包括存儲(chǔ)分區(qū)所在的消息存儲(chǔ)設(shè)備200的物理位置標(biāo)識(shí),則分配器504可以根據(jù)所獲取的涉及同一消息主題的消息處理設(shè)備300的物理位置標(biāo)識(shí)和消息存儲(chǔ)設(shè)備200的物理位置標(biāo)識(shí)的比較結(jié)果,來將涉及該消息主題的消息存儲(chǔ)設(shè)備200的存儲(chǔ)分區(qū)分配給涉及該消息主題的消息處理設(shè)備300進(jìn)行消息處理,例如,可以優(yōu)先將消息存儲(chǔ)設(shè)備200的存儲(chǔ)分區(qū)分配給物理位置接近的消息處理設(shè)備300來進(jìn)行處理,從而將消息存儲(chǔ)設(shè)備200的存儲(chǔ)分區(qū)分配給就近位置的消息處理設(shè)備300進(jìn)行消息處理,如將消息存儲(chǔ)設(shè)備200的存儲(chǔ)分區(qū)分配給位于同一機(jī)房的消息處理設(shè)備300進(jìn)行消息處理,這樣,通過局域網(wǎng)即可進(jìn)行數(shù)據(jù)傳輸,既可增加數(shù)據(jù)傳輸?shù)乃俣?,又避免了網(wǎng)絡(luò)擁堵的出現(xiàn)。如果一個(gè)消息存儲(chǔ)設(shè)備200上具有涉及同一消息主題的多個(gè)存儲(chǔ)分區(qū),分配器504還可以優(yōu)先將該消息存儲(chǔ)設(shè)備200上涉及同一消息主題的多個(gè)存儲(chǔ)分區(qū)分配給同一個(gè)消息處理設(shè)備300進(jìn)行消息處理,這樣可以提高數(shù)據(jù)傳輸?shù)男省7峙淦?04也可以根據(jù)涉及同一消息主題的消息處理設(shè)備300處理的消息處理量,將涉及該消息主題的消息存儲(chǔ)設(shè)備200的存儲(chǔ)分區(qū)分配給涉及該消息主題的消息處理設(shè)備300進(jìn)行消息處理,使得每個(gè)消息處理設(shè)備300盡量獲得數(shù)量相同的存儲(chǔ)分區(qū)。例如,假定相關(guān)信息發(fā)生變化的消息處理設(shè)備300涉及某消息主題Topic (以下簡(jiǎn)稱T),第一獲取器506獲取到涉及T的所有消息處理設(shè)備Ci,其中i為介于I到N的自然數(shù),N為所獲取的所有消息處理設(shè)備300的數(shù)量,Ci為隨機(jī)排序;第二獲取器508獲取到涉及T的所有存儲(chǔ)分區(qū)Pj,其中j為介于I到M的自然數(shù),M為所獲取的所有存儲(chǔ)分區(qū)的數(shù)量,Pj的排序使得位于同一個(gè)消息存儲(chǔ)設(shè)備200上的存儲(chǔ)分區(qū)連在一起;則可以將i*Z到(i+l)*Z-l范圍內(nèi)的存儲(chǔ)分區(qū)分配給消息處理設(shè)備Ci,Z為M/N采用收尾法得到的整數(shù)。分配器504還可以在按照物理位置分配和/或?qū)⒁粋€(gè)消息存儲(chǔ)設(shè)備200上涉及同一消息主題的多個(gè)存儲(chǔ)分區(qū)分配給同一個(gè)消息處理設(shè)備300后,根據(jù)涉及同一消息主題的消息處理設(shè)備300處理的消息處理量,再將涉及該消息主題的剩余的存儲(chǔ)分區(qū)分配給沒有獲得處理任務(wù)的消息處理設(shè)備300,使得每個(gè)消息處理設(shè)備300盡量獲得數(shù)量相同的消費(fèi)分區(qū)。協(xié)調(diào)設(shè)備500的結(jié)果輸出器510將分配器504計(jì)算的分配結(jié)果輸出到消息管理設(shè)備400的分配結(jié)果判斷器406。分配結(jié)果判斷器406判斷接收的分配結(jié)果中每個(gè)消息處理設(shè)備300所分配的處理消息的存儲(chǔ)分區(qū)信息與信息存儲(chǔ)器402中存儲(chǔ)的該消息處理設(shè)備300處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息是否一致,若一致,則不需要任何操作,若不一致,則對(duì)信息存儲(chǔ)器402中存儲(chǔ)的該消息處理設(shè)備300處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息進(jìn)行更新,并將更新后的信息發(fā)送通知給該消息處理設(shè)備300,而消息處理設(shè)備300在收到更新后的信息后,從重新分配的存儲(chǔ)分區(qū)獲取消息進(jìn)行處理。上述實(shí)施例通過監(jiān)聽在消息管理設(shè)備處登記的消息處理設(shè)備的相關(guān)信息,當(dāng)所監(jiān)聽的信息發(fā)生變化時(shí),根據(jù)相關(guān)信息發(fā)生變化的消息處理設(shè)備涉及的消息主題,獲取該消息主題相關(guān)的消息處理設(shè)備、存儲(chǔ)分區(qū)的信息,重新為適于處理該消息主題的消息處理設(shè)備分配各自進(jìn)行消息處理的存儲(chǔ)分區(qū),由于通過統(tǒng)一計(jì)算實(shí)現(xiàn)任務(wù)的分配,這樣能保證每個(gè)存儲(chǔ)分區(qū)的消息都能被處理到,而且不會(huì)出現(xiàn)同一存儲(chǔ)分區(qū)的消息同時(shí)被分配給幾個(gè)消息處理設(shè)備進(jìn)行處理,避免了同一存儲(chǔ)分區(qū)的消息被幾個(gè)消息處理設(shè)備重復(fù)處理。與前述本發(fā)明一個(gè)實(shí)施例的分布式消息系統(tǒng)相對(duì)應(yīng),圖4不出了根據(jù)本發(fā)明一個(gè)實(shí)施例的適于用于分布式消息系統(tǒng)的協(xié)調(diào)設(shè)備上執(zhí)行的協(xié)調(diào)方法的流程圖。該分布式消息系統(tǒng)包括一個(gè)或多個(gè)如圖2實(shí)施例所描述的消息產(chǎn)生設(shè)備100、一個(gè)或多個(gè)如圖2實(shí)施例所描述的消息存儲(chǔ)設(shè)備200、一個(gè)或多個(gè)如圖2實(shí)施例所描述的消息處理設(shè)備300、如圖2實(shí)施例所描述的消息管理設(shè)備400以及如如圖2實(shí)施例所描述的協(xié)調(diào)設(shè)備500。該協(xié)調(diào)方法適于在圖2實(shí)施例所描述的協(xié)調(diào)設(shè)備500上執(zhí)行。該協(xié)調(diào)方法始于步驟S410,在步驟S410中,監(jiān)聽在消息管理設(shè)備處登記的消息處理設(shè)備和/或消息存儲(chǔ)設(shè)備的相關(guān)信息。其中消息處理設(shè)備的相關(guān)信息包括消息處理設(shè)備是否增加或刪除、消息處理設(shè)備要處理的消息主題是否改變等,消息存儲(chǔ)設(shè)備的相關(guān)信息包括消息存儲(chǔ)設(shè)備是否增加或刪除、消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)是否增加或刪除等。本步驟可以通過前述協(xié)調(diào)設(shè)備500中的第一監(jiān)聽器502和/或第二監(jiān)聽器512來執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述協(xié)調(diào)設(shè)備500中的第一監(jiān)聽器502和/或第二監(jiān)聽器512在各實(shí)施例中的相關(guān)描述,此處不再贅述。需要說明的是,在步驟S410中可以只監(jiān)聽消息處理設(shè)備的相關(guān)信息是否變化或只監(jiān)聽消息處理設(shè)備的相關(guān)信息是否變化;也可以同時(shí)監(jiān)聽消息處理設(shè)備、消息存儲(chǔ)設(shè)備的相關(guān)信息是否變化,并可以設(shè)定在同時(shí)監(jiān)聽到監(jiān)聽消息處理設(shè)備、消息存儲(chǔ)設(shè)備的相關(guān)信息發(fā)生變化時(shí),優(yōu)先處理消息存儲(chǔ)設(shè)備或消息處理設(shè)備的相關(guān)信息發(fā)生變化的情況。在步驟S410中所監(jiān)聽的信息發(fā)生變化時(shí),進(jìn)而在步驟S420中,對(duì)于相關(guān)信息發(fā)生變化的消息處理設(shè)備涉及的消息主題,或?qū)τ谛畔l(fā)生變化的消息存儲(chǔ)設(shè)備涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題,從消息管理設(shè)備獲取與消息主題相關(guān)的消息處理設(shè)備的信息以及與消息主題相關(guān)的存儲(chǔ)分區(qū)的信息。本步驟可以通過前述協(xié)調(diào)設(shè)備500中的第一獲取器506或第二獲取器508來執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述協(xié)調(diào)設(shè)備500中的第一獲取器506或第二獲取器508在各實(shí)施例中的相關(guān)描述,此處不再贅述。然后,在步驟S430中,基于步驟S420中所獲取的消息處理設(shè)備和存儲(chǔ)分區(qū)的信息,重新計(jì)算為所獲取的每個(gè)消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果。本步驟可以通過前述協(xié)調(diào)設(shè)備500中的分配器504來執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述協(xié)調(diào)設(shè)備500中的分配器504在各實(shí)施例中的相關(guān)描述,此處不再贅述。具體而言,如果步驟S420中所獲取的消息處理設(shè)備的信息包括消息處理設(shè)備的物理位置標(biāo)識(shí),所獲取的存儲(chǔ)分區(qū)的信息包括存儲(chǔ)分區(qū)所在的消息存儲(chǔ)設(shè)備的物理位置標(biāo)識(shí),在步驟S430中,可以根據(jù)所獲取的涉及同一消息主題的消息處理設(shè)備的物理位置標(biāo)識(shí)和消息存儲(chǔ)設(shè)備的物理位置標(biāo)識(shí)的比較結(jié)果來將涉及該消息主題的消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)分配給涉及該消息主題的消息處理設(shè)備進(jìn)行消息處理,例如,可以優(yōu)先將消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)分配給物理位置接近的消息處理設(shè)備來進(jìn)行處理,從而將消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)分配給就近位置的消息處理設(shè)備進(jìn)行消息處理,如將消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)分配給位于同一機(jī)房的消息處理設(shè)備進(jìn)行消息處理,這樣,通過局域網(wǎng)即可進(jìn)行數(shù)據(jù)傳輸,既可增加數(shù)據(jù)傳輸?shù)乃俣?,又避免了網(wǎng)絡(luò)擁堵的出現(xiàn)。在步驟S430中,還可以優(yōu)先將一個(gè)消息存儲(chǔ)設(shè)備上涉及同一消息主題的多個(gè)存儲(chǔ)分區(qū)分配給同一個(gè)消息處理設(shè)備進(jìn)行消息處理,這樣可以提高數(shù)據(jù)傳輸?shù)男省T诓襟ES430中,也可以根據(jù)涉及同一消息主題的消息處理設(shè)備處理的消息處理量,將涉及該消息主題的消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)分配給涉及該消息主題的消息處理設(shè)備進(jìn)行消息處理,使得每個(gè)消息處理設(shè)備盡量獲得數(shù)量相同的存儲(chǔ)分區(qū)。例如,假定相關(guān)信息發(fā)生變化的消息處理設(shè)備涉及某消息主題Topic (以下簡(jiǎn)稱T),在步驟S420中獲取到涉及T的所有消息處理設(shè)備Ci,其中i為介于I到N的自然數(shù),N為所獲取的所有消息處理設(shè)備的數(shù)量,Ci為隨機(jī)排序;在步驟S420中獲取到涉及T的所有存儲(chǔ)分區(qū)Pj,其中j為介于I到M的自然數(shù),M為所獲取的所有存儲(chǔ)分區(qū)的數(shù)量,Pj的排序使得位于同一個(gè)消息存儲(chǔ)設(shè)備上的存儲(chǔ)分區(qū)連在一起;則可以將i*Z到(i+l)*Z-l范圍內(nèi)的存儲(chǔ)分區(qū)分配給消息處理設(shè)備Ci,Z為M/N采用收尾法得到的整數(shù)。在步驟S430中,還可以在按照物理位置分配和/或?qū)⒁粋€(gè)消息存儲(chǔ)設(shè)備上涉及同一消息主題的多個(gè)存儲(chǔ)分區(qū)分配給同一個(gè)消息處理設(shè)備后,再根據(jù)涉及同一消息主題的消息處理設(shè)備處理的消息處理量,將涉及該消息主題的剩余的存儲(chǔ)分區(qū)分配給沒有獲得處理任務(wù)的消息處理設(shè)備,使得每個(gè)消息處理設(shè)備盡量獲得數(shù)量相同的消費(fèi)分區(qū)。最后,在步驟S440中,將步驟S430中計(jì)算的分配結(jié)果發(fā)送給消息管理設(shè)備,以便更新每個(gè)消息處理設(shè)備的目標(biāo)存儲(chǔ)分區(qū)信息。本步驟可以通過前述協(xié)調(diào)設(shè)備500中的結(jié)果輸出器510來執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述協(xié)調(diào)設(shè)備500中的結(jié)果輸出器510在各實(shí)施例中的相關(guān)描述,此處不再贅述。上述實(shí)施例通過監(jiān)聽在消息管理設(shè)備處登記的消息處理設(shè)備的相關(guān)信息,當(dāng)所監(jiān)聽的信息發(fā)生變化時(shí),根據(jù)相關(guān)信息發(fā)生變化的消息處理設(shè)備涉及的消息主題,獲取該消息主題相關(guān)的消息處理設(shè)備、存儲(chǔ)分區(qū)的信息,重新為適于處理該消息主題的消息處理設(shè)備分配各自進(jìn)行消息處理的存儲(chǔ)分區(qū),由于通過統(tǒng)一計(jì)算實(shí)現(xiàn)任務(wù)的分配,這樣能保證每個(gè)存儲(chǔ)分區(qū)的消息都能被處理到,而且不會(huì)出現(xiàn)同一存儲(chǔ)分區(qū)的消息同時(shí)被分配給幾個(gè)消息處理設(shè)備進(jìn)行處理,避免了同一存儲(chǔ)分區(qū)的消息被幾個(gè)消息處理設(shè)備重復(fù)處理。與前述本發(fā)明一個(gè)實(shí)施例的分布式消息系統(tǒng)相對(duì)應(yīng),圖5不出了根據(jù)本發(fā)明一個(gè)實(shí)施例的適于用于分布式消息系統(tǒng)的消息管理設(shè)備上執(zhí)行的消息管理方法的流程圖。該分布式消息系統(tǒng)包括一個(gè)或多個(gè)如圖2實(shí)施例所描述的消息產(chǎn)生設(shè)備100、一個(gè)或多個(gè)如圖2實(shí)施例所描述的消息存儲(chǔ)設(shè)備200、一個(gè)或多個(gè)如圖2實(shí)施例所描述的消息處理設(shè)備300、如圖2實(shí)施例所描述的消息管理設(shè)備400以及如如圖2實(shí)施例所描述的協(xié)調(diào)設(shè)備500。該消息管理方法適于在圖2實(shí)施例所描述的消息管理設(shè)備400上執(zhí)行。該消息管理方法始于步驟S510。在步驟S510,檢測(cè)登記的消息存儲(chǔ)設(shè)備、消息處理設(shè)備的信息是否發(fā)生變化,并根據(jù)檢測(cè)結(jié)果更新所存儲(chǔ)的消息存儲(chǔ)設(shè)備、消息處理設(shè)備的信息。其中消息處理設(shè)備的信息包括消息處理設(shè)備是否增加或刪除、消息處理設(shè)備要處理的消息主題是否改變等。消息存儲(chǔ)設(shè)備的信息包括消息存儲(chǔ)設(shè)備是否增加或刪除、消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)是否增加或刪除等。此外,消息處理設(shè)備的信息還可以包括消息處理設(shè)備的物理位置標(biāo)識(shí),存儲(chǔ)設(shè)備的信息還可以包括消息存儲(chǔ)設(shè)備的物理位置標(biāo)識(shí)。本步驟可以通過前述消息管理設(shè)備400中的檢測(cè)器404來執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述消息管理設(shè)備400中的檢測(cè)器404在各實(shí)施例中的相關(guān)描述,此處不再贅述。在步驟S520中,接收協(xié)調(diào)設(shè)備發(fā)送的分配結(jié)果,其中分配結(jié)果包括登記的某些消息處理設(shè)備所分配的處理消息的存儲(chǔ)分區(qū)信息,判斷分配結(jié)果中每個(gè)消息處理設(shè)備所分配的處理消息的存儲(chǔ)分區(qū)信息與消息管理設(shè)備中存儲(chǔ)的該消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息是否一致,若不一致,則對(duì)消息管理設(shè)備所存儲(chǔ)的該消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息進(jìn)行更新,并將更新后的信息發(fā)送通知給該消息處理設(shè)備。本步驟可以通過前述消息管理設(shè)備400中的分配結(jié)果判斷器406來執(zhí)行,相關(guān)的技術(shù)實(shí)現(xiàn)可以參考前述消息管理設(shè)備400中的分配結(jié)果判斷器406在各實(shí)施例中的相關(guān)描述,此處不再贅述。上述實(shí)施例通過監(jiān)聽在消息管理設(shè)備處登記的消息處理設(shè)備的相關(guān)信息,當(dāng)所監(jiān)聽的信息發(fā)生變化時(shí),根據(jù)相關(guān)信息發(fā)生變化的消息處理設(shè)備涉及的消息主題,獲取該消息主題相關(guān)的消息處理設(shè)備、存儲(chǔ)分區(qū)的信息,重新為適于處理該消息主題的消息處理設(shè)備分配各自進(jìn)行消息處理的存儲(chǔ)分區(qū),由于通過統(tǒng)一計(jì)算實(shí)現(xiàn)任務(wù)的分配,這樣能保證每個(gè)存儲(chǔ)分區(qū)的消息都能被處理到,而且不會(huì)出現(xiàn)同一存儲(chǔ)分區(qū)的消息同時(shí)被分配給幾個(gè)消息處理設(shè)備進(jìn)行處理,避免了同一存儲(chǔ)分區(qū)的消息被幾個(gè)消息處理設(shè)備重復(fù)處理。在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本說明書公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式
的權(quán)利要求書由此明確地并入該具體實(shí)施方式
,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。本申請(qǐng)可以應(yīng)用于計(jì)算機(jī)系統(tǒng)/服務(wù)器,其可與眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起操作。適于與計(jì)算機(jī)系統(tǒng)/服務(wù)器一起使用的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于個(gè)人計(jì)算機(jī)系統(tǒng)、服務(wù)器計(jì)算機(jī)系統(tǒng)、瘦客戶機(jī)、厚客戶機(jī)、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)個(gè)人電腦、小型計(jì)算機(jī)系統(tǒng)、大型計(jì)算機(jī)系統(tǒng)和包括上述任何系統(tǒng)的分布式云計(jì)算技術(shù)環(huán)境,等等。計(jì)算機(jī)系統(tǒng)/服務(wù)器可以在由計(jì)算機(jī)系統(tǒng)執(zhí)行的計(jì)算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或者實(shí)現(xiàn)特定的抽象數(shù)據(jù)類型。計(jì)算機(jī)系統(tǒng)/服務(wù)器可以在分布式云計(jì)算環(huán)境中實(shí)施,分布式云計(jì)算環(huán)境中,任務(wù)是由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的。在分布式云計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備的本地或遠(yuǎn)程計(jì)算系統(tǒng)存儲(chǔ)介質(zhì)上。
權(quán)利要求
1.一種用于分布式消息系統(tǒng)的協(xié)調(diào)設(shè)備,所述分布式消息系統(tǒng)還包括一個(gè)或者多個(gè)存儲(chǔ)消息的消息存儲(chǔ)設(shè)備、一個(gè)或者多個(gè)對(duì)消息進(jìn)行處理的消息處理設(shè)備和消息管理設(shè)備, 其中每條消息具有相應(yīng)的主題,所述消息存儲(chǔ)設(shè)備為相應(yīng)的主題建立一個(gè)或者多個(gè)存儲(chǔ)分區(qū),并且根據(jù)消息的主題將消息存儲(chǔ)在相應(yīng)主題的存儲(chǔ)分區(qū)之一中;所述消息處理設(shè)備適于處理在某主題下的一個(gè)或者多個(gè)存儲(chǔ)分區(qū)中的消息;所述消息管理設(shè)備中存儲(chǔ)有與所述消息存儲(chǔ)設(shè)備、消息處理設(shè)備、以及消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)相關(guān)的信息;所述協(xié)調(diào)設(shè)備包括監(jiān)聽器,被配置為監(jiān)聽在所述消息管理設(shè)備處登記的消息管理設(shè)備的相關(guān)信息;第一獲取器,被配置為從所述消息管理設(shè)備獲取適于處理特定主題消息的消息處理設(shè)備的信息;第二獲取器,被配置為從所述消息管理設(shè)備獲取存儲(chǔ)特定主題消息的消息存儲(chǔ)設(shè)備中的存儲(chǔ)分區(qū)的信息;分配器,被配置為在所述監(jiān)聽器所監(jiān)聽的信息發(fā)生變化時(shí),根據(jù)相關(guān)信息發(fā)生變化的消息存儲(chǔ)設(shè)備涉及的一個(gè)或者多個(gè)消息主題,從所述第一獲取器獲取與所涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題相關(guān)的消息處理設(shè)備的信息以及從所述第二獲取器獲取與所涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題相關(guān)的存儲(chǔ)分區(qū)的信息,并基于所獲取的消息處理設(shè)備和存儲(chǔ)分區(qū)的信息,重新計(jì)算為所獲取的每個(gè)消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果;以及結(jié)果輸出器,被配置為將所述分配器的分配結(jié)果輸出到所述消息管理設(shè)備,以便更新每個(gè)消息處理設(shè)備的目標(biāo)存儲(chǔ)分區(qū)信息。
2.如權(quán)利要求1所述的協(xié)調(diào)設(shè)備,其中第一獲取器獲取的消息處理設(shè)備的信息包括消息處理設(shè)備的物理位置標(biāo)識(shí),以及第二獲取器獲取的存儲(chǔ)分區(qū)的信息包括存儲(chǔ)分區(qū)所在的消息存儲(chǔ)設(shè)備的物理位置標(biāo)識(shí),以及所述分配器適于根據(jù)所獲取的涉及同一消息主題的消息處理設(shè)備的物理位置標(biāo)識(shí)和消息存儲(chǔ)設(shè)備的物理位置標(biāo)識(shí)的比較結(jié)果來將涉及該消息主題的消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)分配給涉及該消息主題的消息處理設(shè)備進(jìn)行消息處理。
3.如權(quán)利要求2所述的協(xié)調(diào)設(shè)備,所述分配器適于優(yōu)先將消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)分配給物理位置接近的消息處理設(shè)備來進(jìn)行處理。
4.如權(quán)利要求1至3中任一項(xiàng)所述的協(xié)調(diào)設(shè)備,所述分配器適于優(yōu)先將一個(gè)消息存儲(chǔ)設(shè)備上涉及同一消息主題的多個(gè)存儲(chǔ)分區(qū)分配給同一個(gè)消息處理設(shè)備進(jìn)行消息處理。
5.如權(quán)利要求1至4中任一項(xiàng)所述的協(xié)調(diào)設(shè)備,所述分配器適于根據(jù)涉及同一消息主題的消息處理設(shè)備處理的消息處理量來為涉及該消息主題的所有消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)。
6.—種分布式消息系統(tǒng),包括如權(quán)利要求1-5中任一項(xiàng)所述的協(xié)調(diào)設(shè)備;一個(gè)或多個(gè)存儲(chǔ)消息的消息存儲(chǔ)設(shè)備;一個(gè)或多個(gè)對(duì)消息進(jìn)行處理的消息處理設(shè)備;以及消息管理設(shè)備;其中,每條消息具有相應(yīng)的主題,所述消息存儲(chǔ)設(shè)備為每個(gè)相應(yīng)的主題建立一個(gè)或者多個(gè)存儲(chǔ)分區(qū),并且根據(jù)消息的主題將消息存儲(chǔ)在相應(yīng)主題的存儲(chǔ)分區(qū)之一中;所述消息處理設(shè)備適于處理在某主題下的一個(gè)或者多個(gè)存儲(chǔ)分區(qū)中的消息;所述協(xié)調(diào)設(shè)備適于提供為所述消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果;所述消息管理設(shè)備包括信息存儲(chǔ)器,被配置為至少存儲(chǔ)向其登記的消息存儲(chǔ)設(shè)備、消息處理設(shè)備、以及消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息;檢測(cè)器,被配置為在檢測(cè)所述消息存儲(chǔ)設(shè)備、消息處理設(shè)備的信息是否發(fā)生變化,并根據(jù)檢測(cè)結(jié)果更新所述信息存儲(chǔ)器中存儲(chǔ)的消息存儲(chǔ)設(shè)備、消息處理設(shè)備的信息;以及分配結(jié)果判斷器,被配置為接收所述協(xié)調(diào)設(shè)備發(fā)送的分配結(jié)果,其中所述分配結(jié)果包括在所述信息存儲(chǔ)器登記的某些消息處理設(shè)備所分配的處理消息的存儲(chǔ)分區(qū)信息,判斷所述分配結(jié)果中每個(gè)消息處理設(shè)備所分配的處理消息的存儲(chǔ)分區(qū)信息與所述信息存儲(chǔ)器中存儲(chǔ)的該消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息是否一致,若不一致,則對(duì)所述信息存儲(chǔ)器中存儲(chǔ)的該消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)的信息進(jìn)行更新,并將更新后的信息發(fā)送通知給該消息處理設(shè)備。
7.根據(jù)權(quán)利要求6所述的分布式消息系統(tǒng),其中,所述消息處理設(shè)備的信息包括消息處理設(shè)備的物理位置標(biāo)識(shí),所述存儲(chǔ)設(shè)備的信息包括消息存儲(chǔ)設(shè)備的物理位置標(biāo)識(shí)。
8.一種協(xié)調(diào)方法,適于在用于分布式消息系統(tǒng)的協(xié)調(diào)設(shè)備上執(zhí)行,所述分布式消息系統(tǒng)還包括一個(gè)或者多個(gè)存儲(chǔ)消息的消息存儲(chǔ)設(shè)備、一個(gè)或者多個(gè)對(duì)消息進(jìn)行處理的消息處理設(shè)備和消息管理設(shè)備,其中每條消息具有相應(yīng)的主題,所述消息存儲(chǔ)設(shè)備為相應(yīng)的主題建立一個(gè)或者多個(gè)存儲(chǔ)分區(qū),并且根據(jù)消息的主題將消息存儲(chǔ)在相應(yīng)主題的存儲(chǔ)分區(qū)之一中;所述消息處理設(shè)備適于處理在某主題下的一個(gè)或者多個(gè)存儲(chǔ)分區(qū)中的消息;所述消息管理設(shè)備中存儲(chǔ)有與所述消息存儲(chǔ)設(shè)備、消息處理設(shè)備、以及消息處理設(shè)備處理消息的目標(biāo)存儲(chǔ)分區(qū)相關(guān)的信息;所述協(xié)調(diào)方法包括監(jiān)聽在所述消息管理設(shè)備處登記的消息管理設(shè)備的相關(guān)信息;在所監(jiān)聽的信息發(fā)生變化時(shí),根據(jù)相關(guān)信息發(fā)生變化的消息存儲(chǔ)設(shè)備涉及的一個(gè)或者多個(gè)消息主題,從所述消息管理設(shè)備獲取與所涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題相關(guān)的消息處理設(shè)備的信息以及與所涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題相關(guān)的存儲(chǔ)分區(qū)的信息;基于所獲取的消息處理設(shè)備和存儲(chǔ)分區(qū)的信息,重新計(jì)算為所獲取的每個(gè)消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果;將所述分配結(jié)果發(fā)送給所述消息管理設(shè)備,以便更新每個(gè)消息處理設(shè)備的目標(biāo)存儲(chǔ)分區(qū)信息。
9.如權(quán)利要求8所述的協(xié)調(diào)方法,其中所獲取的消息處理設(shè)備的信息包括消息處理設(shè)備的物理位置標(biāo)識(shí),所獲取的存儲(chǔ)分區(qū)的信息包括存儲(chǔ)分區(qū)所在的消息存儲(chǔ)設(shè)備的物理位置標(biāo)識(shí);所述基于所獲取的消息處理設(shè)備和存儲(chǔ)分區(qū)的信息,重新計(jì)算為所獲取的每個(gè)消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果包括根據(jù)所獲取的涉及同一消息主題的消息處理設(shè)備的物理位置標(biāo)識(shí)和消息存儲(chǔ)設(shè)備的物理位置標(biāo)識(shí)的比較結(jié)果來將該消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)分配給該消息處理設(shè)備進(jìn)行消息處理。
10.如權(quán)利要求9所述的協(xié)調(diào)方法,其中優(yōu)先將消息存儲(chǔ)設(shè)備的存儲(chǔ)分區(qū)分配給物理位置接近的消息處理設(shè)備來進(jìn)行處理。
11.如權(quán)利要求8-10中任一項(xiàng)所述的協(xié)調(diào)方法,所述基于所獲取的消息處理設(shè)備和存儲(chǔ)分區(qū)的信息,重新計(jì)算為所獲取的每個(gè)消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果包括優(yōu)先將一個(gè)消息存儲(chǔ)設(shè)備上涉及同一消息主題的多個(gè)存儲(chǔ)分區(qū)分配給同一個(gè)消息處理設(shè)備進(jìn)行消息處理。
12.如權(quán)利要求8至11中任一項(xiàng)所述的協(xié)調(diào)方法,所述基于所獲取的消息處理設(shè)備和存儲(chǔ)分區(qū)的信息,重新計(jì)算為所獲取的每個(gè)消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果包括根據(jù)涉及同一消息主題的消息處理設(shè)備處理的消息處理量來為涉及該消息主題的所有消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)。
全文摘要
本發(fā)明公開了一種分布式消息系統(tǒng)及其設(shè)備和協(xié)調(diào)方法,其中協(xié)調(diào)方法包括監(jiān)聽在所述消息管理設(shè)備處登記的消息管理設(shè)備的相關(guān)信息;在所監(jiān)聽的信息發(fā)生變化時(shí),根據(jù)相關(guān)信息發(fā)生變化的消息存儲(chǔ)設(shè)備涉及的一個(gè)或者多個(gè)消息主題,從所述消息管理設(shè)備獲取與所涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題相關(guān)的消息處理設(shè)備的信息以及與所涉及的一個(gè)或者多個(gè)消息主題中的每個(gè)消息主題相關(guān)的存儲(chǔ)分區(qū)的信息;基于所獲取的消息處理設(shè)備和存儲(chǔ)分區(qū)的信息,重新計(jì)算為所獲取的每個(gè)消息處理設(shè)備分配進(jìn)行消息處理的存儲(chǔ)分區(qū)的分配結(jié)果;將所述分配結(jié)果發(fā)送給所述消息管理設(shè)備,以便更新每個(gè)消息處理設(shè)備的目標(biāo)存儲(chǔ)分區(qū)信息。
文檔編號(hào)G06F9/50GK103034540SQ20121046481
公開日2013年4月10日 申請(qǐng)日期2012年11月16日 優(yōu)先權(quán)日2012年11月16日
發(fā)明者代兵, 陳超, 桂勇哲, 朱超, 王超 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司