DevOps研发效能
媒体矩阵
开源中国APP
授权协议 Apache
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发微服务框架
开源组织
地区 国产
投 递 者 Ahoo-Wang
适用人群 未知
收录时间 2023-06-02

软件简介

Wow:基于 DDD、EventSourcing 的现代响应式 CQRS 架构微服务开发框架

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源

简介

Wow 是一个基于领域驱动设计和事件溯源的现代响应式 CQRS 微服务开发框架,历经多年生产环境验证。

旨在帮助开发者构建现代化的、高性能且易于维护的微服务应用程序,充分发挥领域驱动设计和事件溯源等模式优势的同时降低应用的复杂性以及实践成本。

值得一提的是,领域驱动设计和事件溯源并非微服务架构的专属,Wow 框架不仅适用于微服务开发,同样也可用于构建基于领域驱动设计的单体应用程序。

快速开始

使用 Wow 项目模板快速创建基于 Wow 框架的 DDD 项目

特性概览

Wow-Features

架构图

Wow-Architecture

背景

随着业务的发展和复杂性的增加,传统的架构和开发方式逐渐显露出瓶颈。领域驱动设计事件溯源等理念在提高系统设计的灵活性和可维护性方面表现出色,但在实践中常常需要面对复杂性和学习曲线的挑战。

Wow 框架的目标是以简单易用的方式将领域驱动设计和事件溯源等理念融入到微服务应用开发中,降低开发者的学习成本,提高开发效率。 通过提供现代响应式的 CQRS 架构和相关组件,Wow 框架旨在让开发者更专注于业务逻辑的实现,而不必过多关心底层技术细节。

经过多年的实践和不断的演进,Wow 框架在生产环境中得到了验证,积累了丰富的经验。这些经验和反馈不仅丰富了框架的功能和性能,也为持续的改进和优化提供了宝贵的指导。

对于开发者而言,Wow 框架意味着什么?

我曾告诫我的团队:如果我们过于依赖数据驱动设计而忽视领域驱动设计,我们最终将沦为CRUD工程师。

CRUD工程师的竞争力和可替代性可想而知,这或许是为何会有 35 岁效应,企业显然更倾向于招募没有太多生活羁绊、更加廉价的 25 CRUD工程师。

业务价值

软件系统的核心价值体现在业务价值上,研发人员不应只关注技术实现上,而是应该更多地关注业务价值的实现。 这其中的好处显而易见,当你开发完一个业务系统之后,你将变成一个业务专家,甚至比跟你合作的领域专家还要专业,因为你需要洞察业务细节。

使用 Wow 框架,意味着你将关注点放在围绕领域模型设计上,与业务专家一起探索业务领域,而不是关注于技术实现上。 你仅需编写领域模型,即可完成服务开发,Wow 框架自动为你准备好 OpenAPI 接口。

在《实现领域驱动设计》一书中,作者 Vaughn Vernon 提到:核心域才值得投入精力进行领域驱动设计, 但如果你使用 Wow 框架,你将发现,因为低廉开发成本、快速的开发效率,即使是次要的支撑子域也值得 DDD

性能与伸缩性

随着业务的发展,你需要开始思考系统的性能和伸缩性问题。 在传统架构中,这牵扯到数据库关系模式、分片规则等复杂问题,同时你还需要处理因数据库分片导致的跨分片事务问题。 这时,你不得不修改你的业务代码,以适应水平拆分后的数据库架构。

然而,如果你选择使用 Wow 框架,你将不再需要过多关注数据库关系模式、分片规则等问题。你的业务代码无需变更,系统能够轻松实现水平伸缩。

你可以在这里了解更多关于 Wow 框架的性能

读写分离与同步延迟

读写分离是一种极为普遍的性能优化架构模式。 然而,同步延迟问题常伴随而来,事务执行成功后写库落库成功,但读库同步延迟,用户刷新页面后无法获取最新数据,从而对用户的体验产生影响。例如:

  • 用户发起下单事务,写库执行成功,但由于某种原因,读库同步延迟,用户刷新页面后发现订单未成功创建。
  • 商家编辑完商品后,同步到 Elasticsearch 索引库,但由于某种原因,同步延迟,导致商家刷新页面后搜索不到该商品。

通常,大家采用最简便的方法,等待1秒后刷新页面。 虽然这种方式能解决大多数数据同步延迟的问题,但效率不够高。 因为大多数情况下,同步在100毫秒内就已完成,剩余的900毫秒成了浪费。 然而,有时1秒无法完成同步,这就导致用户获取的数据变得无效

