訊息中介軟體是在訊息的傳輸過程中儲存訊息(訊息傳遞過程中不能更改)的容器。訊息中介軟體再將訊息從它的原中繼到它的目標時充當中間人的作用。訊息中介軟體的主要目的是提供路由並保證訊息的傳遞;如果傳送訊息時接收者不可用,訊息佇列會保留訊息,知道可以成功傳遞為止,當然,訊息佇列儲存訊息也是有期限的。
訊息傳送者可以傳送乙個訊息而無須等待響應。訊息傳送者將訊息傳送到一條虛擬的通道(主題或佇列)上,訊息接受者則訂閱或者監聽該通道。一條訊息可能最終**乙個或多個訊息接受者,這些接收者都無需對訊息傳送者做出同步響應。整個過程是非同步的。比如使用者資訊註冊。註冊完畢後過段時間才傳送郵件或者簡訊
訊息中介軟體(mom)傳遞模型:
應用程式a和b都可以互相成為生產者和消費者
點對點模型(ptp)
定向,一對一關係
點對點模型特點:
每個訊息對應乙個消費者;傳送者和接收者沒有時間依賴;接收者確認訊息接收和處理成功(成功了就會刪除,不成功下次來拉資料時還存在)
每個訊息會有對應message id
點對點模型:
發布-訂閱模型(pub/sub)
一對多關係
發布-訂閱模型特點:每個訊息可以有多個訂閱者;客戶端只有訂閱後才能接收訊息;持久訂閱和非持久訂閱(訂閱過期時間)
發布-訂閱模型:
真實環境下會儲存生產者-消費者的訊息傳輸軌跡,暫用空間大,查詢難
發布者和訂閱者之間有時間依賴;
四、訊息中介軟體應用場景:
場景1:**註冊使用者,使用者註冊成功後,過段時間會傳送確認郵件或簡訊
場景2:日誌進行集中收集,用於計算pv、使用者行為分析
日誌進行集中收集,用於計算pv (page view)即頁面瀏覽量、使用者行為分析
nginx配置分流實現小流量(日誌分析,分析使用者行為,確認那種方案適合)
實現日誌收集工具:scribe、chukwa、kafka、flume等
訊息中介軟體負責訊息暫存功能
場景3:資料複製場景
狀態機(fsm):保證資料完整性(做md5校驗)、資料的順序性
場景4:延遲訊息傳送和暫存
訊息傳送後暫時不用,某個時間同時放出來進行壓力測試
場景5:發布訂閱模式
快取資料同步更新
往應用推送資料
cache都是本地應用伺服器(tomcat等)
五、訊息中介軟體分類:
1、(push)推訊息模型:
消費生產者將訊息傳送給訊息傳遞服務,訊息傳遞服務又將訊息推給訊息消費者。(時效性高)
2、(pull)拉訊息模型:
消費之請求訊息服務接收訊息,訊息生產者從中介軟體拉該訊息(時效性不怎麼高)
3、推訊息模型和拉訊息模型的區別:
服務端:訊息中介軟體
客戶端:訊息消費者
訊息儲存:訊息需要儲存到訊息中介軟體裡;
儲存推送軌跡:需要知道哪些訊息推送成功,哪些失敗
消費者負載均衡:輪詢方式把訊息推到不同機器
集中式:訊息只能推到乙個地方進行處理(單點或雜湊)
訊息中介軟體
1.訊息的優先順序 2.訊息排序 3.訊息過濾 4.訊息持久化 5.訊息重試 6.事務的支援 7.broker滿 生產者,佇列,消費者 訊息佇列的優點 1 解耦2 非同步訊息,系統響應 在jms中,有兩種訊息模型 點對點模式和發布訂閱模式。1.在點對點模式中 有三種角色 1 訊息佇列,傳送者,接受者...
訊息中介軟體
如何理解訊息中介軟體?訊息中介軟體是儲存訊息的乙個容器,與資料庫不同的是資料庫儲存的資料是可以被修改的,而訊息中介軟體一般不會被修改 訊息中介軟體在消費的生產者與消費者產生,相當於乙個中間人的角色,提供了路由保證訊息的傳遞,如果消費者不能及時接收,訊息會保留下來,知道消費者上線 保證在存活期內 訊息...
訊息中介軟體
activemq rabbitmq rocketmq kafka 效能 單台 6000 萬級 12000 十萬級百萬級 訊息持久化 支援支援 支援支援 多語言支援 支援支援 很少支援 社群活躍度高高 很少高支援協議 多 jms amqp 多 amqp stomp mqtt 少少 綜合評價 優點 成熟...