⚡模型即服务 - Wow 框架 v6.5.6 发布!🏗️
Wow : 基于 DDD & EventSourcing 的现代响应式 CQRS 架构微服务开发框架
领域驱动 | 事件驱动 | 测试驱动 | 声明式设计 | 响应式编程 | 命令查询职责分离 | 事件溯源
Wow v6.5.6 发布日志 🚀
我们很高兴宣布 Wow 框架 v6.5.6 版本正式发布!本次更新带来了全方位的改进,从测试体验到文档完善,从性能优化到依赖升级,为开发者提供了更加稳定和高效的开发体验。
✨ 核心亮点
🧪 测试体验全面升级
- 更清晰的错误追踪:引入
captureDynamicTest替代DynamicTest,显著改善错误堆栈跟踪 - 智能测试报告:增强测试失败报告机制,支持合并堆栈跟踪,快速定位问题根源
- 聚合测试支持:实现聚合 DSL 上下文和 fork 功能,简化复杂测试场景
📚 文档体系完善
- 全面覆盖的 API 文档:为命令、事件、Saga、度量等核心模块添加详细 KDoc 文档
- 最佳实践指南:新增度量、WebFlux、快照特性等最佳实践文档
- 代码示例丰富:在 FastInvoke、配置类等关键组件中增加实用示例
🔧 核心功能增强
- 消息总线优化:本地消息总线新增订阅者计数支持,简化消息发送逻辑
- Schema 生成改进:支持 Jackson JsonProperty 注解,增强 JSON Schema 生成能力
- 补偿机制强化:添加中止控制器支持,完善失败补偿操作处理
- IoC 容器升级:ServiceProvider 提供全面的服务管理能力
📦 依赖生态更新
- 构建工具升级:Gradle 更新至 v9.2.1,享受最新构建性能优化
- 前端工具链:文档构建迁移至 pnpm,Vite 升级至 7.1.12
- 测试框架:Vitest 升级至 v4,提供更现代化的测试体验
- Kotlin 支持:KSP 更新至 v2.3.2,享受更快的编译速度
🛠 技术细节优化
开发体验提升
- 类型安全增强,减少运行时错误
- ESLint 配置重构,提升代码质量
- 代码生成器改进,提供更好的泛型支持
性能改进
- 内存消息总线优化,无订阅者时直接返回
- 依赖版本统一管理,减少冲突可能
- 构建缓存策略优化,加速编译过程
🎯 升级建议
本次更新为稳定版本升级,建议所有用户升级以享受最新的功能改进和性能优化。详细的迁移指南和完整更新列表请参考项目文档。
感谢所有贡献者和用户的支持!让我们一起构建更好的 Wow 生态系统!🌟
立即体验:Wow 项目主页
简介
Wow 是一个基于领域驱动设计和事件溯源的现代响应式 CQRS 微服务开发框架,历经多年生产环境验证。
旨在帮助开发者构建现代化的、高性能且易于维护的微服务应用程序,充分发挥领域驱动设计和事件溯源等模式优势的同时降低应用的复杂性以及实践成本。
值得一提的是,领域驱动设计和事件溯源并非微服务架构的专属,Wow 框架不仅适用于微服务开发,同样也可用于构建基于领域驱动设计的单体应用程序。
快速开始
使用 Wow 项目模板快速创建基于 Wow 框架的 DDD 项目
特性概览
架构图
命令处理传播链
背景
随着业务的发展和复杂性的增加,传统的架构和开发方式逐渐显露出瓶颈。领域驱动设计和事件溯源等理念在提高系统设计的灵活性和可维护性方面表现出色,但在实践中常常需要面对复杂性和学习曲线的挑战。
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)作为数据分析的数据源,同时极大降低了实时 ETL(Extract, Transform, Load)的难度。
在传统架构中,实现实时 ETL 通常需要经过繁琐的流程,包括 DB->CDC->Process->DB,而在 Wow 框架中,仅需一段简单的 SQL 脚本即可完成这一过程。
另外,在传统架构中,使用 CDC(MySql Binlog)数据仅记录数据的变化,缺乏明确的业务语义。进行业务分析时,需要基于数据状态的变化推断出业务语义,这往往需要进行大量的数据处理。 相较之下,Wow 框架直接提供了聚合根状态事件和聚合命令作为数据分析的数据源,极大降低了数据处理的难度。
Wow 提供的实时同步机制将数据实时同步至数据仓库(ClickHouse),为实时数据分析提供了极大的便利。这种方法为商业智能提供了强有力的支持,构建了一个实时数据分析系统,使决策制定能够基于及时而准确的信息。
你可以在这里了解更多关于 Wow 商业智能。
操作审计
操作审计是企业中保障安全性和合规性的重要组成部分,同时也是对系统操作进行监控和追踪的关键手段。Wow 框架在这方面为企业带来了显著的优势。
通过记录聚合命令(Command)作为操作审计的数据源,Wow 框架能够详细追踪系统中的各种操作。 这些记录不仅包含了操作本身的内容,还涵盖了操作触发的副作用(领域事件),为审计提供了更为全面和准确的数据基础。
相较于传统审计方法,Wow 框架的操作审计的数据源具备更加明确的业务语义,以及操作后产生的明确领域事件。
此外,Wow 框架提供的实时数据同步机制也为操作审计带来了便利,确保了审计数据的及时性和一致性。
了解更多关于 Wow 操作审计。
事件补偿
事件补偿在事件驱动架构中的作用是处理和恢复因为事件处理失败而导致的数据不一致性或错误状态。 当系统中的某个事件处理失败时,event compensation 机制会介入并执行相应的补偿操作,以确保系统状态得以修复并保持一致性。 这个机制有助于保障系统的可靠性和稳定性,尤其是在复杂的分布式系统中,其中事件可能在多个组件或服务之间传递。 通过 event compensation,系统可以更好地处理故障和异常情况,防止错误状态的传播,并最终确保系统能够从失败中恢复并继续正常运行。
事件补偿模块提供了可视化的事件补偿控制台和自动补偿机制,确保系统数据的最终一致性。
执行时序图
- 订阅者服务:
- 订阅领域事件,执行业务逻辑。
- 在执行失败时,发送执行失败记录。
- 在执行成功时,发送执行成功记录。
- 控制台:
- 分布式补偿调度器: 定时检查待补偿事件并执行准备补偿操作。
- 通知: 在发生执行失败异常时,发送通知消息。
- 开发者:
- 监控: 监控补偿事件,执行重试操作以重新触发补偿逻辑,或标记不再需要的补偿事件。
- 接收通知: 接收执行失败通知,快速定位到异常,修复 BUG。
- 修复 BUG: 当发生无法自动修复的异常时,开发者可以通过控制台快速定位到异常,修复 BUG,并重新发起重试。
控制台
事件补偿控制台的强大功能不仅包括分布式定时调度自动补偿,还搭载直观可视化的补偿事件管理功能、事件补偿通知(企业微信)以及 OpenAPI 接口。
通过分布式定时自动补偿,Wow 框架智能地解决了系统数据最终一致性的难题,摆脱了手动补偿的繁琐过程。 而可视化的补偿事件管理功能为开发者提供了巨大便利,轻松监控和处理补偿事件。
在控制台上,开发者能轻松进行特定状态的补偿事件查询,执行重试操作以重新触发补偿逻辑,或删除不再需要的补偿事件,提供了灵活而直观的操作手段。
这一设计不仅增强了系统的稳健性和可维护性,同时也让开发者更容易处理复杂的分布式事务流程,确保系统在异常情况下能够正确而可控地进行补偿操作。
事件补偿控制台 也是基于 Wow 框架设计开发的。可以作为 Wow 框架的参考实现来学习。
UI
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Git for Windows v2.52.0 发布
Git for Windows v2.52.0 现已发布。正如最近几份版本说明中所宣布的那样,Git for Windows 项目已停止对git svn的支持。自 Git for Windows v2.51.2 以来的变更内容包括: 新功能 附带Git v2.52.0。 附带PCRE2 v10.47。 附带cURL v8.17.0。 Git for Windows 安装程序现在使用 InnoSetup6.6.0 版本构建,使其外观更加现代化。 错误修复 由于上游 Git v2.49.0 的更改,git help git-bash命令失效,现已修复。 更新说明:https://github.com/git-for-windows/git/releases/tag/v2.52.0.windows.1
-
下一篇
🔥 tsshd 0.1.5 支持 ssh 掉线自动重连
tsshd 0.1.5 支持 ssh 掉线自动重连,能够长期保持连接,切换网络、休眠与唤醒都不会掉线。 GitHub:https://github.com/trzsz/tsshd Gitee:https://gitee.com/trzsz/tsshd trzsz-ssh ( tssh ) 与 tsshd 一起,适用于高延迟的弱网连接,切换网络、休眠与唤醒都不会掉线,让 ssh 会话永远保持。 tssh 设计为 ssh 客户端的直接替代品,提供与 openssh 完全兼容的基础功能,同时实现其他有用的扩展功能,外加: 客户端进入休眠并且迟些再唤醒,或者暂时断开网络,ssh 会话可以保持不掉线。 客户端换地方接入,更换 IP 地址,任意切换网络等,ssh 会话可以保持不中断。 功能对比 tsshd 的灵感来源于mosh,tsshd类似于mosh-server,而tssh --udp类似于mosh。 Feature mosh ( mosh-server ) tssh ( tsshd ) 超低延迟 ?? ✅KCP 保持连接 ✅ ✅ 切换网络 ✅ ✅ 本地回显 & 行编辑 ✅ 无支持计划...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作






微信收款码
支付宝收款码