使用Spring Cloud Stream和Spring State Machine建立事件驅動的微服務案例
這是一個事件流處理微服務開源github示例。
在事件驅動的微服務架構中,領域事件的概念對於每個服務的行為至關重要。隨著微服務架構的普及,CQRS(Command Query Responsibility Segregation)與Event Sourcing結合使用的流行做法在應用程式中變得越來越普遍。
此示例專案演示瞭如何使用Spring Boot和Spring Cloud構建事件驅動的微服務的端到端示例。該專案旨在展示構建處理HTTP和AMQP協議以交換訊息的微服務的理想開發過程。
演示的概念:
- Event Sourcing
- 事件流處理
- 修復部分失敗
- 補償交易事務
- 最終的一致性
- 超媒體事件日誌
- 無伺服器函式
涉及Spring專案:
架構
這個案例架構中的每個微服務分解為三個不同的可獨立部署的元件。
上圖詳細說明了Accounts的有界上下文的系統體系結構,其中包括每個Backing Service,Microservice和AWS 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中部分可用。負載模擬器流模組將開始將事件緩慢地泵壓入系統,您將能夠在分析部分中看到事件,您可以在其中看到計數器測量事件負載隨時間的變化。
無伺服器函式
此參考體系結構中的每個有界上下文都包含一組動作對映函式,這些函式可以部署為無伺服器函式。要了解有關其在實踐中的工作原理的更多資訊,請檢視帳戶工作者應用程式的文件。
相關文章
- 使用Spring Cloud Stream和RabbitMQ實現事件驅動的微服務SpringCloudMQ事件微服務
- 訊息驅動式微服務:Spring Cloud Stream & RabbitMQ微服務SpringCloudMQ
- Spring Cloud Stream微服務訊息框架SpringCloud微服務框架
- springCloud學習5(Spring-Cloud-Stream事件驅動)SpringGCCloud事件
- (十七) 整合spring cloud雲架構 -訊息驅動 Spring Cloud StreamSpringCloud架構
- spring cloud 和 阿里微服務spring cloud AlibabaSpringCloud阿里微服務
- Spring Cloud Stream事件路由 - spring.ioSpringCloud事件路由
- 學習使用Spring Boot和Spring Cloud建立微服務架構的5本書 - hackernoonSpring BootCloud微服務架構
- spring微服務實戰(二):使用Spring Boot建立微服務微服務Spring Boot
- 事件驅動的微服務-事件驅動設計事件微服務
- 基於Istio/gRPC/Redis/BigQuery/Spring Boot/Spring Cloud和Stackdriver的微服務案例RPCRedisSpring BootCloud微服務
- Spring Cloud構建微服務架構:訊息驅動的微服務(消費組)【Dalston版】SpringCloud微服務架構
- 基於Spring Cloud Netflix的TCC柔性事務和EDA事件驅動示例SpringCloud事件
- 微服務Spring Cloud17_Spring Cloud概述3微服務SpringCloud
- Spring Cloud微服務-全棧技術與案例解析SpringCloud微服務全棧
- Spring:事件驅動Spring事件
- spring cloud 微服務實戰SpringCloud微服務
- spring cloud分散式微服務:Spring Cloud ConfigSpringCloud分散式微服務
- 詳解Spring Cloud和Docker的微服務架構SpringCloudDocker微服務架構
- Spring Cloud 微服務的那點事SpringCloud微服務
- 基於Spring Cloud的微服務落地SpringCloud微服務
- spring cloud微服務分散式雲架構Spring Cloud ZuulSpringCloud微服務分散式架構Zuul
- spring cloud微服務分散式雲架構-Spring Cloud BusSpringCloud微服務分散式架構
- 微服務 | Spring Cloud(一):從單體SSM 到 Spring Cloud微服務SpringCloudSSM
- 使用 spring reactor 非同步事件驅動SpringReact非同步事件
- 事件驅動的微服務-建立第三方庫事件微服務
- Spring IO 2019大會上Axon+Spring的事件驅動微服務和CQRS原始碼專案Spring事件微服務原始碼
- 基於Spring Boot和Spring Cloud實現微服務架構Spring BootCloud微服務架構
- Spring Cloud 終結篇之訊息驅動--stream 大集合SpringCloud
- 微服務:spring-cloud-archaius 起步微服務SpringCloudAI
- [譯] JWT 與 Spring Cloud 微服務JWTSpringCloud微服務
- Spring Cloud構建微服務架構-spring cloud服務監控中心SpringCloud微服務架構
- spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- 使用Spring Boot、Spring State Machine Framework和Zookeeper構建分散式狀態機 - ÖzdinçÇelikelSpring BootMacFramework分散式
- spring cloud微服務分散式雲架構--hystrix的使用SpringCloud微服務分散式架構
- Spring Cloud微服務(一):公共模組的搭建SpringCloud微服務
- 基於事件溯源與CDC的事件驅動微服務架構案例原始碼事件微服務架構原始碼
- RocketMQ 整合 Spring Cloud StreamMQSpringCloud