java B2B2C Springcloud電子商城系統-Stream原理

Spring Cloud Stream 簡介java

Spring Cloud Stream 是一個用來爲微服務應用構建消息驅動能力的框架。它能夠基於Spring Boot 來建立獨立的,可用於生產的Spring 應用程序。他經過使用Spring Integration來鏈接消息代理中間件以實現消息事件驅動。Spring Cloud Stream 爲一些供應商的消息中間件產品提供了個性化的自動化配置實現,引用了發佈-訂閱、消費組、分區的三個核心概念。Spring Cloud Stream目前僅支持RabbitMQ、Kafka。編程

須要JAVA Spring Cloud大型企業分佈式微服務雲構建的B2B2C電子商務平臺源碼 一零三八七七四六二六框架

原理簡介分佈式

stream原理.jpg

如圖是Stream源碼的流程圖。微服務

Stream首先會動態註冊相關BeanDefinition,而且處理@StreamListener註解;而後在Bean實例初始化以後,會調用BindingService進行服務綁定;BindingService在綁定服務時會首先獲取特定的Binder綁定器,而後綁定Producer和Consumer;最後Stream的相關實例就會進行發送和接受消息的處理。代理

編程模型cdn

Binder中間件

Binder 是 Spring Cloud Stream 的一個抽象概念,是應用與消息中間件之間的粘合劑。 目前 Spring Cloud Stream 實現了 Kafka 和 Rabbit MQ 的binder。經過 binder ,能夠很方便的鏈接中間件,能夠動態的改變消息的destinations(對應於 Kafka 的topic,Rabbit MQ 的 exchanges),這些均可以經過外部配置項來作到。甚至能夠任意的改變中間件的類型而不須要修改一行代碼。blog

Publish-Subscribe事件

消息的發佈(Publish)和訂閱(Subscribe)是事件驅動的經典模式。Spring Cloud Stream 的數據交互也是基於這個思想。生產者把消息經過某個 topic 廣播出去(Spring Cloud Stream 中的 destinations)。其餘的微服務,經過訂閱特定 topic 來獲取廣播出來的消息來觸發業務的進行。

這種模式,極大的下降了生產者與消費者之間的耦合。即便有新的應用的引入,也不須要破壞當前系統的總體結構。

Consumer Groups

「Group」, Kafka 中的概念。Spring Cloud Stream 的這個分組概念的意思基本和 Kafka 一致。

微服務中動態的縮放同一個應用的數量以此來達到更高的處理能力是很是必須的。對於這種狀況,同一個事件防止被重複消費,只要把這些應用放置於同一個 「group」 中,就可以保證消息只會被其中一個應用消費一次。

Spring Cloud Stream提供了一系列的預先定義的註解來聲明輸入型和輸出型channel,業務系統基於這些channel與消息中間件進行通訊,而不是直接與消息中間件進行通訊。 java B2B2C Springcloud電子商城系統

相關文章
相關標籤/搜索