使用領域驅動設計DDD和CQRS實現身份驗證的微服務原始碼專案

banq發表於2022-06-01

這是一個使用領驅動設計方法設計的完整 Spring Boot 身份驗證微服務,點選標題。

主要目標的:
  • 展示如何實現領域驅動設計
  • 展示如何實現 CQRS
  • 演示應用程式的完整實現
    • 這不是另一個概念證明 (PoC)
    • 目標是展示可以在生產環境中執行的應用程式的實現
  • 展示最佳實踐和物件導向程式設計原則的應用
  • 介紹設計模式的使用。何時、如何以及為什麼可以使用它們
  • 使用領域驅動設計方法(戰術模式)演示實現
  • 介紹領域模型單元測試的實現(考慮可測試設計)
  • 介紹整合測試的實施
  • 僅介紹測試 Web 層的實現


主要思想是建立用於身份驗證的小型微服務,以提供下一個功能:
  • 表格註冊
  • 表單登入、谷歌登入、Facebook 登入
  • 找回密碼
  • 電子郵件通知
  • 會話識別和認證


建立一個可重用的微服務網路,由以下微服務組成:
  • 服務發現(可能使用 K8s)。
  • 建立用於身份驗證的微服務(當前儲存庫)。
  • 建立用於授權的微服務 - RBAC 的簡單實現。
  • 建立用於傳送電子郵件的微服務。
  • 建立用於本地化的微服務——這個想法是提供用於將應用程式翻譯成各種語言的 UI,作為大多數應用程式的通用部分。
  • 非同步通訊(AC)建立一個微服務——這個想法是建立一個在微服務之間分發訊息的微服務。微服務應該在 DB(例如 Redis)和 RMQ 上工作以提供非同步。微服務應該提供 REST API 來訪問它。這樣,我們應該只在一個地方擁有 RMQ,並且與這個微服務的通訊應該透過 REST API。微服務應提供以下路由:
    • 其他微服務註冊訊息的路由。例如,電子郵件微服務可以註冊帶有所需屬性、端點和版本的訊息傳送電子郵件。該配置應儲存到資料庫中。
    • 傳送訊息 - 例如,身份驗證微服務應在使用名稱send-email和所需屬性註冊使用者後傳送訊息。AC 微服務將接收該訊息,驗證所需的屬性,使用端點(儲存在 DB 中)豐富訊息正文並將訊息釋出到 RMQ。RMQ 消費者將消費訊息並將其分發到端點。


點選標題

 

相關文章