RocketMq(一)初識消息中間件

一、對消息的理解

  消息即爲數據(data),數據有必定的規則、長度、大小。java

  Java Message Service(Java消息服務)簡稱JMS,爲Java 程序提供一種通用的方式,來建立、發送、接收以及讀取企業消息系統的消息。數據庫

  標準JMSJSR914):https://www.jcp.org/en/jsr/detail?id=914 apache

  JMS 元素:服務器

 

  一、Provider提供方:服務提供者網絡

 

  二、Producer生產者:建立和發送JMS消息的客戶端架構

 

  三、Consumer消費者:接收JMS消息的客戶端異步

 

  四、Client客戶端:生產或消費消息的應用&進程分佈式

 

  五、Message消息:服務端與客戶端之間的傳輸數據對象ide

 

  六、Queue隊列 :包含待讀取消息的準備區域(點對點)性能

 

  七、Topic主題:發佈消息的分佈機制(發佈&訂閱)

  JMS提供五種消息主體:

  一、BytesMessage(字節)

  二、StreamMessage(流)

  三、TextMessage(文本、字符串)

  四、MapMessage(屬性集合)

  五、ObjectMessage(對象)

 

二、對中間件的理解

  中間件是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不一樣的技術之間共享資源。中間件位於客戶機/ 服務器的操做系統之上,管理計算機資源和網絡通信,爲咱們提供發送消息的程序或者服務。

  主流消息中間件有:

  一、ActiveMq(嚴格jms jsr914

  二、RabbitMq

  三、RocketMq

  四、Kafka

  .....等多種不常是在開發中使用的消息中間件。

三、爲何要用消息中間件

  最重要的帶來異步以及系統之間的解耦

  未使用MQ的系統之間調用狀況圖:

  

  使用MQ的系統之間調用狀況圖:帶來了異步(提升訂單系統的性能),系統進行了解耦

  

 

 

四、什麼是RocketMq

  由國內阿里開源 java語言寫的。貢獻給apache ,做爲apache 的維護開發。簡稱Rmq並無嚴格遵循jms規範(參考)。自己電商背景有關。

  RcoketMQ 是一款低延遲、高可靠、可伸縮、易於使用的消息中間件,由java進行開發。

五、爲何選擇RocketMq

  一、穩定無單點故障 不會由於某臺機器或者某個節點宕機而影響系統正常使用

  二、 集羣功能完善

  三、經歷過雙十一

  四、Java語言實現

  五、架構輕、源碼可讀性好

  七、生態圈完善,配套好

  八、開源社區活躍

 六、RocketMq的標準術語

  Producer

  消息生產者,生產者的做用就是將消息發送到 MQ,生產者自己既能夠產生消息,如讀取文本信息等。也能夠對外提供接口,由外部應用來調用接口,再由生產者將收到的消息發送到 MQ。

  Producer Group

  生產者組,簡單來講就是多個發送同一類消息的生產者稱之爲一個生產者組。在這裏能夠不用關心,只要知道有這麼一個概念便可。

  Consumer

  消息消費者,簡單來講,消費 MQ 上的消息的應用程序就是消費者,至於消息是否進行邏輯處理,仍是直接存儲到數據庫等取決於業務須要。

  Consumer Group

  消費者組,和生產者相似,消費同一類消息的多個 consumer 實例組成一個消費者組。

  Topic

  Topic 是一種消息的邏輯分類,好比說你有訂單類的消息,也有庫存類的消息,那麼就須要進行分類,一個是訂單 Topic 存放訂單相關的消息,一個是庫存 Topic 存儲庫存相關的消息。

  Message

  Message 是消息的載體。一個 Message 必須指定 topic,至關於寄信的地址。Message 還有一個可選的 tag 設置,以便消費端能夠基於 tag 進行過濾消息。也能夠添加額外的鍵值對,例如你須要一個業務 key 來查找 broker 上的消息,方便在開發過程當中診斷問題。

  Tag

  標籤能夠被認爲是對 Topic 進一步細化。通常在相同業務模塊中經過引入標籤來標記不一樣用途的消息。

  Broker

  Broker 是 RocketMQ 系統的主要角色,其實就是前面一直說的 MQ。Broker 接收來自生產者的消息,儲存以及爲消費者拉取消息的請求作好準備。

  Name Server

  Name Server 爲 producer 和 consumer 提供路由信息。

七、RocketMq官方文檔

http://rocketmq.apache.org/docs/simple-example

相關文章
相關標籤/搜索