Spring Cloud_26_訊息驅動/Stream介紹
阿新 • • 發佈:2019-01-04
訊息驅動/Stream介紹
1、關於訊息驅動
訊息驅動Bean
用於處理企業之間的訊息通訊,SpringCloud提供了相關模組,基於這些模組可以在微服務中構建訊息應用,讓微服務可以與其他服務元件進行訊息通訊
訊息代理中介軟體
2、訊息代理程式結構
- 目前市面上有很多訊息代理中介軟體,如ActivitiMQ、RabbitMQ
- 在使用這些訊息代理中介軟體的時候,我們需要使用其API進行訊息的傳送與接收
- 訊息中介軟體用來維護訊息
- (為什麼不直接傳送,還經過訊息中介軟體?)因為當訊息生產者/消費者過多,則它們之間的關係就會混亂,可以將訊息中介軟體理解為“郵局”
3、使用Stream後的程式結構
SpringCloud提供了Stream框架
在微服務中幫我們簡化訊息開發
- 真正連線RabbitMQ中介軟體就是Stream
- 目前Stream提供了RabbitMQ和Kafka兩個訊息代理實現,可以通過配置使用這兩個訊息代理
4、RabbitMQ與AMQP
RabbitMQ
輕量級訊息代理中介軟體
支援多種訊息協議、分散式部署AMQP
協議,類似HTTP似的協議
高階訊息佇列協議
定義了訊息客戶端與訊息中介軟體之間的協議
基於這個協議,訊息客戶端與訊息中間之間的開發不受開發語言與具體產品的約束
5、Kafka介紹
Topic
內部使用Topic儲存資料,生產者的訊息會被髮送至Topic中,Topic儲存各類的資料,每一條資料都是使用鍵值儲存,在一個Topic下包含一個或者多個物理分割槽,物理分割槽中儲存資料內容和索引,有可能會儲存在不同的伺服器中,對於客戶端而言,只需要關心訊息被髮送到哪個Topic
鍵值儲存資料
- Apache下用於分散式處理資料流的框架,有容錯、水平拓展等特性