使用Spring Cloud Stream和Spring State Machine建立事件驅動的微服務案例

banq發表於2019-06-30

這是一個事件流處理微服務開源github示例。
在事件驅動的微服務架構中,領域事件的概念對於每個服務的行為至關重要。隨著微服務架構的普及,CQRS(Command Query Responsibility Segregation)與Event Sourcing結合使用的流行做法在應用程式中變得越來越普遍。

此示例專案演示瞭如何使用Spring Boot和Spring Cloud構建事件驅動的微服務的端到端示例。該專案旨在展示構建處理HTTP和AMQP協議以交換訊息的微服務的理想開發過程。

演示的概念:
  • Event Sourcing
  • 事件流處理
  • 修復部分失敗
  • 補償交易事務
  • 最終的一致性
  • 超媒體事件日誌
  • 無伺服器函式

涉及Spring專案:


架構
這個案例架構中的每個微服務分解為三個不同的可獨立部署的元件。

使用Spring Cloud Stream和Spring State Machine建立事件驅動的微服務案例上圖詳細說明了Accounts的有界上下文的系統體系結構,其中包括每個Backing ServiceMicroserviceAWS Lambda Function的可部署單元。

要構建和執行實驗專案,請執行以下命令:
mvn clean install -DskipTests -DskipDockerBuild

您需要在本地計算機上執行Apache Kafka,Apache Zookeeper和Redis。構建過程完成後,您可以在本地計算機上啟動Spring Cloud Data Flow伺服器,該伺服器將協調每個微服務應用程式。

在啟動Spring Cloud Data Flow之前,請確保您正在執行每個支援服務,如上所述。此外,您將需要啟動Eureka伺服器。

cd ./platform-services/discovery
mvn spring-boot:run


一旦Eureka啟動,您就可以啟動Spring Cloud Data Flow伺服器,該伺服器將引導Spring Cloud Stream模組。

cd ./platform-services/data-flow-server
mvn spring-boot:run


將匯入Spring Cloud Stream應用程式,並且事件流將在資料流伺服器的streams中部分可用。負載模擬器流模組將開始將事件緩慢地泵壓入系統,您將能夠在分析部分中看到事件,您可以在其中看到計數器測量事件負載隨時間的變化。

無伺服器函式
此參考體系結構中的每個有界上下文都包含一組動作對映函式,這些函式可以部署為無伺服器函式。要了解有關其在實踐中的工作原理的更多資訊,請檢視帳戶工作者應用程式的文件。
 

相關文章