1. 程式人生 > >Spring Cloud_26_訊息驅動/Stream介紹

Spring Cloud_26_訊息驅動/Stream介紹

訊息驅動/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下用於分散式處理資料流的框架,有容錯、水平拓展等特性