# Wow **Repository Path**: ju-yuting/Wow ## Basic Information - **Project Name**: Wow - **Description**: 领域模型即服务 - 基于 DDD & EventSourcing 的现代响应式 CQRS 架构微服务开发框架 - **Primary Language**: Kotlin - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://wow.ahoo.me/zh/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 91 - **Created**: 2026-05-15 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Wow

Wow

领域模型即服务

基于 DDD & Event Sourcing 的现代响应式 CQRS 架构微服务开发框架

License GitHub release Maven Central Codacy Codecov CI Awesome Kotlin DeepWiki

领域驱动 · 事件驱动 · 测试驱动 · 声明式设计 · 响应式 · CQRS · 事件溯源

English · 中文

--- ## 快速开始 [![Use this template](https://img.shields.io/badge/Use%20this%20template-2ea44f?style=for-the-badge&logo=github)](https://github.com/new?template_name=wow-project-template&template_owner=Ahoo-Wang) 点击上方按钮,从 [Wow 项目模板](https://github.com/Ahoo-Wang/wow-project-template) 创建你自己的项目仓库,然后克隆到本地,开始编写领域模型。 > **Wow 8.x** 支持 Spring Boot 4.x,基于 Java 17+ > > **Wow 6.x** 支持 Spring Boot 3.x,基于 Java 17+ ## 为什么选择 Wow? 随着业务复杂度的增长,传统 CRUD 架构逐渐暴露瓶颈 — 纠缠不清的数据库模式、痛苦的分库分表、脆弱的分布式事务。*领域驱动设计* 和 *事件溯源* 能够解决这些问题,但往往伴随着陡峭的学习曲线和沉重的实践成本。 Wow 正是为改变这一现状而生。历经多年生产环境验证,将 DDD + ES 凝练为对开发者友好的框架 — 你只需专注领域模型,其余的交给 Wow。 **对开发者:** - **聚焦业务,而非基础设施** — 只需编写领域模型,Wow 自动生成 OpenAPI 接口 - **轻松测试** — Given→When→Expect 模式让 85%+ 的单元测试覆盖率成为常态,而非奢望 - **优雅的读写分离** — 等待 `PROJECTED` 信号而非猜测同步延迟,告别"等 1 秒再刷新" - **无感水平扩容** — 无需分片规则,业务代码无需任何变更即可横向扩展 **对企业:** - **商业智能** — 状态事件和命令作为丰富的实时数据源,将 ETL 简化为一条 SQL 脚本 - **操作审计** — 每条命令及其产生的领域事件均被记录,具备清晰的业务语义 - **工程质量** — 在 API 测试中,基于 Wow 的项目缺陷数仅为同等研发水平传统架构项目的 **1/3** > 值得一提的是,领域驱动设计和事件溯源并非微服务架构的专属,_Wow_ 框架不仅适用于微服务开发,同样也可用于构建基于领域驱动设计的单体应用程序。 ## 特性一览

Wow Features

| 特性 | 说明 | |------|------| | **领域模型即服务** | 仅需编写领域模型,Wow 自动生成 OpenAPI 接口 — 无需编写 Controller 样板代码 | | **测试套件** | Given→When→Expect 模式(`AggregateSpec` / `SagaSpec`),轻松实现 80%+ 覆盖率 | | **高性能** | 写操作仅需 AppendOnly 写入事件存储,读操作利用面向查询的搜索引擎 — 压测 TPS 高达 59k+ | | **水平伸缩** | 无需考虑分片规则,业务代码无需变更即可水平扩展 | | **分布式事务** | Saga 编排模式,精细管理复杂多服务间事务 | | **事件补偿** | 可视化控制台 + 可配置 `RetrySpec` 的自动补偿机制,确保最终一致性 | | **读写分离** | `SENT` / `PROCESSED` / `PROJECTED` 等待策略,彻底告别同步延迟猜测 | | **可观测性** | 集成 OpenTelemetry,实现端到端追踪、指标和调试 | | **响应式** | 全栈基于 Project Reactor 的非阻塞异步消息通信 | | **事件溯源** | 通过事件回放完整还原状态历史,支持强大的审计和时间旅行调试 | | **商业智能** | 丰富的事件溯源数据源,实时同步至数据仓库,极低 ETL 成本 | ## 架构

