這個系列將分享我在打造一個模擬「電力交易所(EAP: Electricity Auction Platform)」的後端系統時所選擇的技術與設計思維。靈感來自我碩士時研究過的相關題目,我希望實作一個支援高頻率掛單撮合、資產鎖定與歷史紀錄查詢的事件驅動微服務系統。主旨上是為了在實作中學習Spring-boot的相關功能,提升自己。
在架構上,我採用了 Spring Boot 建構多個模組,包括:
- order-service:負責掛單、查詢、撮合事件發送
- wallet-service:管理資產鎖定、扣款邏輯
- match-engine:處理 Redis 中的訂單撮合與更新
- eap-mcp:使用spring-ai 將內部系統整合給LLM使用進行市場模擬
整體系統透過事件驅動的方式串接,讓各模組之間維持鬆耦合。
事件流與狀態推進
在這個系統裡,每筆訂單的生命週期是透過事件逐步推進:
- OrderCreateEvent:使用者送出掛單,系統建立訂單並標記為 PENDING。
- OrderCreatedEvent:Wallet 完成資產核定,訂單進入 CREATED 狀態,可以進行撮合。
- OrderMatchedEvent:Match Engine 完成撮合,訂單更新為 MATCHED,並通知 Wallet 做最終資產結算。
- 這樣的事件流讓狀態更新透明可追蹤,前端或外部模擬系統(例如 LLM)只需要關心事件本身,而不必耦合每個服務的內部邏輯。
技術棧
在技術選型上,我使用了:
- Spring Boot 全家桶:建構多模組微服務
- RabbitMQ:作為事件傳遞骨幹,確保模組間解耦與可靠性
- Redis:作為撮合引擎的訂單簿儲存與查詢層
- OpenAPI + Generator:API 定義與自動生成 DTO,保持介面一致性
- Spring Cloud Contract:用於事件契約測試,確保跨服務溝通正確
- Testcontainers:支援單元與整合測試,模擬外部依賴
小結
這是我近期的練習專案,一套從開發流程到部署測試的設計。接下來的文章,我會逐步分享各模組的設計邏輯與實作細節,從 API 設計、事件傳遞到撮合流程,一步步把這個交易平台具象化