使用 Wow 框架,你可以通过等待 PROJECTED 信号完成,然后再将结果返回给用户,以更为优雅和高效的方式处理数据同步延迟的问题。

工程质量

单元测试是确保代码质量且符合预期业务需求的重要手段,但在传统架构中,单元测试往往是一项相当困难的任务,因为你需要考虑数据库连接、事务管理、数据清理等问题。

使用 Wow 框架,你将会发现基于 Given->When->Expect 模式的测试套件,使得单元测试变得异常简单。 你只需关注领域模型是否符合预期,而无需为数据库连接等问题烦恼。

在实际应用中,我们将领域模型的单元测试覆盖率下限阈值设置为 85%,也是可以轻松实现的。

在没有刻意要求的情况下,开发人员甚至自觉地将覆盖率提升至 95%

因此,每次提交代码都变得轻松自在,因为你确信你的代码经过了充分的测试,并且真正意义上从单元测试中获得了收益。

在研发同级别的项目中,我们的测试团队在系统 API 测试中发现,基于 Wow 框架的项目,其 BUG 数仅为传统架构项目的 1/3

你可以在这里了解更多关于 Wow 单元测试套件

对于企业而言,Wow 框架意味着什么?

商业智能

商业智能是企业决策的关键支持,而数据则是商业智能的分析原料。业务数据越为丰富有价值,商业智能的分析结果越准确,决策也就更加可靠。

与传统架构有着显著差异,Wow 提供了实时聚合根状态事件(StateEvent)和聚合命令(Command)作为数据分析的数据源,同时极大降低了实时 ETLExtract, Transform, Load)的难度。

在传统架构中,实现实时 ETL 通常需要经过繁琐的流程,包括 DB->CDC->Process->DB,而在 Wow 框架中,仅需一段简单的 SQL 脚本即可完成这一过程。

另外,在传统架构中,使用 CDCMySql Binlog)数据仅记录数据的变化,缺乏明确的业务语义。进行业务分析时,需要基于数据状态的变化推断出业务语义,这往往需要进行大量的数据处理。 相较之下,Wow 框架直接提供了聚合根状态事件和聚合命令作为数据分析的数据源,极大降低了数据处理的难度。

Wow 提供的实时同步机制将数据实时同步至数据仓库(ClickHouse),为实时数据分析提供了极大的便利。这种方法为商业智能提供了强有力的支持,构建了一个实时数据分析系统,使决策制定能够基于及时而准确的信息。

你可以在这里了解更多关于 Wow 商业智能

操作审计

操作审计是企业中保障安全性和合规性的重要组成部分,同时也是对系统操作进行监控和追踪的关键手段。Wow 框架在这方面为企业带来了显著的优势。

通过记录聚合命令(Command)作为操作审计的数据源,Wow 框架能够详细追踪系统中的各种操作。 这些记录不仅包含了操作本身的内容,还涵盖了操作触发的副作用(领域事件),为审计提供了更为全面和准确的数据基础。

相较于传统审计方法,Wow 框架的操作审计的数据源具备更加明确的业务语义,以及操作后产生的明确领域事件。

此外,Wow 框架提供的实时数据同步机制也为操作审计带来了便利,确保了审计数据的及时性和一致性。

了解更多关于 Wow 操作审计

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
发表了资讯
05/16 09:45

⚡ 模型即服务 - Wow 框架 v5.13.5 发布!🏗️

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 🚀 Wow v5.13.5 重磅升级! 本次更新带来一系列重要改进与功能增强,涵盖核心框架升级、API Schema 增强、异常处理体系优化及多项开发体验优化,系开发者必升版本! ✨ 新特性速览 🚩 序列化增强 String 类型新增 toObjectNode() 扩展函数,轻松实现字符串到 ...

0
2
发表了资讯
04/30 10:26

⚡ 模型即服务 - Wow 框架 v5.12.5 发布!🏗️

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 🎉 Wow 框架 v5.12.5 发布公告 🏗️ 架构增强 Schema 引擎 ✅ 新增对Map类型的命名策略支持 ✅ 支持上下文别名前缀配置 ✅ 优化嵌套类/内部类的命名处理逻辑 ✅ 可自定义OpenAPI定义路径 🔗 OpenAPI...

0
0
发表了资讯
04/21 14:17

