国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種分布式消息系統(tǒng)及其中的設備和方法

      文檔序號:6381502閱讀:209來源:國知局
      專利名稱:一種分布式消息系統(tǒng)及其中的設備和方法
      技術領域
      本發(fā)明涉及消息處理領域,具體涉及一種分布式消息系統(tǒng)及其中的設備和方法。
      背景技術
      目前用于消息(如日志)處理的消息系統(tǒng)有很多,比較流行的是分布式消息系統(tǒng)。分布式消息系統(tǒng)的具體形式有很多,如Spread、Kafka等。下面僅以常用的一種分布式消息系統(tǒng)Kafka為例進行說明。Kafka是用于日志處理的分布式消息系統(tǒng),主要針對日志數據容量大,但對可靠性要求不是很高的業(yè)務。這些系統(tǒng)中的日志數據主要包括用戶行為,例如,登錄、瀏覽、點擊、分享以及喜歡等,還包括系統(tǒng)運行日志,例如,CPU (Centra Processing Unit,中央處理器)、內存、磁盤、網絡、系統(tǒng)及進程等的運行狀態(tài)。圖1為相關技術中Kafka系統(tǒng)架構示意圖。該Kafka系統(tǒng)包括以下四個角色Producer (消息產生者,簡稱PD) 11、Broker (簡稱BK) 12、Consumer (消息處理者,簡稱CS) 13以及Zooke印er(管理者,簡稱ZK) 14,每個角色都可以是多個。Consumer 13在Kafka系統(tǒng)中負責處理消息;Producer 11在Kafka系統(tǒng)中負責產生消息;Brokerl2是Kafka系統(tǒng)中用來存放消息的地方,負責接收Producer 11發(fā)來的消息,當Consumer 13有請求時,將這些消息返回給Consumerl3 ;ZooKeeper 14是一個開放源碼的分布式應用程序協(xié)調服務,包含一個簡單的原語集,是Hadoop和Hbase的重要組件,分布式應用可以使用它來實現諸如統(tǒng)一命名服務、配置管理、分布式鎖服務、集群管理等功能。Producer 11發(fā)送消息到Broker 12,消息持久化存儲在Brokerl2上,Consumer 13再從Brokerl2取得消息進行處理。Zookeeper 14 用來存儲 Producer 11, Consumer 13,與 Brokerl2 的一些狀態(tài)信息。分布式消息系統(tǒng)基于消息的主題(Topic)來進行消息管理。在消息存儲設備中也是基于Topic來進行存儲的。每個Topic的消息可以存儲在Broke 12的一個或多個存儲分區(qū)(Partition)中。所有的Consumer 13以及每個Broker 12中存有哪些Topic,以及該Topic有多少個Partition都保存在Zookeeper上。在進行消息處理時,一般由多個Consumer 13相互協(xié)作處理某個主題的消息,在Zookeeper 14還存儲有涉及該主題的每個Consumer 13所分配的進行消息處理的存儲分區(qū)信息,每個存儲分區(qū)只分配給一個Consumer 13進行消息處理。當有Broker 12或者涉及同一主題的Consumer 13加入或者離開時,涉及同一主題的的Consumer 13會得到通知,然后每個Consumer 13所屬的消息處理設備都會執(zhí)行一個平衡策略(Rebalancing Algorithm),這樣讓涉及同一主題的所有消息處理設備達成一致一哪個消息處理設備處理哪些存儲分區(qū)的消息。在上述的方法中,平衡策略的執(zhí)行發(fā)生在Broker 12發(fā)生變動、以及涉及同一主題的Consumer 13有變動時,這會導致Consumer 13所屬的消息處理設備遭受驚群效應,因為消息處理設備在進行處理消息時時需要監(jiān)聽兩個事件(I)所處理Topic涉及的存儲分區(qū)數(Broker 12增加或者減少時會導致存儲分區(qū)數變動);(2)涉及同一主題的消息處理設備。因此,這兩個事件中任何一個發(fā)生改變,都會引起所有的消息處理設備分別重新計算其應該處理的分區(qū),而這是一個比較費時的操作。

      發(fā)明內容
      鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的分布式消息系統(tǒng)及其中的設備和方法。依據本發(fā)明的一個方面,提供了一種用于分布式消息系統(tǒng)的協(xié)調設備,分布式消息系統(tǒng)還包括一個或者多個存儲消息的消息存儲設備、一個或者多個對消息進行處理的消息處理設備和消息管理設備,其中每條消息具有相應的主題,消息存儲設備為相應的主題建立一個或者多個存儲分區(qū),并且根據消息的主題將消息存儲在相應主題的存儲分區(qū)之一中;消息處理設備適于處理在某主題下的一個或者多個存儲分區(qū)中的消息;消息管理設備中存儲有與消息存儲設備、消息處理設備、以及消息處理設備處理消息的目標存儲分區(qū)相關的信息;協(xié)調設備包括第一監(jiān)聽器,被配置為監(jiān)聽在消息管理設備處登記的消息處理設備的相關信息;第一獲取器,被配置為從消息管理設備獲取適于處理特定主題消息的消息處理設備的信息;第二獲取器,被配置為從消息管理設備獲取存儲特定主題消息的消息存儲設備中的存儲分區(qū)的信息;分配器,被配置為在第一監(jiān)聽器所監(jiān)聽的信息發(fā)生變化時,根據相關信息發(fā)生變化的消息處理設備涉及的消息主題,從第一獲取器獲取與消息主題相關的消息處理設備的信息以及從第二獲取器獲取與消息主題相關的存儲分區(qū)的信息,并基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;以及結果輸出器,被配置為將分配器的分配結果輸出到消息管理設備,以便更新每個消息處理設備的目標存儲分區(qū)信息??蛇x的,協(xié)調設備還包括第二監(jiān)聽器,被配置為監(jiān)聽在消息管理設備處登記的消息存儲設備的相關信息;其中分配器還被配置為在第二監(jiān)聽器所監(jiān)聽的信息發(fā)生變化時,對于信息發(fā)生變化的消息存儲設備涉及的一個或者多個消息主題中的每個消息主題,從第一獲取器獲取與該消息主題相關的消息處理設備的信息以及從第二獲取器獲取與該消息主題相關的存儲分區(qū)的信息,并基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果。根據本發(fā)明的另一個方面,本發(fā)明還提供了一種用于分布式消息系統(tǒng)的消息管理設備,分布式消息系統(tǒng)還包括一個或者多個存儲消息的消息存儲設備、一個或者多個對消息進行處理的消息處理設備和協(xié)調設備,其中每條消息具有相應的主題,消息存儲設備為每個相應的主題建立一個或者多個存儲分區(qū),并且根據消息的主題將消息存儲在相應主題的存儲分區(qū)之一中;消息處理設備適于處理在某主題下的一個或者多個存儲分區(qū)中的消息;協(xié)調設備適于提供為消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;消息管理設備包括信息存儲器,被配置為至少存儲向其登記的消息存儲設備、消息處理設備、以及消息處理設備處理消息的目標存儲分區(qū)的信息;檢測器,被配置為在檢測消息存儲設備、消息處理設備的信息是否發(fā)生變化,并根據檢測結果更新信息存儲器中存儲的消息存儲設備、消息處理設備的信息;以及分配結果判斷器,被配置為接收協(xié)調設備發(fā)送的分配結果,其中分配結果包括在信息存儲器登記的某些消息處理設備所分配的處理消息的存儲分區(qū)信息,判斷分配結果中每個消息處理設備所分配的處理消息的存儲分區(qū)信息與信息存儲器中存儲的該消息處理設備處理消息的目標存儲分區(qū)的信息是否一致,若不一致,則對信息存儲器中存儲的該消息處理設備處理消息的目標存儲分區(qū)的信息進行更新,并將更新后的信息發(fā)送通知給該消息處理設備。根據本發(fā)明的又一個方面,還提供了一種分布式消息系統(tǒng),包括如上的協(xié)調設備;如上的消息管理設備;一個或多個存儲消息的消息存儲設備;以及一個或多個對消息進行處理的消息處理設備。根據本發(fā)明的再一個方面,還提供了一種協(xié)調方法,適于在用于分布式消息系統(tǒng)的協(xié)調設備上執(zhí)行,分布式消息系統(tǒng)還包括一個或者多個存儲消息的消息存儲設備、一個或者多個對消息進行處理的消息處理設備和消息管理設備,其中每條消息具有相應的主題,消息存儲設備為相應的主題建立一個或者多個存儲分區(qū),并且根據消息的主題將消息存儲在相應主題的存儲分區(qū)之一中;消息處理設備適于處理在某主題下的一個或者多個存儲分區(qū)中的消息;消息管理設備中存儲有與消息存儲設備、消息處理設備、以及消息處理設備處理消息的目標存儲分區(qū)相關的信息;協(xié)調方法包括監(jiān)聽在消息管理設備處登記的消息處理設備的相關信息;在所監(jiān)聽的信息發(fā)生變化時,根據相關信息發(fā)生變化的消息處理設備涉及的消息主題,從消息管理設備獲取與消息主題相關的消息處理設備的信息以及與消息主題相關的存儲分區(qū)的信息;基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;以及將分配結果發(fā)送給消息管理設備,以便更新每個消息處理設備的目標存儲分區(qū)信息。根據本發(fā)明的另一個方面,還提供了一種消息管理方法,適于在用于分布式消息系統(tǒng)的消息管理設備上執(zhí)行,分布式消息系統(tǒng)還包括一個或者多個存儲消息的消息存儲設備、一個或者多個對消息進行處理的消息處理設備和協(xié)調設備,其中每條消息具有相應的主題,消息存儲設備為每個相應的主題建立一個或者多個存儲分區(qū),并且根據消息的主題將消息存儲在相應主題的存儲分區(qū)之一中;消息處理設備適于處理在某主題下的一個或者多個存儲分區(qū)中的消息;協(xié)調設備適于提供為消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;消息管理方法包括檢測登記的消息存儲設備、消息處理設備的信息是否發(fā)生變化,并根據檢測結果更新所存儲的消息存儲設備、消息處理設備的信息;接收協(xié)調設備發(fā)送的分配結果,其中分配結果包括登記的某些消息處理設備所分配的處理消息的存儲分區(qū)信息,判斷分配結果中每個消息處理設備所分配的處理消息的存儲分區(qū)信息與所存儲的該消息處理設備處理消息的目標存儲分區(qū)的信息是否一致,若不一致,則對所存儲的該消息處理設備處理消息的目標存儲分區(qū)的信息進行更新,并將更新后的信息發(fā)送通知給該消息處理設備。根據本發(fā)明的再一個方面,還提供了一種用于分布式消息系統(tǒng)的協(xié)調設備,分布式消息系統(tǒng)還包括一個或者多個存儲消息的消息存儲設備、一個或者多個對消息進行處理的消息處理設備和消息管理設備,其中每條消息具有相應的主題,消息存儲設備為相應的主題建立一個或者多個存儲分區(qū),并且根據消息的主題將消息存儲在相應主題的存儲分區(qū)之一中;消息處理設備適于處理在某主題下的一個或者多個存儲分區(qū)中的消息;消息管理設備中存儲有與消息存儲設備、消息處理設備、以及消息處理設備處理消息的目標存儲分區(qū)相關的信息;協(xié)調設備包括監(jiān)聽器,被配置為監(jiān)聽在消息管理設備處登記的消息管理設備的相關信息;第一獲取器,被配置為從消息管理設備獲取適于處理特定主題消息的消息處理設備的信息;第二獲取器,被配置為從消息管理設備獲取存儲特定主題消息的消息存儲設備中的存儲分區(qū)的信息;分配器,被配置為在監(jiān)聽器所監(jiān)聽的信息發(fā)生變化時,根據相關信息發(fā)生變化的消息存儲設備涉及的一個或者多個消息主題,從第一獲取器獲取與所涉及的一個或者多個消息主題中的每個消息主題相關的消息處理設備的信息以及從第二獲取器獲取與所涉及的一個或者多個消息主題中的每個消息主題相關的存儲分區(qū)的信息,并基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;以及結果輸出器,被配置為將分配器的分配結果輸出到消息管理設備,以便更新每個消息處理設備的目標存儲分區(qū)信息。根據本發(fā)明的又一個方面,還提供了一種分布式消息系統(tǒng),包括如上的協(xié)調設備;如上的消息管理設備;一個或多個存儲消息的消息存儲設備;以及一個或多個對消息進行處理的消息處理設備。根據本發(fā)明的再一個方面,還提供了一種協(xié)調方法,適于在用于分布式消息系統(tǒng)的協(xié)調設備上執(zhí)行,分布式消息系統(tǒng)還包括一個或者多個存儲消息的消息存儲設備、一個或者多個對消息進行處理的消息處理設備和消息管理設備,其中每條消息具有相應的主題,消息存儲設備為相應的主題建立一個或者多個存儲分區(qū),并且根據消息的主題將消息存儲在相應主題的存儲分區(qū)之一中;消息處理設備適于處理在某主題下的一個或者多個存儲分區(qū)中的消息;消息管理設備中存儲有與消息存儲設備、消息處理設備、以及消息處理設備處理消息的目標存儲分區(qū)相關的信息;協(xié)調方法包括監(jiān)聽在消息管理設備處登記的消息管理設備的相關信息;在所監(jiān)聽的信息發(fā)生變化時,根據相關信息發(fā)生變化的消息存儲設備涉及的一個或者多個消息主題,從消息管理設備獲取與所涉及的一個或者多個消息主題中的每個消息主題相關的消息處理設備的信息以及與所涉及的一個或者多個消息主題中的每個消息主題相關的存儲分區(qū)的信息;基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;將分配結果發(fā)送給消息管理設備,以便更新每個消息處理設備的目標存儲分區(qū)信息。本發(fā)明的技術方案通過監(jiān)聽在消息管理設備處登記的消息處理設備的相關信息,當所監(jiān)聽的信息發(fā)生變化時,根據相關信息發(fā)生變化的消息處理設備涉及的消息主題,獲取該消息主題相關的消息處理設備、存儲分區(qū)的信息,重新為適于處理該消息主題的消息處理設備分配各自進行消息處理的存儲分區(qū),由于通過統(tǒng)一計算實現任務的分配,這樣能保證每個存儲分區(qū)的消息都能被處理到,而且不會出現同一存儲分區(qū)的消息同時被分配給幾個消息處理設備進行處理,避免了同一存儲分區(qū)的消息被幾個消息處理設備重復處理。本發(fā)明的技術方案通過監(jiān)聽在消息管理設備處登記的消息存儲設備的相關信息,當所監(jiān)聽的信息發(fā)生變化時,對于相關信息發(fā)生變化的消息存儲設備涉及的一個或多個消息主題中的每個消息主題,獲取該消息主題相關的消息處理設備、存儲分區(qū)的信息,重新為適于處理該消息主題的消息處理設備分配各自進行消息處理的存儲分區(qū),由于通過統(tǒng)一計算實現任務的分配,這樣能保證每個存儲分區(qū)的消息都能被處理到,而且不會出現同一存儲分區(qū)的消息同時被分配給幾個消息處理設備進行處理,避免了同一存儲分區(qū)的消息被幾個消息處理設備重復處理。上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式
      。


      通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖1為相關技術中Kafka系統(tǒng)架構示意圖;圖2示出了根據本發(fā)明一個實施例的分布式消息系統(tǒng)的示意圖;圖3為根據本發(fā)明一個實施例的消息存儲設備內部存儲結構的示意圖;圖4示出了根據本發(fā)明一個實施例的適于用于分布式消息系統(tǒng)的協(xié)調設備上執(zhí)行的協(xié)調方法的流程圖;圖5示出了根據本發(fā)明一個實施例的適于用于分布式消息系統(tǒng)的消息管理設備上執(zhí)行的消息管理方法的流程圖。
      具體實施例方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。圖2示出了根據本發(fā)明一個實施例的分布式消息系統(tǒng)的示意圖。如圖所示,該分布式消息系統(tǒng)包括消息產生設備100、消息存儲設備200、消息處理設備300、消息管理設備400和協(xié)調設備500。消息產生設備100、消息存儲設備200和消息處理設備300分別可以為一個或多個,圖2中僅示例性給出了兩個消息產生設備100、兩個消息存儲設備200和兩個消息處理設備300,本領域技術人員可以理解,本發(fā)明實施例對消息產生設備100、消息存儲設備200和消息處理設備300的數目并沒有限制,同樣,本發(fā)明對其它部件的數量也沒有任何限制。消息產生設備100可以是網絡設備、服務器、計算機或其它可以產生消息的任何設備,這里的消息可以是任何種類信息的數據,如日志數據。每條消息具有相應的主題,如該主題可以是某種具體的用戶行為,如登錄行為、瀏覽行為、點擊行為、分享行為或者喜歡行為等,又如該主題可以是某種具體的系統(tǒng)運行日志,如CPU、內存、磁盤、網絡、系統(tǒng)及進程的運行狀態(tài)等。例如,在一個實施例中,消息產生設備100為網絡服務器,在用戶瀏覽該網絡服務器的某網絡頁面時,該網絡服務器隨之產生一條主題為瀏覽該網絡頁面的消息。在消息產生設備100產生消息后,將產生的消息發(fā)送給消息存儲設備200。消息產生設備100向消息存儲設備200發(fā)送消息時,可以隨機發(fā)送,也可以根據用戶指定的回調函數向指定消息存儲設備200進行發(fā)送。消息存儲設備200接收到消息產生設備100發(fā)送的消息后,將接收到的消息進行存儲。消息存儲設備200有多種具體的存儲方式,例如,消息存儲設備200按照消息的主題進行存儲。具體而言,可以為每個消息主題建立一個或多個存儲分區(qū),將接收到的每條消息存儲在相應主題的存儲分區(qū)之一中。
      為了更好的介紹消息存儲設備200的內部存儲結構,請同時參看圖3,其為根據本發(fā)明一個實施例的消息存儲設備內部存儲結構的示意圖。在圖3中,示出了第一消息存儲設備2001、第二消息存儲設備2002和第三消息存儲設備2003,以及每個消息存儲設備內部的消息存儲路徑。此外,還示出了與這些消息存儲設備進行信息交互的第一消息產生設備1001和第二消息產生設備1002,以及第一消息處理設備3001和第二消息處理設備3002。第一消息產生設備1001和第二消息產生設備1002產生的主題為Topicl以及Topic2的消息,會被發(fā)送到可以用來存儲Topicl的消息和Topic2的消息的第一消息存儲設備2001、第二消息存儲設備2002和第三消息存儲設備2003。因為分布式消息處理系統(tǒng)基于消息的主題(Topic)來進行消息管理,所以相應的,在消息存儲設備中也是基于Topic來進行存儲的。每個Topic的消息可以存儲在一個或多個存儲分區(qū)(Partition)中,當存儲在多個存儲分區(qū)時,這些多個存儲分區(qū)可以位于一個消息存儲設備上,也可以位于多個消息存儲設備上。在圖3中,主題為Topicl的消息存儲在第一消息存儲設備2001中Topicl下的存儲分區(qū)partl和存儲分區(qū)part2、第二消息存儲設備2002中Topicl下的存儲分區(qū)partl和存儲分區(qū)part2,以及第三消息存儲設備2003中Topicl下的存儲分區(qū)partl和存儲分區(qū)part2。主題為Topic2的消息存儲在第一消息存儲設備2001中Topic2下的存儲分區(qū)partl、第二消息存儲設備2002中Topic2下的存儲分區(qū)partl,以及第三消息存儲設備2003中Topic2下的存儲分區(qū)partl。存儲分區(qū)中的消息id(Identity,身份標識)由其邏輯位置決定,即從消息id可直接定位到消息的存儲位置,避免id到存儲位置的額外映射。上面通過圖3詳細介紹了圖2中消息存儲設備200的一種內部存儲結構,下面再回到圖2所示的實施例。消息存儲設備200在運行時,向消息管理設備400登記,將其存儲的消息涉及的一個或多個主題、涉及每個主題的存儲分區(qū)信息、以及每次存儲分區(qū)更新的信息發(fā)送給消息管理設備400,此外,還可將其物理位置標識發(fā)送給消息管理設備400,由消息管理設備400保存,其中存儲分區(qū)更新包括該消息存儲設備200上存儲分區(qū)的增加或減少,物理位置標識可包括消息存儲設備200的主機名、所在機房等信息。為提高消息處理的效率,可將存儲該主題的消息的存儲分區(qū)分配給多個消息處理設備300進行消息處理,其中每個存儲分區(qū)分配給一個消息處理設備300進行消息處理。消息處理設備300在運行時,向消息管理設備400登記,將其處理的消息主題以及所處理消息的目標存儲分區(qū)的信息發(fā)送給消息管理設備400。此外,還可將其物理位置標識發(fā)送給消息管理設備400,由消息管理設備400保存,其中物理位置標識可包括消息處理設備300的主機名、所在機房等信息。當處理某主題的消息的消息處理設備300加入或退出時,需要對涉及該主題的消息處理設備300處理消息的目標存儲分區(qū)進行重新分配;以及當消息存儲設備200加入或退出,或消息存儲設備200的存儲分區(qū)增加或減少時,將導致所涉及的一個或多個主題中每個主題的存儲分區(qū)發(fā)生變化,也需要對涉及該主題的消息處理設備300處理消息的目標存儲分區(qū)進行重新分配。而具體如何將涉及某主題的存儲分區(qū)重新分配給多個消息處理設備300進行消息處理,將通過消息管理設備400和協(xié)調設備500相互協(xié)作來執(zhí)行。由于消息管理設備400中的各部件和協(xié)調設備500中的各部件信息交互較多,因此下面先概括介紹消息管理設備400中所包括的各部件,以及協(xié)調設備500包括的各部件,然后在具體信息交互過程中對涉及到的各部件再進行更詳細的介紹。消息管理設備400包括信息存儲器402、檢測器404和分配結果判斷器406。協(xié)調設備500包括分配器504、第一獲取器506、第二獲取器508和結果輸出器510,其中,在圖2中還示出了第一監(jiān)聽器502和第二監(jiān)聽器512,協(xié)調設備500可以只包括第一監(jiān)聽器502或第二監(jiān)聽器512,也可以同時包括第一監(jiān)聽器502和第二監(jiān)聽器512。 消息管理設備400的檢測器404檢測向信息存儲器402登記的消息存儲設備200、消息處理設備300的信息是否發(fā)生變化,在具體實現時,可通過與消息存儲設備200、消息處理設備300分別建立長連接,并定時檢測該長連接是否斷開來檢測消息存儲設備200、消息處理設備300是當前連接可用還是已退出,并根據檢測結果更新信息存儲器402中存儲的消息存儲設備200、消息處理設備300的信息。第一監(jiān)聽器502監(jiān)聽在消息管理設備400的信息存儲器402中登記的消息處理設備300的相關信息。當信息存儲器402中消息處理設備300的相關信息發(fā)生更新時,將相關信息發(fā)生變化的消息處理設備300所涉及的消息主題發(fā)送給第一監(jiān)聽器502,其中消息處理設備300的相關信息包括消息處理設備300是否增加或刪除、消息處理設備300要處理的消息主題是否改變等。消息存儲設備200的相關信息包括消息存儲設備200是否增加或刪除、消息存儲設備200的存儲分區(qū)是否增加或刪除等。第一監(jiān)聽器502將接收的相關信息發(fā)生變化的消息處理設備300所涉及的消息主題發(fā)送給分配器504,分配器504根據相關信息發(fā)生變化的消息處理設備300涉及的消息主題,通過第一獲取器506從消息管理設備400的信息存儲器402獲取與該消息主題相關的消息處理設備300的信息,以及通過第二獲取器508從消息管理設備400的信息存儲器402獲取與該消息主題相關的存儲分區(qū)的信息。第二監(jiān)聽器512監(jiān)聽在消息管理設備400的信息存儲器402中登記的消息存儲設備200的相關信息,當信息存儲器402更新消息存儲設備200的相關信息時,將相關信息發(fā)生變化的消息存儲設備200所涉及的消息主題發(fā)送給第二監(jiān)聽器512。第二監(jiān)聽器512將接收的相關信息發(fā)生變化的消息存儲設備200所涉及的一個或多個消息主題發(fā)送給分配器504,對于相關信息發(fā)生變化的消息存儲設備200涉及的一個或多個消息主題中的每個消息主題,分配器504通過第一獲取器506從消息管理設備400的信息存儲器402獲取與該消息主題相關的消息處理設備300的信息,以及通過第二獲取器508從消息管理設備400的信息存儲器402獲取與該消息主題相關的存儲分區(qū)的信息。協(xié)調設備500的分配器504基于所獲取的消息處理設備300的信息和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備300分配進行消息處理的存儲分區(qū)的分配結果。具體而言,如果第一獲取器506獲取的消息處理設備300的信息包括消息處理設備300的物理位置標識,以及第二獲取器508獲取的存儲分區(qū)的信息包括存儲分區(qū)所在的消息存儲設備200的物理位置標識,則分配器504可以根據所獲取的涉及同一消息主題的消息處理設備300的物理位置標識和消息存儲設備200的物理位置標識的比較結果,來將涉及該消息主題的消息存儲設備200的存儲分區(qū)分配給涉及該消息主題的消息處理設備300進行消息處理,例如,可以優(yōu)先將消息存儲設備200的存儲分區(qū)分配給物理位置接近的消息處理設備300來進行處理,從而將消息存儲設備200的存儲分區(qū)分配給就近位置的消息處理設備300進行消息處理,如將消息存儲設備200的存儲分區(qū)分配給位于同一機房的消息處理設備300進行消息處理,這樣,通過局域網即可進行數據傳輸,既可增加數據傳輸的速度,又避免了網絡擁堵的出現。如果一個消息存儲設備200上具有涉及同一消息主題的多個存儲分區(qū),分配器504還可以優(yōu)先將該消息存儲設備200上涉及同一消息主題的多個存儲分區(qū)分配給同一個消息處理設備300進行消息處理,這樣可以提高數據傳輸的效率。分配器504也可以根據涉及同一消息主題的消息處理設備300處理的消息處理量,將涉及該消息主題的消息存儲設備200的存儲分區(qū)分配給涉及該消息主題的消息處理設備300進行消息處理,使得每個消息處理設備300盡量獲得數量相同的存儲分區(qū)。例如,假定相關信息發(fā)生變化的消息處理設備300涉及某消息主題Topic (以下簡稱T),第一獲取器506獲取到涉及T的所有消息處理設備Ci,其中i為介于I到N的自然數,N為所獲取的所有消息處理設備300的數量,Ci為隨機排序;第二獲取器508獲取到涉及T的所有存儲分區(qū)Pj,其中j為介于I到M的自然數,M為所獲取的所有存儲分區(qū)的數量,Pj的排序使得位于同一個消息存儲設備200上的存儲分區(qū)連在一起;則可以將i*Z到(i+l)*Z-l范圍內的存儲分區(qū)分配給消息處理設備Ci,Z為M/N采用收尾法得到的整數。分配器504還可以在按照物理位置分配和/或將一個消息存儲設備200上涉及同一消息主題的多個存儲分區(qū)分配給同一個消息處理設備300后,根據涉及同一消息主題的消息處理設備300處理的消息處理量,再將涉及該消息主題的剩余的存儲分區(qū)分配給沒有獲得處理任務的消息處理設備300,使得每個消息處理設備300盡量獲得數量相同的消費分區(qū)。協(xié)調設備500的結果輸出器510將分配器504計算的分配結果輸出到消息管理設備400的分配結果判斷器406。分配結果判斷器406判斷接收的分配結果中每個消息處理設備300所分配的處理消息的存儲分區(qū)信息與信息存儲器402中存儲的該消息處理設備300處理消息的目標存儲分區(qū)的信息是否一致,若一致,則不需要任何操作,若不一致,則對信息存儲器402中存儲的該消息處理設備300處理消息的目標存儲分區(qū)的信息進行更新,并將更新后的信息發(fā)送通知給該消息處理設備300,而消息處理設備300在收到更新后的信息后,從重新分配的存儲分區(qū)獲取消息進行處理。上述實施例通過監(jiān)聽在消息管理設備處登記的消息處理設備的相關信息,當所監(jiān)聽的信息發(fā)生變化時,根據相關信息發(fā)生變化的消息處理設備涉及的消息主題,獲取該消息主題相關的消息處理設備、存儲分區(qū)的信息,重新為適于處理該消息主題的消息處理設備分配各自進行消息處理的存儲分區(qū),由于通過統(tǒng)一計算實現任務的分配,這樣能保證每個存儲分區(qū)的消息都能被處理到,而且不會出現同一存儲分區(qū)的消息同時被分配給幾個消息處理設備進行處理,避免了同一存儲分區(qū)的消息被幾個消息處理設備重復處理。與前述本發(fā)明一個實施例的分布式消息系統(tǒng)相對應,圖4不出了根據本發(fā)明一個實施例的適于用于分布式消息系統(tǒng)的協(xié)調設備上執(zhí)行的協(xié)調方法的流程圖。該分布式消息系統(tǒng)包括一個或多個如圖2實施例所描述的消息產生設備100、一個或多個如圖2實施例所描述的消息存儲設備200、一個或多個如圖2實施例所描述的消息處理設備300、如圖2實施例所描述的消息管理設備400以及如如圖2實施例所描述的協(xié)調設備500。該協(xié)調方法適于在圖2實施例所描述的協(xié)調設備500上執(zhí)行。
      該協(xié)調方法始于步驟S410,在步驟S410中,監(jiān)聽在消息管理設備處登記的消息處理設備和/或消息存儲設備的相關信息。其中消息處理設備的相關信息包括消息處理設備是否增加或刪除、消息處理設備要處理的消息主題是否改變等,消息存儲設備的相關信息包括消息存儲設備是否增加或刪除、消息存儲設備的存儲分區(qū)是否增加或刪除等。本步驟可以通過前述協(xié)調設備500中的第一監(jiān)聽器502和/或第二監(jiān)聽器512來執(zhí)行,相關的技術實現可以參考前述協(xié)調設備500中的第一監(jiān)聽器502和/或第二監(jiān)聽器512在各實施例中的相關描述,此處不再贅述。需要說明的是,在步驟S410中可以只監(jiān)聽消息處理設備的相關信息是否變化或只監(jiān)聽消息處理設備的相關信息是否變化;也可以同時監(jiān)聽消息處理設備、消息存儲設備的相關信息是否變化,并可以設定在同時監(jiān)聽到監(jiān)聽消息處理設備、消息存儲設備的相關信息發(fā)生變化時,優(yōu)先處理消息存儲設備或消息處理設備的相關信息發(fā)生變化的情況。在步驟S410中所監(jiān)聽的信息發(fā)生變化時,進而在步驟S420中,對于相關信息發(fā)生變化的消息處理設備涉及的消息主題,或對于信息發(fā)生變化的消息存儲設備涉及的一個或者多個消息主題中的每個消息主題,從消息管理設備獲取與消息主題相關的消息處理設備的信息以及與消息主題相關的存儲分區(qū)的信息。本步驟可以通過前述協(xié)調設備500中的第一獲取器506或第二獲取器508來執(zhí)行,相關的技術實現可以參考前述協(xié)調設備500中的第一獲取器506或第二獲取器508在各實施例中的相關描述,此處不再贅述。然后,在步驟S430中,基于步驟S420中所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果。本步驟可以通過前述協(xié)調設備500中的分配器504來執(zhí)行,相關的技術實現可以參考前述協(xié)調設備500中的分配器504在各實施例中的相關描述,此處不再贅述。具體而言,如果步驟S420中所獲取的消息處理設備的信息包括消息處理設備的物理位置標識,所獲取的存儲分區(qū)的信息包括存儲分區(qū)所在的消息存儲設備的物理位置標識,在步驟S430中,可以根據所獲取的涉及同一消息主題的消息處理設備的物理位置標識和消息存儲設備的物理位置標識的比較結果來將涉及該消息主題的消息存儲設備的存儲分區(qū)分配給涉及該消息主題的消息處理設備進行消息處理,例如,可以優(yōu)先將消息存儲設備的存儲分區(qū)分配給物理位置接近的消息處理設備來進行處理,從而將消息存儲設備的存儲分區(qū)分配給就近位置的消息處理設備進行消息處理,如將消息存儲設備的存儲分區(qū)分配給位于同一機房的消息處理設備進行消息處理,這樣,通過局域網即可進行數據傳輸,既可增加數據傳輸的速度,又避免了網絡擁堵的出現。在步驟S430中,還可以優(yōu)先將一個消息存儲設備上涉及同一消息主題的多個存儲分區(qū)分配給同一個消息處理設備進行消息處理,這樣可以提高數據傳輸的效率。在步驟S430中,也可以根據涉及同一消息主題的消息處理設備處理的消息處理量,將涉及該消息主題的消息存儲設備的存儲分區(qū)分配給涉及該消息主題的消息處理設備進行消息處理,使得每個消息處理設備盡量獲得數量相同的存儲分區(qū)。例如,假定相關信息發(fā)生變化的消息處理設備涉及某消息主題Topic (以下簡稱T),在步驟S420中獲取到涉及T的所有消息處理設備Ci,其中i為介于I到N的自然數,N為所獲取的所有消息處理設備的數量,Ci為隨機排序;在步驟S420中獲取到涉及T的所有存儲分區(qū)Pj,其中j為介于I到M的自然數,M為所獲取的所有存儲分區(qū)的數量,Pj的排序使得位于同一個消息存儲設備上的存儲分區(qū)連在一起;則可以將i*Z到(i+l)*Z-l范圍內的存儲分區(qū)分配給消息處理設備Ci,Z為M/N采用收尾法得到的整數。在步驟S430中,還可以在按照物理位置分配和/或將一個消息存儲設備上涉及同一消息主題的多個存儲分區(qū)分配給同一個消息處理設備后,再根據涉及同一消息主題的消息處理設備處理的消息處理量,將涉及該消息主題的剩余的存儲分區(qū)分配給沒有獲得處理任務的消息處理設備,使得每個消息處理設備盡量獲得數量相同的消費分區(qū)。最后,在步驟S440中,將步驟S430中計算的分配結果發(fā)送給消息管理設備,以便更新每個消息處理設備的目標存儲分區(qū)信息。本步驟可以通過前述協(xié)調設備500中的結果輸出器510來執(zhí)行,相關的技術實現可以參考前述協(xié)調設備500中的結果輸出器510在各實施例中的相關描述,此處不再贅述。上述實施例通過監(jiān)聽在消息管理設備處登記的消息處理設備的相關信息,當所監(jiān)聽的信息發(fā)生變化時,根據相關信息發(fā)生變化的消息處理設備涉及的消息主題,獲取該消息主題相關的消息處理設備、存儲分區(qū)的信息,重新為適于處理該消息主題的消息處理設備分配各自進行消息處理的存儲分區(qū),由于通過統(tǒng)一計算實現任務的分配,這樣能保證每個存儲分區(qū)的消息都能被處理到,而且不會出現同一存儲分區(qū)的消息同時被分配給幾個消息處理設備進行處理,避免了同一存儲分區(qū)的消息被幾個消息處理設備重復處理。與前述本發(fā)明一個實施例的分布式消息系統(tǒng)相對應,圖5不出了根據本發(fā)明一個實施例的適于用于分布式消息系統(tǒng)的消息管理設備上執(zhí)行的消息管理方法的流程圖。該分布式消息系統(tǒng)包括一個或多個如圖2實施例所描述的消息產生設備100、一個或多個如圖2實施例所描述的消息存儲設備200、一個或多個如圖2實施例所描述的消息處理設備300、如圖2實施例所描述的消息管理設備400以及如如圖2實施例所描述的協(xié)調設備500。該消息管理方法適于在圖2實施例所描述的消息管理設備400上執(zhí)行。該消息管理方法始于步驟S510。在步驟S510,檢測登記的消息存儲設備、消息處理設備的信息是否發(fā)生變化,并根據檢測結果更新所存儲的消息存儲設備、消息處理設備的信息。其中消息處理設備的信息包括消息處理設備是否增加或刪除、消息處理設備要處理的消息主題是否改變等。消息存儲設備的信息包括消息存儲設備是否增加或刪除、消息存儲設備的存儲分區(qū)是否增加或刪除等。此外,消息處理設備的信息還可以包括消息處理設備的物理位置標識,存儲設備的信息還可以包括消息存儲設備的物理位置標識。本步驟可以通過前述消息管理設備400中的檢測器404來執(zhí)行,相關的技術實現可以參考前述消息管理設備400中的檢測器404在各實施例中的相關描述,此處不再贅述。在步驟S520中,接收協(xié)調設備發(fā)送的分配結果,其中分配結果包括登記的某些消息處理設備所分配的處理消息的存儲分區(qū)信息,判斷分配結果中每個消息處理設備所分配的處理消息的存儲分區(qū)信息與消息管理設備中存儲的該消息處理設備處理消息的目標存儲分區(qū)的信息是否一致,若不一致,則對消息管理設備所存儲的該消息處理設備處理消息的目標存儲分區(qū)的信息進行更新,并將更新后的信息發(fā)送通知給該消息處理設備。本步驟可以通過前述消息管理設備400中的分配結果判斷器406來執(zhí)行,相關的技術實現可以參考前述消息管理設備400中的分配結果判斷器406在各實施例中的相關描述,此處不再贅述。上述實施例通過監(jiān)聽在消息管理設備處登記的消息處理設備的相關信息,當所監(jiān)聽的信息發(fā)生變化時,根據相關信息發(fā)生變化的消息處理設備涉及的消息主題,獲取該消息主題相關的消息處理設備、存儲分區(qū)的信息,重新為適于處理該消息主題的消息處理設備分配各自進行消息處理的存儲分區(qū),由于通過統(tǒng)一計算實現任務的分配,這樣能保證每個存儲分區(qū)的消息都能被處理到,而且不會出現同一存儲分區(qū)的消息同時被分配給幾個消息處理設備進行處理,避免了同一存儲分區(qū)的消息被幾個消息處理設備重復處理。在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據上面的描述,構造這類系統(tǒng)所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現在此描述的本發(fā)明的內容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。類似地,應當理解,為了精簡本說明書公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式
      的權利要求書由此明確地并入該具體實施方式
      ,其中每個權利要求本身都作為本發(fā)明的單獨實施例。本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。 本發(fā)明的各個部件實施例可以以硬件實現,或者以在一個或者多個處理器上運行的軟件模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數字信號處理器(DSP)來實現根據本發(fā)明實施例的設備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現本發(fā)明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
      應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。本申請可以應用于計算機系統(tǒng)/服務器,其可與眾多其它通用或專用計算系統(tǒng)環(huán)境或配置一起操作。適于與計算機系統(tǒng)/服務器一起使用的眾所周知的計算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于個人計算機系統(tǒng)、服務器計算機系統(tǒng)、瘦客戶機、厚客戶機、手持或膝上設備、基于微處理器的系統(tǒng)、機頂盒、可編程消費電子產品、網絡個人電腦、小型計算機系統(tǒng)、大型計算機系統(tǒng)和包括上述任何系統(tǒng)的分布式云計算技術環(huán)境,等等。計算機系統(tǒng)/服務器可以在由計算機系統(tǒng)執(zhí)行的計算機系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括例程、程序、目標程序、組件、邏輯、數據結構等等,它們執(zhí)行特定的任務或者實現特定的抽象數據類型。計算機系統(tǒng)/服務器可以在分布式云計算環(huán)境中實施,分布式云計算環(huán)境中,任務是由通過通信網絡鏈接的遠程處理設備執(zhí)行的。在分布式云計算環(huán)境中,程序模塊可以位于包括存儲設備的本地或遠程計算系統(tǒng)存儲介質上。
      權利要求
      1.一種用于分布式消息系統(tǒng)的協(xié)調設備,所述分布式消息系統(tǒng)還包括一個或者多個存儲消息的消息存儲設備、一個或者多個對消息進行處理的消息處理設備和消息管理設備,其中每條消息具有相應的主題,所述消息存儲設備為相應的主題建立一個或者多個存儲分區(qū),并且根據消息的主題將消息存儲在相應主題的存儲分區(qū)之一中;所述消息處理設備適于處理在某主題下的一個或者多個存儲分區(qū)中的消息;所述消息管理設備中存儲有與所述消息存儲設備、消息處理設備、以及消息處理設備處理消息的目標存儲分區(qū)相關的信息;所述協(xié)調設備包括第一監(jiān)聽器,被配置為監(jiān)聽在所述消息管理設備處登記的消息處理設備的相關信息;第一獲取器,被配置為從所述消息管理設備獲取適于處理特定主題消息的消息處理設備的信息;第二獲取器,被配置為從所述消息管理設備獲取存儲特定主題消息的消息存儲設備中的存儲分區(qū)的信息;分配器,被配置為在所述第一監(jiān)聽器所監(jiān)聽的信息發(fā)生變化時,根據相關信息發(fā)生變化的消息處理設備涉及的消息主題,從所述第一獲取器獲取與所述消息主題相關的消息處理設備的信息以及從所述第二獲取器獲取與所述消息主題相關的存儲分區(qū)的信息,并基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;以及結果輸出器,被配置為將所述分配器的分配結果輸出到所述消息管理設備,以便更新每個消息處理設備的目標存儲分區(qū)信息。
      2.如權利要求1所述的協(xié)調設備,其中所述協(xié)調設備還包括第二監(jiān)聽器,被配置為監(jiān)聽在所述消息管理設備處登記的消息存儲設備的相關信息;其中所述分配器還被配置為在所述第二監(jiān)聽器所監(jiān)聽的信息發(fā)生變化時,對于信息發(fā)生變化的消息存儲設備涉及的一個或者多個消息主題中的每個消息主題,從所述第一獲取器獲取與該消息主題相關的消息處理設備的信息以及從所述第二獲取器獲取與該消息主題相關的存儲分區(qū)的信息,并基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果。
      3.如權利要求1或2所述的協(xié)調設備,其中第一獲取器獲取的消息處理設備的信息包括消息處理設備的物理位置標識,以及第二獲取器獲取的存儲分區(qū)的信息包括存儲分區(qū)所在的消息存儲設備的物理位置標識,以及所述分配器適于根據所獲取的涉及同一消息主題的消息處理設備的物理位置標識和消息存儲設備的物理位置標識的比較結果來將涉及該消息主題的消息存儲設備的存儲分區(qū)分配給涉及該消息主題的消息處理設備進行消息處理。
      4.如權利要求3所述的協(xié)調設備,所述分配器適于優(yōu)先將消息存儲設備的存儲分區(qū)分配給物理位置接近的消息處理設備來進行處理。
      5.如權利要求1至4中任一項所述的協(xié)調設備,所述分配器適于優(yōu)先將一個消息存儲設備上涉及同一消息主題的多個存儲分區(qū)分配給同一個消息處理設備進行消息處理。
      6.如權利要求1至5中任一項所述的協(xié)調設備,所述分配器適于根據涉及同一消息主題的消息處理設備處理的消息處理量來為涉及該消息主題的所有消息處理設備分配進行消息處理的存儲分區(qū)。
      7.一種用于分布式消息系統(tǒng)的消息管理設備,所述分布式消息系統(tǒng)還包括一個或者多個存儲消息的消息存儲設備、一個或者多個對消息進行處理的消息處理設備和協(xié)調設備,其中每條消息具有相應的主題,所述消息存儲設備為每個相應的主題建立一個或者多個存儲分區(qū),并且根據消息的主題將消息存儲在相應主題的存儲分區(qū)之一中;所述消息處理設備適于處理在某主題下的一個或者多個存儲分區(qū)中的消息;所述協(xié)調設備適于提供為所述消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;所述消息管理設備包括信息存儲器,被配置為至少存儲向其登記的消息存儲設備、消息處理設備、以及消息處理設備處理消息的目標存儲分區(qū)的信息;檢測器,被配置為在檢測所述消息存儲設備、消息處理設備的信息是否發(fā)生變化,并根據檢測結果更新所述信息存儲器中存儲的消息存儲設備、消息處理設備的信息;以及分配結果判斷器,被配置為接收所述協(xié)調設備發(fā)送的分配結果,其中所述分配結果包括在所述信息存儲器登記的某些消息處理設備所分配的處理消息的存儲分區(qū)信息,判斷所述分配結果中每個消息處理設備所分配的處理消息的存儲分區(qū)信息與所述信息存儲器中存儲的該消息處理設備處理消息的目標存儲分區(qū)的信息是否一致,若不一致,則對所述信息存儲器中存儲的該消息處理設備處理消息的目標存儲分區(qū)的信息進行更新,并將更新后的信息發(fā)送通知給該消息處理設備。
      8.根據權利要求7所述的消息管理設備,所述消息處理設備的信息包括消息處理設備的物理位置標識,所述存儲設備的信息包括消息存儲設備的物理位置標識。
      9.一種分布式消息系統(tǒng),包括如權利要求1-6中任一項所述的協(xié)調設備;如權利要求7-8中任一項所述的消息管理設備;一個或多個存儲消息的消息存儲設備;以及一個或多個對消息進行處理的消息處理設備。
      10.一種協(xié)調方法,適于在用于分布式消息系統(tǒng)的協(xié)調設備上執(zhí)行,所述分布式消息系統(tǒng)還包括一個或者多個存儲消息的消息存儲設備、一個或者多個對消息進行處理的消息處理設備和消息管理設備,其中每條消息具有相應的主題,所述消息存儲設備為相應的主題建立一個或者多個存儲分區(qū),并且根據消息的主題將消息存儲在相應主題的存儲分區(qū)之一中;所述消息處理設備適于處理在某主題下的一個或者多個存儲分區(qū)中的消息;所述消息管理設備中存儲有與所述消息存儲設備、消息處理設備、以及消息處理設備處理消息的目標存儲分區(qū)相關的信息;所述協(xié)調方法包括監(jiān)聽在所述消息管理設備處登記的消息處理設備的相關信息;在所監(jiān)聽的信息發(fā)生變化時,根據相關信息發(fā)生變化的消息處理設備涉及的消息主題,從所述消息管理設備獲取與所述消息主題相關的消息處理設備的信息以及與所述消息主題相關的存儲分區(qū)的信息;基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;將所述分配結果發(fā)送給所述消息管理設備,以便更新每個消息處理設備的目標存儲分區(qū)信息。
      11.如權利要求10所述的協(xié)調方法,其中所述協(xié)調方法還包括監(jiān)聽在所述消息管理設備處登記的消息存儲設備的相關信息;在所監(jiān)聽的信息發(fā)生變化時,對于信息發(fā)生變化的消息存儲設備涉及的一個或者多個消息主題中的每個消息主題,從所述消息存儲設備獲取與該消息主題相關的消息處理設備的信息以及與該消息主題相關的存儲分區(qū)的信息;基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果。
      12.如權利要求10或11所述的協(xié)調方法,其中所獲取的消息處理設備的信息包括消息處理設備的物理位置標識,所獲取的存儲分區(qū)的信息包括存儲分區(qū)所在的消息存儲設備的物理位置標識;所述基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果包括根據所獲取的涉及同一消息主題的消息處理設備的物理位置標識和消息存儲設備的物理位置標識的比較結果來將涉及該消息主題的消息存儲設備的存儲分區(qū)分配給涉及該消息主題的消息處理設備進行消息處理。
      13.如權利要求12所述的協(xié)調方法,其中優(yōu)先將消息存儲設備的存儲分區(qū)分配給物理位置接近的消息處理設備來進行處理。
      14.如權利要求10-12中任一項所述的協(xié)調方法,所述基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果包括優(yōu)先將一個消息存儲設備上涉及同一消息主題的多個存儲分區(qū)分配給同一個消息處理設備進行消息處理。
      15.如權利要求10-14中任一項所述的協(xié)調方法,所述基于所獲取的消息處理設備和存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果包括根據涉及同一消息主題的消息處理設備處理的消息處理量來為涉及該消息主題的所有消息處理設備分配進行消息處理的存儲分區(qū)。
      16.—種消息管理方法,適于在用于分布式消息系統(tǒng)的消息管理設備上執(zhí)行,所述分布式消息系統(tǒng)還包括一個或者多個存儲消息的消息存儲設備、一個或者多個對消息進行處理的消息處理設備和協(xié)調設備,其中每條消息具有相應的主題,所述消息存儲設備為每個相應的主題建立一個或者多個存儲分區(qū),并且根據消息的主題將消息存儲在相應主題的存儲分區(qū)之一中;所述消息處理設備適于處理在某主題下的一個或者多個存儲分區(qū)中的消息;所述協(xié)調設備適于提供為所述消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;所述消息管理方法包括檢測登記的消息存儲設備、消息處理設備的信息是否發(fā)生變化,并根據檢測結果更新所存儲的消息存儲設備、消息處理設備的信息;接收所述協(xié)調設備發(fā)送的分配結果,其中所述分配結果包括所述登記的某些消息處理設備所分配的處理消息的存儲分區(qū)信息,判斷所述分配結果中每個消息處理設備所分配的處理消息的存儲分區(qū)信息與所存儲的該消息處理設備處理消息的目標存儲分區(qū)的信息是否一致,若不一致,則對所存儲的該消息處理設備處理消息的目標存儲分區(qū)的信息進行更新,并將更新后的信息發(fā)送通知給該消息處理設備。
      17.根據權利要求16所述的消息管理方法,所述消息處理設備的信息包括消息處理設備的物理位置標識,所述存儲設備的信息包括消息存儲設備的物理位置標識。
      全文摘要
      本發(fā)明公開了一種分布式消息系統(tǒng)及其中的設備和方法,其中協(xié)調設備包括第一監(jiān)聽器,被配置為監(jiān)聽在消息管理設備處登記的消息處理設備的相關信息;第一獲取器,從消息管理設備獲取處理特定主題消息的消息處理設備的信息;第二獲取器,從消息管理設備獲取存儲特定主題消息的消息存儲設備中的存儲分區(qū)的信息;分配器,根據相關信息發(fā)生變化的消息處理設備涉及的消息主題,從第一獲取器獲取與消息主題相關的消息處理設備的信息以及從第二獲取器獲取與消息主題相關的存儲分區(qū)的信息,重新計算為所獲取的每個消息處理設備分配進行消息處理的存儲分區(qū)的分配結果;結果輸出器,將分配器的分配結果輸出到消息管理設備。
      文檔編號G06F11/34GK103034541SQ201210464860
      公開日2013年4月10日 申請日期2012年11月16日 優(yōu)先權日2012年11月16日
      發(fā)明者代兵, 陳超, 桂勇哲, 朱超, 王超 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1