iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0
Software Development

事件驅動電力交易平台:Spring Boot 實戰系列 第 1

IThome 鐵人賽 Day 1|打造電力交易平台:系統設計與技術藍圖

  • 分享至 

  • xImage
  •  

這個系列將分享我在打造一個模擬「電力交易所(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)只需要關心事件本身,而不必耦合每個服務的內部邏輯。https://ithelp.ithome.com.tw/upload/images/20250913/20178762E3DXCvU5N8.png

技術棧

在技術選型上,我使用了:

  • Spring Boot 全家桶:建構多模組微服務
  • RabbitMQ:作為事件傳遞骨幹,確保模組間解耦與可靠性
  • Redis:作為撮合引擎的訂單簿儲存與查詢層
  • OpenAPI + Generator:API 定義與自動生成 DTO,保持介面一致性
  • Spring Cloud Contract:用於事件契約測試,確保跨服務溝通正確
  • Testcontainers:支援單元與整合測試,模擬外部依賴

小結

這是我近期的練習專案,一套從開發流程到部署測試的設計。接下來的文章,我會逐步分享各模組的設計邏輯與實作細節,從 API 設計、事件傳遞到撮合流程,一步步把這個交易平台具象化


系列文
事件驅動電力交易平台:Spring Boot 實戰1
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言