第3集 高級訊息佇列協議AMQP介紹和MQTT拓展
簡介:介紹什么是AMQP高級訊息佇列協議和MQTT科普
-
背景
- JMS或者NMS都沒有標準的底層協議,它們可以在任何底層協議上運行,但是API是與編程語言系結的,AMQP解決了這個問題,它使用了一套標準的底層協議
-
什么是AMQP
- AMQP(advanced message queuing protocol)在2003年時被提出,最早用于解決金融領不同平臺之間的訊息傳遞互動問題,就是是一種協議,兼容JMS
- 更準確說的鏈接協議 binary- wire-level-protocol 直接定義網路交換的資料格式,類似http
- 具體的產品實作比較多,RabbitMQ就是其中一種
-
特性
-
獨立于平臺的底層訊息傳遞協議
-
消費者驅動訊息傳遞
-
跨語言和平臺的互用性、屬于底層協議
-
有5種交換型別direct,fanout,topic,headers,system
-
面向快取的、可實作高性能、支持經典的訊息佇列,回圈,存盤和轉發
-
支持長周期訊息傳遞、支持事務(跨訊息佇列)
-
-
AMQP和JMS的主要區別
- AMQP不從API層進行限定,直接定義網路交換的資料格式,這使得實作了AMQP的provider天然性就是跨平臺
- 比如Java語言產生的訊息,可以用其他語言比如python的進行消費
- AQMP可以用http來進行類比,不關心實作介面的語言,只要都按照相應的資料格式去發送報文請求,不同語言的client可以和不同語言的server進行通訊
- JMS訊息型別:TextMessage/ObjectMessage/StreamMessage等
- AMQP訊息型別:Byte[]
-
科普:大家可能也聽過MQTT
-
MQTT: 訊息佇列遙測傳輸(Message Queueing Telemetry Transport )
-
背景:
- 我們有面向基于Java的企業應用的JMS和面向所有其他應用需求的AMQP,那這個MQTT是做啥的?
-
原因
- 計算性能不高的設備不能適應AMQP上的復雜操作,MQTT它是專門為小設備設計的
- MQTT主要是是物聯網(IOT)中大量的使用
-
特性
- 記憶體占用低,為小型無聲設備之間通過低帶寬發送短訊息而設計
- 不支持長周期存盤和轉發,不允許分段訊息(很難發送長訊息)
- 支持主題發布-訂閱、不支持事務(僅基本確認)
- 訊息實際上是短暫的(短周期)
- 簡單用戶名和密碼、不支持安全連接、訊息不透明
-
第4集 架構師的解決方案-業界主流訊息佇列和技術選型講解
簡介:對比當下主流的訊息佇列和選擇問題
-
業界主流的訊息佇列:Apache ActiveMQ、Kafka、RabbitMQ、RocketMQ
-
ActiveMQ:http://activemq.apache.org/
- Apache出品,歷史悠久,支持多種語言的客戶端和協議,支持多種語言Java, .NET, C++ 等
- 基于JMS Provider的實作
- 缺點:吞吐量不高,多佇列的時候性能下降,存在訊息丟失的情況,比較少大規模使用
-
Kafka:http://kafka.apache.org/
- 是由Apache軟體基金會開發的一個開源流處理平臺,由Scala和Java撰寫,Kafka是一種高吞吐量的分布式發布訂閱訊息系統,它可以處理大規模的網站中的所有動作流資料(網頁瀏覽,搜索和其他用戶的行動),副本集機制,實作資料冗余,保障資料盡量不丟失;支持多個生產者和消費者
- 類似MQ,功能較為簡單,主要支持簡單的MQ功能
- 缺點:不支持批量和廣播訊息,運維難度大,檔案比較少, 需要掌握Scala
-
RocketMQ:http://rocketmq.apache.org/
- 阿里開源的一款的訊息中間件, 純Java開發,具有高吞吐量、高可用性、適合大規模分布式系統應用的特點, 性能強勁(零拷貝技術),支持海量堆積, 支持指定次數和時間間隔的失敗訊息重發,支持consumer端tag過濾、延遲訊息等,在阿里內部進行大規模使用,適合在電商,互聯網金融等領域
- 基于JMS Provider的實作
- 缺點:社區相對不活躍,更新比較快,純java支持
-
RabbitMQ:http://www.rabbitmq.com/
- 是一個開源的AMQP實作,服務器端用Erlang語言撰寫,支持多種客戶端,如:Python、Ruby、.NET、Java、C、用于在分布式系統中存盤轉發訊息,在易用性、擴展性、高可用性等方面表現不錯
- 缺點:使用Erlang開發,閱讀和修改原始碼難度大
-
-
什么我們講RabbitMQ呢,只要你目標是高級工程師或者架構師,就要多學,才知道解決方案+適合場景
-
因為這個是rabbitmq專題課程
-
下集專門介紹rabbitmq
-
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325240.html
標籤:Java
