ENode 开源项目教程
enode DDD 框架 项目地址: https://gitcode.com/gh_mirrors/eno/enode
1. 项目介绍
ENode 是一个基于 JVM 平台的应用框架,旨在帮助开发者实践领域驱动设计(Domain Driven Design, DDD)思想。它采用了 CQRS(命令查询职责分离)和 Event Sourcing(事件溯源)设计模式,使开发者能够专注于业务模型的建模和业务逻辑的开发。
框架特色
- Reactive: ENode 是完全响应式的框架,核心设计支持高吞吐量。数据库层面使用了异步驱动,实现全链路异步。
- Event Sourcing: 聚合根的事件完全持久化,记录聚合根的状态变化,使 C 端数据可追溯,数据持久化变得通用化。
- Event Driven: 业务流程以事件驱动为核心,支持先进的 Saga 机制,避免分布式事务的使用。
- CQRS: 解决了 CQRS 架构中 C 端的高并发写问题,以及 CQ 两端数据同步的顺序性和幂等性。
- Fast and Flexible: 聚合根常驻内存,设计上尽可能避免了聚合根重建,支持 Fire And Forget 和 Fire And Wait 两种方式返回命令执行结果。
2. 项目快速启动
环境准备
- JDK 1.8 或更高版本
- Maven 3.x
- Docker(可选,用于快速启动环境)
快速启动步骤
-
克隆项目
git clone https://github.com/anruence/enode.git cd enode
-
构建项目
mvn clean install
-
启动 Docker 环境(可选)
如果需要快速启动一套运行环境,可以使用 Docker Compose:
docker-compose up -d
-
启动应用
进入
command-web
模块,启动 Command 端应用:cd command-web mvn spring-boot:run
进入
command-consumer
模块,启动 Command 消费者服务:cd ../command-consumer mvn spring-boot:run
进入
event-consumer
模块,启动事件消费者服务:cd ../event-consumer mvn spring-boot:run
3. 应用案例和最佳实践
应用案例
ENode 在多个领域有广泛的应用,特别是在金融、制造和医疗等行业。以下是一个简单的转账业务场景示例:
- 银行存款交易记录: 表示一笔银行存款交易。
- 银行转账交易记录: 表示一笔银行内账户之间的转账交易。
- 银行账户聚合根: 封装银行账户余额变动的数据一致性。
最佳实践
- 领域事件的设计: 确保每个领域事件都能准确反映业务状态的变化。
- 聚合根的设计: 遵循聚合内强一致性、聚合间最终一致性的原则。
- 事件驱动的流程管理: 使用 Saga 机制管理跨多个聚合根的业务流程。
4. 典型生态项目
ENode 作为一个开源框架,与其他开源项目和工具可以很好地集成。以下是一些典型的生态项目:
- Spring Boot: ENode 与 Spring Boot 友好适配,提供了 IoC 容器的支持。
- Kafka/RocketMQ/Pulsar: 作为 CommandBus 的实现,支持高吞吐量的消息队列。
- MySQL/PostgreSQL/MongoDB: 作为 EventStore 的实现,支持多种数据库的持久化。
通过这些生态项目的集成,ENode 能够更好地满足不同业务场景的需求,提供更强大的功能和性能。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考