EventSourcingDB 1.3.0 引入了全新的 v2 API,从根本上改变了数据库与客户端的通信方式:它直接在响应正文中报告请求结果,而非依赖 HTTP 状态码。这一转变结合 60 多个错误修复,旨在为构建基于事件溯源架构的开发者提供更稳定、更快速的体验。

v2 API 与错误处理

v2 API 仅在请求通过身份验证、模式验证和资源限制后才将其视为“已接受”。一旦被接受,服务器将在正文中返回结果,允许客户端读取特定的错误代码,而不是去解析通用的 HTTP 状态码。

每个错误代码都作为直接链接指向文档页面,解释原因并提供必要的修复方案。此外,v2 API 引入了递归前提条件,例如 `isSubjectPristine` 和 `isSubjectPopulated`,这些条件可以应用于树状结构中的主体及其所有子节点。

“写入和 EventQL 查询速度显著加快,读取速度也更快,每个请求都有时间限制,并且包含了 60 多个修复。”

— EventSourcingDB 1.3.0 is Available

性能与稳定性优化

1.3.0 版本优化了底层存储和查询引擎,提高了单客户端和并发客户端的写入速度。它还提升了 EventQL 查询性能,特别是针对对多个源进行分组、排序或连接的操作。

为了确保系统稳定性,此次更新对每个请求、回答和空闲连接引入了严格的资源限制。EventQL 查询现在受到嵌套深度和内存使用的限制,以防止单个查询溢出堆栈或耗尽系统内存。

生产就绪与迁移

新的生产导向功能包括随机器规模缩放的默认速率限制器,以及兼容 OpenMetrics 的健康检查端点。新的 `--require-event-schemas` 标志允许管理员拒绝任何没有注册模式的写入或事件恢复操作。

升级到 1.3.0 需要完全停止服务器,因为新版本会锁定数据目录,导致滚动更新无法实现。用户还必须在升级前更新其客户端 SDK,因为 1.3.0 使用新的事件哈希版本,旧版 SDK 会将其标记为篡改数据。