使用TypeScript和nextjs实现基于CQRS的微服务的银行API源码


基于领域驱动设计、CQRS 和事件溯源的简单银行 API:
写了一个由两个微服务和一个 API 网关组成的银行账户 API 。我用 TypeScript 和 NestJS 实现了微服务。但是,使用Go编写 API 网关。
在这个项目中无缝地结合了 DDD、CQRS 和事件溯源。由于 NestJS 没有官方的事件溯源模块,我自己编写了一个并在 NPM 上提供。最好别用。它没有经过现场测试。

技术特点

  • 领域驱动设计、CQRS 和事件溯源相结合
  • NestJS 微服务作为 Monorepo,分为命令和查询
  • Go 中的 API 网关(HTTP 到 gRPC)
  • 在 NestJS 生态系统中为 Event-Sourcing 创建了一个 NPM 包
  • 使用 Kafka 作为异步事件流
  • 使用 gRPC 作为同步传输协议
  • 每个服务模式的数据库
  • 由于最终一致性而确保幂等性
  • 使用 MongoDB 作为写入数据库的 NoSQL 方法(事件溯源)
  • 使用 PostgreSQL 作为读取数据库的 SQL 方法
  • 将 Proto 文件存储在共享存储库中
  • 除了应用程序,一切都被 docker 化了
  • Sagas 的简化用法

代码库