🚀 模型即服务 - Wow 框架 v5.11.0 震撼发布!

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 🚀 Wow 框架 v5.11.0 发布 - 架构优化与开发者体验升级 🌟 核心增强 架构优化 路由检查性能提升:通过重构 IgnoreCommandRouteVariableCheck 实现命令路由变量检查逻辑简化,降低核心层复杂度 缓存策略升级:弃用 CacheValueConfiguration 并引入 TtlConfiguration,支持更灵活的生存时间...

0
2
发表了资讯
04/08 16:36

🎉 模型即服务 - Wow 框架 v5.10.0 震撼发布!🎉

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 🎉Wow 框架更新日志 🚀 核心改进 测试与质量保障 单元测试覆盖率提升至 90.4% 命令与查询增强 阻塞式命令构建器 新增BlockingCommandBuilderRewriter重构支持,增强同步命令处理能力 智能状态处理 ✅ 优化查询删除状态转换逻辑 ✅ 增强OpenAPI路径变量支持...

0
3
发表了资讯
03/28 12:25

🎉 模型即服务 - Wow 框架 v5.9.3 震撼发布!🎉

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 🚀 Wow 框架更新日志 全面支持 JSON Schema | OpenAPI 3.1 | 增强SSE协议 🚀 核心改进 架构增强 JSON Schema支持 新增完整的JSON Schema生成能力,支持OpenAPI兼容模式 ✅ 增强枚举类型支持 ✅ 支持Joda Money类型映射 ✅ 实现内联sch...

0
0
发表了资讯
03/17 15:54

🎉 模型即服务 - Wow 框架 v5.7.2 震撼发布!🎉

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 🚀 Wow 框架更新日志 - 下一个里程碑 全新架构升级 | 响应式编程增强 | 企业级稳定性优化 🌟 亮点速览 革命性进度追踪:sendAndWaitStream + 信号时间戳 = 精准控制业务流 企业级通信方案:原生 Server-Sent Events(SSE)支持上线! 稳定性跃升:命令取消/超时全路径处理 + Opentelemetr...

0
1
发表了资讯
03/12 11:25

🎉 模型即服务 - Wow 框架 v5.6.5 震撼发布!🎉

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 🌟 Wow 框架 v5.6.5 震撼发布!仅需编写领域模型,即可以完成服务开发! 🌟 核心优化概览 🔧 框架增强 强化状态聚合根解析与异常处理机制 新增命令后置处理器(AfterCommand)支持:支持优先级排序与执行策略配置 重构事件溯源处理流程,优化消息流性能 🗃️ 缓存革新 ...

0
2
发表了资讯
02/21 13:59

🌟 仅需编写领域模型,即可以完成服务开发!Wow 5.3.8 发布! 🌟

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 🌟 Wow 框架 v5.3.8 震撼发布!仅需编写领域模型,即可以完成服务开发! 🌟 🔍 查询引擎全面升级! 「N天前」 现已解锁!用全新的 earlierDays 条件轻鬆查询历史数据,精准回溯「任意天数前」的记录,排查日志、追踪行为从没如此优雅! 「存在即真理」 —— EXISTS 运算符正式加入豪华查...

1
4
发表了资讯
02/14 12:04

🎉 No-ORM 降低 DDD 实践成本 | Wow 5.3.2 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 特性(core):添加资源所有者支持 特性(exception):添加 ILLEGAL_ACCESS_OWNER_AGGREGATE 错误码映射 特性(webflux):添加所有者聚合前置条件检查 特性(elasticsearch):在事件流和快照模板中添加 ownerId 字段 特性(api):调整默认所有者值 特性(api):为聚合路由添加资源名称自定义功能 ...

0
1
发表了资讯
02/08 13:31

🎉 降低 DDD 实践成本 | Wow 5.1.6 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 新功能(查询服务):添加自定义日期模式支持的时间范围查询 依赖更新:将 org.springframework.boot:spring-boot-dependencies 依赖更新到 v3.4.2 依赖更新:将 Gradle 依赖更新到 v8.12.1 依赖更新:将 springdoc 依赖更新到 v2.8.4 依赖更新:将 Angular CLI monorepo 更新到 v19.1.6 依...

0
3
发表了资讯
01/23 11:13

🎉 降低 DDD 实践成本 | Wow 5.1.5 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 更新依赖:将 io.swagger.core.v3:swagger-core-jakarta 更新至 v2.2.28 更新依赖:将 angular monorepo 更新至 v19.1.1 更新依赖:将 angular-cli monorepo 更新至 v19.1.1 更新依赖:将 io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom 更新至 v2.12.0 更新依赖:将...

0
5
发表了资讯
01/10 11:44