Architecture

### 命令处理传播链

Command Processing Chain

## 性能测试 示例应用压力测试(2 分钟): | 操作 | 等待策略 | 平均 TPS | 峰值 TPS | 平均延迟 | |------|---------|---------|---------|---------| | 加入购物车 | `SENT` | 59,625 | 82,312 | 29 ms | | 加入购物车 | `PROCESSED` | 18,696 | 24,141 | 239 ms | | 创建订单 | `SENT` | 47,838 | 86,200 | 217 ms | | 创建订单 | `PROCESSED` | 18,230 | 25,506 | 268 ms |
性能详情与部署 - 测试代码:[Example](./example) - 部署配置:[Redis](deploy/example/perf/redis.yaml) / [MongoDB](deploy/example/perf/mongo.yaml) / [Kafka](deploy/example/perf/kafka.yaml)

AddCartItem-SENT

CreateOrder-SENT

## 测试套件 > Given → When → Expect

CI Flow

### 聚合根测试(`AggregateVerifier`) ```kotlin class CartSpec : AggregateSpec({ on { whenCommand(AddCartItem(productId = "productId", quantity = 1)) { expectNoError() expectEventType(CartItemAdded::class) expectState { items.assert().hasSize(1) } } } }) ``` ### Saga 测试(`SagaVerifier`) ```kotlin class CartSagaSpec : SagaSpec({ on { whenEvent(event = mockk { every { items } returns listOf(orderItem) every { fromCart } returns true }, ownerId = ownerId) { expectCommandType(RemoveCartItem::class) } } }) ``` ## 设计 ### 建模范式 | 单一类 | 继承模式 | 聚合模式 | |:---:|:---:|:---:| | ![单一类](./document/design/assets/Modeling-Single-Class-Pattern.svg) | ![继承模式](./document/design/assets/Modeling-Inheritance-Pattern.svg) | ![聚合模式](./document/design/assets/Modeling-Aggregation-Pattern.svg) | ### 核心流程

Command And Event Flow

Event Sourcing

更多设计图 **加载聚合根**

Load Aggregate

**聚合状态流转**

Aggregate State Flow

**发送命令**

Send Command

**可观测性**

Observability

## 事件补偿

Compensation Dashboard

补偿详情

Compensation Use Case

Compensation Sequence

Apply Retry Spec

Compensation Succeeded

## 生态 | 项目 | 说明 | |------|------| | [CosId](https://github.com/Ahoo-Wang/CosId) | 通用、灵活、高性能的分布式 ID 生成器 | | [CoSec](https://github.com/Ahoo-Wang/CoSec) | 基于策略和 RBAC 的多租户响应式安全框架 | | [CoCache](https://github.com/Ahoo-Wang/CoCache) | 分布式一致性二级缓存框架 | | [Simba](https://github.com/Ahoo-Wang/Simba) | 易用、灵活的分布式锁服务 | | [CoSky](https://github.com/Ahoo-Wang/CoSky) | 高性能、低成本的微服务治理平台 | | [CoApi](https://github.com/Ahoo-Wang/CoApi) | Spring 6 零样板 HTTP 客户端自动配置 | | [FluentAssert](https://github.com/Ahoo-Wang/FluentAssert) | Kotlin 流式断言库,让测试更简洁优雅 | ## 示例 | 示例 | 语言 | 说明 | |------|------|------| | [订单服务](./example) | Kotlin | 聚合根、Saga、投影 — 完整 DDD 示例 | | [银行转账](./example/transfer) | Java | 简单事件溯源示例 | ## License Wow 基于 [Apache 2.0](LICENSE) 协议开源。