基于领域驱动设计、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 的简化用法
代码库