modular項目介紹

modular

項目介紹

簡單地多模塊項目,模塊間經過kafka進行消息傳遞,使用Mysql做臨時存儲、Redis做緩存、MongoDB做最終數據存儲。
項目代碼獲取:https://github.com/pysasuke/m...git

項目結構

  • modular-common(公用模塊)github

    • modular-common-base(簡單公用類)
    • modular-common-database(Mysql相關模塊)
    • modular-common-kafka(Kafka相關模塊)
    • modular-common-mongo(MongoDB相關模塊)
    • modular-common-redis(Redis相關模塊)
  • modular-handler(請求處理模塊)
  • modular-first(第一部分服務模塊)
  • modular-second(第二部分服務模塊)
  • modular-third(第三部分服務模塊)
  • modular-exhandler(異常數據處理模塊)(補償機制)

基本流程

因爲只是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中寫入了一條數據
相關文章
相關標籤/搜索