🎉 降低 DDD 实践成本 | Wow 5.1.2 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 特性(core): 添加对虚空命令(VoidCommand)的支持 特性(openapi): 为各种类型添加转换器以处理附加属性 特性(command): 优化虚空命令(VoidCommand)处理 特性(command): 支持虚空命令并优化命令分发 特性(command): 为虚空命令等待策略添加验证 特性(messaging): 添加命令请求头传播的开关...

0
2
发表了资讯
01/07 09:54

🎉 降低 DDD 实践成本 | Wow 5.0.2 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 特性(infra): 增强注解扫描并支持多个注解 重构(modeling): 改进重试策略和日志记录 特性(wow-test): 改进 expectEventStream 中的错误处理 重构(wow-core): 改进错误处理和重试机制 重构(core): 在 StateAggregateFactory 中引入 createAsMono 方法 升级(依赖): 更新 springdoc 至 v2.8.1...

4
1
发表了资讯
2024/12/30 11:56

🎉 降低 DDD 实践成本 | Wow 3.19.6 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 重构(core): 移除重复的错误集合。 修复(deps): 更新依赖 org.springframework.boot:spring-boot-dependencies 至 v3.4.1。 新功能(query): 支持 Number 到 Operator.BEFORE_TODAY。 新功能(dashboard): 更新 Angular 至 v19。 重构(query): 添加 QueryFilter API。 任务(deps): 更新依赖 ...

3
3
发表了资讯
2024/12/19 13:26

🎉 降低 DDD 实践成本 | Wow 3.18.6 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 增强数据安全性! 特性(query): 添加 StateDynamicDocumentMasker 以支持状态聚合的动态文档脱敏 特性(query): 添加 EventStreamDynamicDocumentMasker 以支持事件流的动态文档脱敏 特性(query): EventStreamQueryService 支持 count 函数接口 特性(core): 添加 StateRecord 以 支持跨服务上...

0
5
发表了资讯
2024/12/12 08:23

🎉 降低 DDD 实践成本 | Wow 3.18.0 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 适配 Spring Boot 3.4.0 特性(query): 支持 BEFORE_TODAY 查询操作符 特性(query): 支持 ZoneId 条件选项 依赖(spring): 更新 org.springframework.boot:spring-boot-dependencies 到 v3.4.0 依赖(core): 更新 me.ahoo.cosid:cosid-bom 到 v2.10.1 依赖(api): 更新 me.ahoo.coapi:coapi-bo...

0
2
发表了资讯
2024/11/24 18:25

🎉 降低 DDD 实践成本 | Wow 3.16.8 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 特性(test): 支持使用 givenState 来编排测试,无需事件源,DEBUG 效率 特性(webflux): 添加 BatchTaskException 以记录失败的批次任务。 特性(mongodb): 支持使用特殊字符作为查询条件 特性(dashboard): 使用分页查询事件流 依赖(test): 更新 org.testcontainers:testcontainers-bom 到 v1...

2
4
发表了资讯
2024/11/13 09:22

🎉 全面支持 Elasticsearch 降低 DDD 实践成本 | Wow 3.16.3 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 Elasticsearch 全面支持 EventStore / SnapshotRepository / QueryService 特性(es): 添加 ElasticsearchEventStore 以支持使用 Elasticsearch 作为事件源存储 特性(es): 添加 ElasticsearchEventStreamQueryService 以支持事件查询服务 特性(es): 添加 IndexTemplateInitializer 以支持自动...

0
3
发表了资讯
2024/11/08 08:24

🎉 No-ORM 降低 DDD 实践成本 | Wow 3.15.4 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 特性(elasticsearch): 添加 ElasticsearchSnapshotQueryService 以支持 ElasticSearch 快照查询服务 特性(elasticsearch): RAW 操作符支持 String 和 Map 条件值 特性(elasticsearch): 为聚合快照存储配置索引模板 特性(core): 当创建的命令消息返回空信号时切换到异常信号 CommandMessage...

0
1
发表了资讯
2024/10/31 09:30

🎉 降低 DDD 实践成本 | Wow 3.14.0 发布

领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源 官方文档: https://wow.ahoo.me/ 更新内容 特性(webflux): 为 GlobalExceptionHandler 添加 NoResourceFoundException 自定义支持。 重构(command-gateway): 统一命令验证职责到命名网关。 重构(core): 替换消息头KEY中的 . 为 _,以便兼容 MongoDB/ElasticSearch 的查询请求。 依赖(compensation): 更新 gg.jte:jte 到 v3.1.13。 依...

0
2
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
38 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部