rabbitmq消息中間簡介

消息(Message)是指在應用項目間傳遞數據。消息可以非常簡單,如就是一個字符串,可以是其他的數據類型及對象。
消息隊列中間件(Message Queue Middleware,簡稱爲MQ)是指利用高效可靠的消息傳遞機制進行與平臺無關的數據交流,並基於數據通信來進行分佈式系統的集成。通過提供消息傳遞和消息排隊模型,它可以在分佈式環境下擴展進程間的通信。
消息隊列中間件,也可以稱爲消息隊列或者消息中間件。它一般有兩種傳遞模式;點對點(p2p,Point-to-Point)模式和發佈/訂閱(Pub/Sub)模式。點對點模式是基於隊列的,消息生產者發送消息到隊列,消息消費者從隊列中接收消息,隊列的存在使得消息的異步傳輸成爲可能。發佈訂閱模式定義瞭如何向一個內容節點發布和訂閱消息,這個內容節點稱爲主題(topic),主題可以認爲是消息傳遞的中介,消息發佈者將消息發佈到某個主題,而消息訂閱者則從主題中訂閱消息。主題使得消息的訂閱者與消息的發佈者互相保持獨立,不需要進行接觸即可保證消息的傳遞,發佈/訂閱模式在消息的一對多廣播時採用。
消息中間件的作用
1、解耦:在項目啓動之初來預測將來會碰到什麼需求是極其困難的。消息中間件在處理過程中間插入了一個隱含的、基於數據的接口層,兩邊的處理過程都要事先這一接口,這允許你獨立地擴展或修改兩邊的處理過程,只要確保它們遵守同樣的接口約束即可。
2、冗餘(存儲):有些情況下,處理數據的過程會失敗。消息中間件可以把數據進行持久化直到它們已經被完全處理,通過這一方式避免了數據丟失風險。在把一個消息從消息中間件中刪除之前,需要你的處理系統明確地指定該消息已經被處理完成,從而確保你的數據被安全地保存直到使用完畢。
3、擴展性:因爲消息中間件解耦了應用的處理過程,所以提高消息入隊和處理的效率是很容易的,只要另外增加處理過程即可,不需要修改代碼,也不需要調節參數。
4、削峯:在訪問量劇增的情況下,應用依然需要繼續發揮作用,但是這樣的突發流量並不常見。如果以能處理這類峯值爲標準而投入資源,無疑是巨大的浪費。使用消息中間件能夠使關鍵組件支撐組件支撐突發訪問壓力,不會因爲突發的超負荷請求而完全崩潰。
5、可恢復性:當系統一部分組件失效時,不會影響到整個系統。消息中間件降低了進程間的耦合度,所以即使一個處理消息的進程掛掉,加入消息中間中的消息依然可以在系統恢復後進行處理。
6、順序保證:在大多數使用場景下,數據處理的順序很重要,大部分消息中間件支持一定程度上的順序性。
7、緩衝:在任何重要的系統中,都會存在需要不同處理時間的元素。消息中間件通過一個緩衝來幫助任務最高效率執行,寫入消息中間件的處理會儘可能快速。該緩衝層有助於控制和優化數據流經過系統的速度。
8、異步通信:在很多時候應用不想也不需要立即處理消息。消息中間件提供了異步處理機制,允許應用吧一些消息放入消息中間件中,但並不立即處理它,在之後需要的時候再慢慢處理。
rabbitmq的具體特點可以概括如下幾點:
1、可靠性:RabbitMq使用一些機制來保證可靠性,如持久化,傳輸確認及發佈確認等。
2、靈活的路由:在消息進入隊列之前,通過交換器來路由消息。
3、擴展性:多個RabbitMQ節點可以組成一個集羣,也可以根據實際業務情況動態地擴展集羣中節點。
4、高可用性:隊列可以在集羣中的機器上設置鏡像,使得在部分節點出現問題的情況下隊列依然可用。
5、多種協議:RabbitMQ除了原生支持AMQP協議,還支持STOM、MQTT等多種消息中間件協議。
6、多語言客戶端:RabbitMQ幾乎支持所有常用的語言,比如java、Python、Ruby、PHP、C#、JavaScript等。
7、管理界面:RabbitMQ提供了一個易用的用戶界面,使得用戶可以監控和管理消息、集羣中的節點等。
8、插件機制:RabbitMQ提供了許多插件,以實現從多個方面進行擴展,當然也可以自定義插件。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章