什麼是消息中間件
利用高效的消息傳遞機制進行平臺無關的數據交流
基於數據通信來進行分佈式系統的集成
通過提供消息傳遞和消息排隊模型,它可以在分佈式環境下擴展進程間的通信
應用場景
跨系統數據傳遞、高併發流量肖鋒、數據異步處理等。。
常用的消息中間件
ActiveMQ、RabbitMq、kafka、RocketMQ
核心設計
一種具備接收請求、保存數據、發送數據等功能的網絡應用
和一般網絡應用的區別是他主要負責數據的接收和傳遞,所以性能一般都高於普通程序
5大核心組成
協議
持久化機制
消息分發機制
高可用設計
高可靠設計
協議
協議是計算機之間通信時共同遵從的一組約定,都遵守相同的約定,計算機之間才能相互交流
是對數據格式和計算機之間交換數據是必須遵守的規則的正式描述
協議三要素
1、語法:即數據與控制信息的結構或格式 http規定了請求報文和相應報文的具體格式
2、語義:即需要發出何種控制信息,完成何種動作以及做出何種相應 客戶端主動發起的操作成爲請求
3、時序(同步):即事件實現順序的詳細說明 一個請求對應一個響應
消息中間件常用的協議
OpenWire、AMQP、MQTT、Kafka、OpenMessaaage
爲什麼直接使用Http協議?
http內容複雜,短鏈接不適合長時間對消息中間件操作
AMQP(Advanced Message Queuing Protocol):
RabbitMq、ACTIVEMQ
高級消息隊列協議04年JPMorgan Chase(摩根大通集團)聯合其他公司共同設計
特性:
事務支持、持久化支持,出生金融行業,在可靠性消息處理上具備天然的優勢
MQTT(Message Queuing Telemetry Transport):
RabbitMq、ACTIVEMQ
消息隊列搖測傳輸是IBM開發的一個即時通訊協議,物聯網系統架構中的重要組成部分
特性:
輕量、結構簡單、傳輸快、沒有事務支持、沒有持久化相關設計
應用場景:
使用於計算能力有限、低帶寬、網絡不穩定的場景
OpenMessaaage:
RabbitMq
是由阿里發起,與雅虎、滴滴出行、Streamlio等公司共同參與創立的分佈式中間件、流處理領域的應用開發標準
是國內首個在全球範圍內發起的分佈式消息領域國際標準
特性:
結構簡單、解析快、有事務設計、有持久化設計
Kafka:
Kafka
基於TCP爲禁止協議。消息內部是通過長度來分割,有一些基本數據類組成
特性:
結構簡單、解析快、無事務設計、有持久化設計
持久化
將數據存入磁盤,而不是存在內存中隨服服務重啓而消失,使數據能夠永久保存叫持久化
消息分發
高可用
主從共享
主從同步
多主機羣轉發
Master-Slave與Broker-Cluster結合
高可靠
指系統可以無障礙的持續運行。比如一個系統從來不崩潰、報錯,或者崩潰、報錯的機率較低就爲高可靠
在高併發業務場景下,如果不能保證系統的高可靠,那造成的損失將會非常嚴重
消息傳輸可靠:通過協議來保證系統間數據解析的正確性
消息存儲可靠:通過持久化來保證消息的存儲可靠性