使用领域驱动设计DDD和CQRS实现身份验证的微服务源码项目


这是一个使用领驱动设计方法设计的完整 Spring Boot 身份验证微服务,点击标题。

主要目标的:

  • 展示如何实现领域驱动设计
  • 展示如何实现 CQRS
  • 演示应用程序的完整实现
    • 这不是另一个概念证明 (PoC)
    • 目标是展示可以在生产环境中运行的应用程序的实现
  • 展示最佳实践和面向对象编程原则的应用
  • 介绍设计模式的使用。何时、如何以及为什么可以使用它们
  • 使用领域驱动设计方法(战术模式)演示实现
  • 介绍领域模型单元测试的实现(考虑可测试设计)
  • 介绍集成测试的实施
  • 仅介绍测试 Web 层的实现

主要思想是创建用于身份验证的小型微服务,以提供下一个功能:

  • 表格注册
  • 表单登录、谷歌登录、Facebook 登录
  • 找回密码
  • 电子邮件通知
  • 会话识别和认证

创建一个可重用的微服务网络,由以下微服务组成:

  • 服务发现(可能使用 K8s)。
  • 创建用于身份验证的微服务(当前存储库)。
  • 创建用于授权的微服务 - RBAC 的简单实现。
  • 创建用于发送电子邮件的微服务。
  • 创建用于本地化的微服务——这个想法是提供用于将应用程序翻译成各种语言的 UI,作为大多数应用程序的通用部分。
  • 为异步通信(AC)创建一个微服务——这个想法是创建一个在微服务之间分发消息的微服务。微服务应该在 DB(例如 Redis)和 RMQ 上工作以提供异步。微服务应该提供 REST API 来访问它。这样,我们应该只在一个地方拥有 RMQ,并且与这个微服务的通信应该通过 REST API。微服务应提供以下路由:
    • 其他微服务注册消息的路由。例如,电子邮件微服务可以注册带有所需属性、端点和版本的消息发送电子邮件。该配置应保存到数据库中。
    • 发送消息 - 例如,身份验证微服务应在使用名称send-email和所需属性注册用户后发送消息。AC 微服务将接收该消息,验证所需的属性,使用端点(保存在 DB 中)丰富消息正文并将消息发布到 RMQ。RMQ 消费者将消费消息并将其分发到端点。

点击标题