modular
項目介紹
簡單地多模塊項目,模塊間經過kafka進行消息傳遞,使用Mysql做臨時存儲、Redis做緩存、MongoDB做最終數據存儲。
項目代碼獲取:https://github.com/pysasuke/m...git
項目結構
基本流程
因爲只是demo,故只用簡單地first、second、third指代具體服務,切以third服務爲最終服務,handler也是使用手動構造的數據redis
- 請求發起
-
經handler模塊後sql
- 向Mysql寫入一條數據
- 向Redis寫入一條數據
- 向Kafka發送一條消息
-
first模塊收到handler模塊發送的消息後緩存
- 從Redis取出對應數據並校驗
- 成功後修改Mysql數據
- 修改Redis數據
- 向Kafka發送一條消息
-
second模塊接收到first模塊的發送的消息後app
- 從Redis取出對應數據並校驗
- 成功後修改Mysql數據
- 修改Redis數據
- 向Kafka發送一條消息
-
third模塊接收到second模塊的發送的消息後get
- 從Redis取出對應數據並校驗
- 成功後向MongoDB寫入一條數據
- 刪除Redis數據
- 刪除Mysql數據
-
exhandler模塊爲補償機制kafka
- 按照必定的策略處理Mysql中遺留的錯誤數據(正常狀況全部數據都將轉移到MongoDB中)
項目啓動
- 執行deploy中update.sql建立record表
- 替換modular-common-database中application.properties配置文件中的相關參數爲本身的Mysql參數
- 替換modular-common-redis中application.properties配置文件中的相關參數爲本身的Redis參數
- 替換modular-common-mongo中application.properties配置文件中的相關參數爲本身的MongoDB參數
- 修改modular-common-base中KafkaConstants類中BOOTSTRAP_SERVERS常量爲本身Kafka地址(因爲只是demo,故未作成配置文件)
-
啓動相關服務it
-
正常流程io
- modular-handler(請求處理模塊)
- modular-first(第一部分服務模塊)
- modular-second(第二部分服務模塊)
- modular-third(第三部分服務模塊)
-
補償機制
- modular-exhandler(異常數據處理模塊)
結果預測
- modular-first:輸出 first service complete
- modular-second:輸出 second service complete
- modular-third:輸出 third service complete
- MongoDB中寫入了一條數據