一種實現消息隊列的方法及裝置制造方法【專利摘要】本發明公開一種實現消息隊列的方法及裝置,屬于計算機【
技術領域:
】。所述裝置包括:寫隊列接口,適于接收消息生產者的寫消息請求,所述寫消息請求中包括待寫入消息和所述待寫入消息所屬消息隊列的第一標識;讀隊列接口,適于接收消息消費者的讀消息請求,所述讀消息請求中包括待讀取消息所屬消息隊列的第二標識;消息處理器,適于根據消息隊列標識與分布式存儲系統中存儲表的對應關系,將待寫入消息存儲到與所述第一標識對應的存儲表中,以及,從與所述第二標識對應的存儲表中順序讀取一條消息,將讀取到的消息通過所述讀隊列接口發送到消息消費者。根據本發明,使得消息隊列能夠支持較大消息的存儲和傳遞,并提升了消息隊列的可擴展性。【專利說明】一種實現消息隊列的方法及裝置【
技術領域:
】[0001]本發明涉及計算機【
技術領域:
】,具體涉及一種實現消息隊列的方法及裝置。【
背景技術:
】[0002]消息(Message)是在兩臺計算機間傳送的數據,消息可以非常簡單,只包含少量文本字符串,也可以更復雜,包含較大的對象數據。消息隊列機制為應用程序開發人員提供了一種應用程序間快速可靠的通信方式,即通過消息的傳遞來實現信息的交互。如圖1所示,消息隊列機制的組件分為三種,即消息的生產者(Producer)、消息的消費者(Consumer)以及消息的中繼機構-消息隊列(MessageQueue,MQ)。消息隊列是在消息的傳輸過程中保存消息的容器,生產者創建消息,將消息發送到消息隊列暫存,消費者從消息隊列中讀取消息并執行。[0003]由于消息隊列機制的廣泛應用,目前在該領域存在多種開源或閉源的消息隊列實現方案,如ActiveMQ和Kafka等。ActiveMQ是Apache社區的開源消息隊列實現,支持多種語言和協議編寫客戶端,如Java、C、Perl、Python和PHP等。ActiveMQ是典型的一主多從的結構,即生產者發送消息時會首先在主節點上存儲一份,同時同步到多個從節點上存儲,靠冗余機制保證消息不丟失。在該方案中,消息會一直存儲在MQ中,并維護著每一條消息的狀態,直到消費者消費完成后通知MQ,由MQ決定是否要將消息刪除。[0004]ActiveMQ的缺點在于:由于消費者在消費操作完成后,需要和MQ多次交互確認才能成功刪除消息,同時由于MQ消息的存儲性能不高,導致讀寫性能較差,消費效率較低,往往導致隊列堆積嚴重;而如果消息較大,堆積嚴重,則主節點磁盤存儲空間就成為嚴重的瓶頸;因而ActiveMQ無法支持較大消息的傳遞。[0005]Kafka是一種輕量級的消息隊列模式,和ActiveMQ不同,其消息的狀態是由消費者維護的,即MQ只負責消息的存儲,不負責消息的狀態維護。而消息是否是被消費過,只有消費者自己知曉,這樣就極大地簡化了消息隊列MQ的設計復雜度。當然由于MQ中的消息不能任意刪除,因此對消息隊列磁盤存儲空間的要求就更高了。[0006]Kafka相對于ActiveMQ而言,取消了MQ對消息狀態的維護功能,即MQ中的所有消息只寫入不刪除,消費者在消費完成后無需和MQ交互確認。雖然降低了交互開銷,但由于消息不會被確認刪除,消息隊列的存儲空間仍然是其瓶頸,因而Kafka亦不能支持較大消息的傳遞。【
發明內容】[0007]鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的實現消息隊列的方法和裝置。[0008]根據本發明的一個方面,提供了一種實現消息隊列的裝置,包括:[0009]寫隊列接口,適于接收消息生產者的寫消息請求,所述寫消息請求中包括待寫入消息和所述待寫入消息所屬消息隊列的第一標識;[0010]讀隊列接口,適于接收消息消費者的讀消息請求,所述讀消息請求中包括待讀取消息所屬消息隊列的第二標識;[0011]消息處理器,適于根據消息隊列標識與分布式存儲系統中存儲表的對應關系,將待寫入消息存儲到與所述第一標識對應的存儲表中,以及,從與所述第二標識對應的存儲表中順序讀取一條消息,將讀取到的消息通過所述讀隊列接口發送到所述消息消費者。[0012]可選地,所述裝置還包括:對應關系建立器,適于建立消息隊列標識與分布式存儲系統中存儲表的對應關系。[0013]可選地,所述讀消息請求中還包括是否刪除讀取到的消息的第三標識;[0014]所述消息處理器還適于當根據所述第三標識確定需要刪除讀取到的消息,且從存儲表中順序讀取到一條消息后,從所述存儲表中刪除讀取到的消息。[0015]可選地,所述消息處理器通過調用所述分布式存儲系統的寫接口將消息寫入存儲表,通過調用所述分布式存儲系統的掃描接口從存儲表中順序讀取消息。[0016]可選地,所述分布式存儲系統為Cassandra系統。[0017]根據本發明的另一個方面,提供了一種實現消息隊列的方法,包括:[0018]接收消息生產者的寫消息請求,所述寫消息請求中包括待寫入消息和所述待寫入消息所屬消息隊列的第一標識;[0019]根據消息隊列標識與分布式存儲系統中存儲表的對應關系,將待寫入消息存儲到與所述第一標識對應的存儲表中;[0020]接收消息消費者的讀消息請求,所述讀消息請求中包括待讀取消息所屬消息隊列的第二標識;[0021]根據消息隊列標識與分布式存儲系統中存儲表的對應關系,從與所述第二標識對應的存儲表中順序讀取一條消息,將讀取到的消息發送到所述消息消費者。[0022]可選地,所述方法還包括:建立消息隊列標識與分布式存儲系統中存儲表的對應關系。[0023]可選地,所述讀消息請求中還包括是否刪除讀取到的消息的第三標識;[0024]所述方法還包括:當根據所述第三標識確定需要刪除讀取到的消息,且從存儲表中順序讀取到一條消息后,從所述存儲表中刪除讀取到的消息。[0025]可選地,通過調用所述分布式存儲系統的寫接口將消息存儲到存儲表,通過調用所述分布式存儲系統的掃描接口從存儲表中順序讀取消息。[0026]可選地,所述分布式存儲系統為Cassandra系統。[0027]根據本發明上述的一個或多個技術方案,通過引入分布式存儲系統作為消息隊列的存儲模塊,使得消息隊列能夠支持較大消息的存儲和傳遞,并提升了消息隊列的可擴展性。[0028]上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的【具體實施方式】。【專利附圖】【附圖說明】[0029]通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:[0030]圖1示出了生產者與消費者通過消息隊列進行通信的示意圖;[0031]圖2示出了根據本發明一個實施例的實現消息隊列的裝置結構圖;[0032]圖3示出了根據本發明一個實施例的實現消息隊列的裝置的應用實例;[0033]圖4示出了根據本發明一個實施例的實現消息隊列的方法中寫消息隊列的流程圖;[0034]圖5示出了根據本發明一個實施例的實現消息隊列的方法中讀消息隊列的流程圖。【具體實施方式】[0035]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。[0036]圖2示出了根據本發明一個實施例的實現消息隊列的裝置結構圖。參照圖2,所述實現消息隊列的裝置10可以包括寫隊列接口12、讀隊列接口14和消息處理器16。[0037]寫隊列接口12適于接收消息生產者20的寫消息請求,所述寫消息請求中包括待寫入消息和所述待寫入消息所屬消息隊列的第一標識。[0038]在計算機通信領域,消息生產者20—般指的是一個應用程序,該應用程序通常需要與另外一個應用程序即消息消費者30進行信息交互,這種信息交互通常是通過消息的傳遞來實現的,而消息隊列是在消息的傳輸過程中保存消息的容器,消息隊列的主要目的是提供路由并保證消息的正確傳遞。消息生產者20創建一個消息后,可以構建一個寫消息請求,并將所述寫消息請求發送到所述寫隊列接口12。一個消息隊列通常對應一對消息生產者和消息消費者,因此,為區分不同消息生產者所創建的消息,所述寫消息請求中除了攜帶待寫入消息之外,還會攜帶待寫入消息所屬的消息隊列的標識。[0039]在本發明實施例中,是將分布式存儲系統40作為消息隊列的存儲裝置,所述分布式存儲系統40中存儲有一個或多個存儲表,每個存儲表用于存儲一個消息隊列,存儲表的每條數據記錄對應一條消息,且每個存儲表在所述分布式存儲系統中存儲一份或多份(即具有一個或多個副本)。消息處理器16檢測到寫隊列接口12中有寫消息請求到達后,對所述寫消息請求進行解析,獲取其包括的待寫入消息和所述待寫入消息所屬消息隊列的第一標識,然后,根據消息隊列標識與分布式存儲系統40中存儲表的對應關系,將待寫入消息存儲到與所述第一標識對應的存儲表中。其中,所述對應關系可以預先建立并存儲在所述實現消息隊列的裝置10中。[0040]消息消費者30需要獲取消息進行處理時,會構造一個讀消息請求發送到讀隊列接口14,同樣,所述讀消息請求中會攜帶待讀取消息所屬消息隊列的第二標識。消息處理器16檢測到讀隊列接口14中有讀消息請求到達后,對所述讀消息請求進行解析,獲取其包括的待讀取消息所屬消息隊列的第二標識,然后,根據消息隊列標識與分布式存儲系統40中存儲表的對應關系,從與所述第二標識對應的存儲表中順序讀取一條消息,并將讀取到的消息通過所述讀隊列接口14發送到所述消息消費者30。[0041]這樣,通過引入分布式存儲系統作為消息隊列的存儲模塊,利用分布式存儲系統的存儲能力,就使得消息隊列能夠支持較大消息的存儲和傳遞,并提升了消息隊列存儲的可靠性和可擴展性。其中,所述可靠性是利用所述分布式存儲系統的冗余策略實現。所謂可擴展性是指,可以通過在分布式存儲系統中增加數據節點,來增加消息隊列的存儲空間。[0042]可選地,本發明實施例的實現消息隊列的裝置10還包括對應關系建立器(圖未示),適于建立消息隊列標識與分布式存儲系統中存儲表的對應關系。例如,消息生產者20和消息消費者30之間需要發起通信時,可以由所述對應關系建立器在所述分布式存儲系統40中創建一個存儲表,并在所述對應關系中增加一個記錄項,該記錄項記錄了這對消息生產者20和消息消費者30所需要使用的消息隊列與所創建的存儲表的對應關系。[0043]另外,在從存儲表中讀取到一條消息后,根據不同的實現策略,還可以確定是否將該消息從所述存儲表中刪除。具體地,所述讀消息請求中還可以包括是否刪除讀取到的消息的第三標識,相應地,所述消息處理器16還適于當根據所述第三標識確定需要刪除讀取到的消息,且從存儲表中順序讀取到一條消息后,從所述存儲表中刪除讀取到的消息。[0044]在具體實現時,所述消息處理器16可以通過調用所述分布式存儲系統40的寫接口44將消息寫入存儲表,并通過調用所述分布式存儲系統40的掃描接口46從存儲表中順序讀取消息。所述分布式存儲系統40中包括多個節點42(圖中示出了3個),節點42包括數據節點和接入節點兩種類型,其中,所述寫接口44和所述掃描接口44可以位于所述多個節點42中的接入節點中。[0045]本發明實施例的實現消息隊列的裝置10可以部署在一臺獨立的服務器上,該服務器能夠與所述分布式存儲系統40進行通信,即能夠調用所述分布式存儲系統40的寫接口44和掃描接口46對其中的存儲表進行存取。另外,本發明實施例的實現消息隊列的裝置10作為一個模塊存在與所述分布式存儲系統40的接入節點中。[0046]可選地,所述分布式存儲系統40為Cassandra系統。Cassandra是依賴分布式哈希表(DistributedHashTable,DHT)技術實現的一種典型的無中心節點的環形結構的分布式存儲系統。DHT是一種分布式存儲技術,在不需要中心節點的情況下,每個存儲節點負責一個小范圍的路由,并負責存儲小部分數據,從而實現整個DHT分布式集群的尋址和存儲。在Cassandra系統中,數據以鍵-值(Key-Value)對方式存儲,通過對外提供的讀寫接口以及全局數據掃描接口進行數據存取和訪問。[0047]Cassandra節點的角色分為兩種:接入節點和數據節點。接入節點負責計算數據及副本的分布,數據節點負責數據副本的存儲。在Cassandra系統中,每個節點都既作為接入節點,又作為數據節點而存在。為了保證數據的可靠性,Cassandra—般要將數據寫多份副本,并分散在不同的數據節點上。[0048]需要說明的是,在本發明實施例中,所述分布式存儲系統并不限于Cassandra系統,也可以是BigTable系統、Dynamo系統、HadoopHbase系統等其它任意的分布式存儲系統。[0049]以下給出本發明實施例的實現消息隊列的裝置的一個具體實現。[0050]參照圖3,該裝置是在Cassandra存儲集群之上封裝的一層名稱為MQ-Wrapper的中間件。該MQ-Wrapper中間件的主要作用是:對外向消息生產者(Producer)和消息消費者(Consumer)提供消息隊列的標準接口,即前述的寫隊列接口和讀隊列接口,用于正常的數據生產(produce)和數據消費(consume);對內則調用Casandra通用的寫接口(insert)和掃描接口(scan),進行消息的存儲與讀取。[0051]假如Producer需要發送一個100K的消息到Consumer,貝U進行如下操作:[0052](I)首先會通過MQ-Wrapper的produce(queue0,message0)接口,將messageO發送到queueO上,其中,messageO是待寫入消息,queueO是待寫入消息所屬消息隊列的標識;[0053](2)在MQ-Wrapper內部則直接調用Cassandra本身的insert接口將這條100K的消息寫入到存儲表table_queue0中,其中,table_queue0是queueO對應的存儲表。[0054]在Comsumer進行數據消費時候,則進行如下操作:[0055](I)通過MQ-Wrapper的consume(queueO,deleteOnGet)接口調用獲取一條消息進行消費,其中,queueO是待讀取消息所屬消息隊列的標識,deleteOnGet表征在讀取到消息后,是否在存儲表中將該消息刪除;[0056](2)在MQ-Wrapper內部則調用Casandra本身的scan接口,掃描存儲表table_queueO,并在consume(queueO,deleteOnGet)調用時按序返回一條消息。[0057](3)當consume(queueO,deleteOnGet)成功返回一條消息后,如果設置了deleteOnGet標記為真(true),則MQ-Wrapper會在其內部會自動將此消息從存儲表table_queueO中刪除。[0058]根據以上應用實例,消息存儲在Cassandra系統中,和普通鍵-值(key-value)對的存儲格式一致,消息采用三副本存儲,即以Cassandra自身的冗余策略實現消息的可靠性,每個消息隊列對應Cassandra中的一個存儲表,每條消息對應存儲表中的一條數據記錄,所有針對此隊列的生產、消費操作都圍繞著這個存儲表完成。如果設置該存儲表可寫入的value的最大值為100M,則該消息隊列即可支持的最大消息為100M大小。[0059]本發明實施例還提供一種實現消息隊列的方法,所述方法可以包括寫消息隊列和讀消息隊列兩個過程。[0060]圖4示出了根據本發明一個實施例的實現消息隊列的方法中寫消息隊列的流程圖,參照圖4,寫消息隊列的過程包括:[0061]步驟402,接收消息生產者的寫消息請求,所述寫消息請求中包括待寫入消息和所述待寫入消息所屬消息隊列的第一標識;[0062]在計算機通信領域,消息生產者一般指的是一個應用程序,該應用程序通常需要與另外一個應用程序即消息消費者進行信息交互,這種信息交互通常是通過消息的傳遞來實現的,而消息隊列是在消息的傳輸過程中保存消息的容器,消息隊列的主要目的是提供路由并保證消息的正確傳遞。一個消息隊列通常對應一對消息生產者和消息消費者,因此,為區分不同消息生產者所創建的消息,所述寫消息請求中除了攜帶待寫入消息之外,還會攜帶待寫入消息所屬的消息隊列的標識。[0063]步驟404,根據消息隊列標識與分布式存儲系統中存儲表的對應關系,將待寫入消息存儲到與所述第一標識對應的存儲表中。[0064]在本發明實施例中,是將分布式存儲系統作為消息隊列的存儲裝置,所述分布式存儲系統中存儲有一個或多個存儲表,每個存儲表用于存儲一個消息隊列,存儲表的每條數據記錄對應一條消息,且每個存儲表在所述分布式存儲系統中存儲一份或多份(即具有一個或多個副本)。在接收到消息生產者的寫消息請求后,對所述寫消息請求進行解析,獲取其包括的待寫入消息和所述待寫入消息所屬消息隊列的第一標識,然后,根據消息隊列標識與分布式存儲系統中存儲表的對應關系,就可以將待寫入消息存儲到與所述第一標識對應的存儲表中。[0065]可選地,本發明實施例的實現消息隊列的方法方法還包括:建立消息隊列標識與分布式存儲系統中存儲表的對應關系。[0066]圖5示出了根據本發明一個實施例的實現消息隊列的方法中讀消息隊列的流程圖,參照圖5,讀消息隊列的過程可以包括:[0067]步驟502,接收消息消費者的讀消息請求,所述讀消息請求中包括待讀取消息所屬消息隊列的第二標識;[0068]消息消費者需要獲取消息進行處理時,會構造一個讀消息請求,同樣,所述讀消息請求中會攜帶待讀取消息所屬消息隊列的第二標識。[0069]步驟504,根據消息隊列標識與分布式存儲系統中存儲表的對應關系,從與所述第二標識對應的存儲表中順序讀取一條消息,將讀取到的消息發送到所述消息消費者。[0070]在接收到消息消費者的讀消息請求到達后,對所述讀消息請求進行解析,獲取其包括的待讀取消息所屬消息隊列的第二標識,然后,根據消息隊列標識與分布式存儲系統中存儲表的對應關系,就可以從與所述第二標識對應的存儲表中順序讀取一條消息,并將讀取到的消息發送到所述消息消費者。[0071]另外,在從存儲表中讀取到一條消息后,根據不同的實現策略,還可以確定是否將該消息從所述存儲表中刪除。具體地,所述讀消息請求中還可以包括是否刪除讀取到的消息的第三標識;相應地,本發明實施例的實現消息隊列的方法方法還可以包括:當根據所述第三標識確定需要刪除讀取到的消息,且從存儲表中順序讀取到一條消息后,從所述存儲表中刪除讀取到的消息。[0072]在步驟404中,可以通過調用所述分布式存儲系統的寫接口將消息存儲到存儲表,在步驟504中,可以通過調用所述分布式存儲系統的掃描接口從存儲表中順序讀取消肩、O[0073]所述分布式存儲系統可以為Cassandra系統或者其它任意的分布式存儲系統。[0074]綜上所述,本發明實施例通過引入分布式存儲系統作為消息隊列的存儲模塊,使得消息隊列能夠支持較大消息的存儲和傳遞,并提升了消息隊列的可擴展性。[0075]在此提供的算法和顯示不與任何特定計算機、虛擬系統或者其它設備固有相關。各種通用系統也可以與基于在此的示教一起使用。根據上面的描述,構造這類系統所要求的結構是顯而易見的。此外,本發明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現在此描述的本發明的內容,并且上面對特定語言所做的描述是為了披露本發明的最佳實施方式。[0076]在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本發明的實施例可以在沒有這些具體細節的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。[0077]類似地,應當理解,為了精簡本公開并幫助理解各個發明方面中的一個或多個,在上面對本發明的示例性實施例的描述中,本發明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權利要求書由此明確地并入該【具體實施方式】,其中每個權利要求本身都作為本發明的單獨實施例。[0078]本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。[0079]此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。[0080]本發明的各個部件實施例可以以硬件實現,或者以在一個或者多個處理器上運行的軟件模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數字信號處理器(DSP)來實現根據本發明實施例的實現消息隊列的裝置中的一些或者全部部件的一些或者全部功能。本發明還可以實現為用于執行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現本發明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。[0081]應該注意的是上述實施例對本發明進行說明而不是對本發明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。【權利要求】1.一種實現消息隊列的裝置,包括:寫隊列接口,適于接收消息生產者的寫消息請求,所述寫消息請求中包括待寫入消息和所述待寫入消息所屬消息隊列的第一標識;讀隊列接口,適于接收消息消費者的讀消息請求,所述讀消息請求中包括待讀取消息所屬消息隊列的第二標識;消息處理器,適于根據消息隊列標識與分布式存儲系統中存儲表的對應關系,將待寫入消息存儲到與所述第一標識對應的存儲表中,以及,從與所述第二標識對應的存儲表中順序讀取一條消息,將讀取到的消息通過所述讀隊列接口發送到所述消息消費者。2.如權利要求1所述的裝置,其中,還包括:對應關系建立器,適于建立消息隊列標識與分布式存儲系統中存儲表的對應關系。3.如權利要求1所述的裝置,其中:所述讀消息請求中還包括是否刪除讀取到的消息的第三標識;所述消息處理器還適于當根據所述第三標識確定需要刪除讀取到的消息,且從存儲表中順序讀取到一條消息后,從所述存儲表中刪除讀取到的消息。4.如權利要求1所述的裝置,其中,所述消息處理器通過調用所述分布式存儲系統的寫接口將消息寫入存儲表,通過調用所述分布式存儲系統的掃描接口從存儲表中順序讀取消息。5.如權利要求1至4中任一項所述的裝置,其中,所述分布式存儲系統為Cassandra系統。6.一種實現消息隊列的方法,包括:接收消息生產者的寫消息請求,所述寫消息請求中包括待寫入消息和所述待寫入消息所屬消息隊列的第一標識;根據消息隊列標識與分布式存儲系統中存儲表的對應關系,將待寫入消息存儲到與所述第一標識對應的存儲表中;接收消息消費者的讀消息請求,所述讀消息請求中包括待讀取消息所屬消息隊列的第二標識;根據消息隊列標識與分布式存儲系統中存儲表的對應關系,從與所述第二標識對應的存儲表中順序讀取一條消息,將讀取到的消息發送到所述消息消費者。7.如權利要求6所述的方法,其中,還包括:建立消息隊列標識與分布式存儲系統中存儲表的對應關系。8.如權利要求6所述的方法,其中:所述讀消息請求中還包括是否刪除讀取到的消息的第三標識;所述方法還包括:當根據所述第三標識確定需要刪除讀取到的消息,且從存儲表中順序讀取到一條消息后,從所述存儲表中刪除讀取到的消息。9.如權利要求6所述的方法,其中,通過調用所述分布式存儲系統的寫接口將消息存儲到存儲表,通過調用所述分布式存儲系統的掃描接口從存儲表中順序讀取消息。10.如權利要求6至9中任一項所述的方法,其中,所述分布式存儲系統為Cassandra系統。【文檔編號】G06F9/46GK103761141SQ201310683683【公開日】2014年4月30日申請日期:2013年12月13日優先權日:2013年12月13日【發明者】王鋒申請人:北京奇虎科技有限公司,奇智軟件(北京)有限公司