首页
/ EventStoreDB v25.0.0 发布:全面升级为 KurrentDB 并引入革命性归档功能

EventStoreDB v25.0.0 发布:全面升级为 KurrentDB 并引入革命性归档功能

2025-06-10 20:27:30作者:晏闻田Solitary

EventStoreDB 是一个高性能、开源的事件溯源数据库,专为处理事件流而设计。它采用事件溯源架构,能够持久化、处理和查询事件数据。在最新发布的 v25.0.0 版本中,EventStoreDB 经历了一系列重大变革,包括品牌重塑为 KurrentDB 以及引入了创新的归档功能。

品牌重塑:从 EventStoreDB 到 KurrentDB

v25.0.0 版本标志着 EventStoreDB 正式更名为 KurrentDB。这一变化不仅仅是一个简单的名称变更,而是贯穿了整个项目的各个方面:

  1. 配置前缀和部分重命名:所有配置项的前缀和部分名称都已更新,以反映新的品牌标识。

  2. 可执行文件变更:主程序的可执行文件名称已从 EventStore 更改为 KurrentDB

  3. 日志消息和默认用户名更新:系统日志消息和默认用户名中的 "EventStore" 已全部替换为 "KurrentDB"。

  4. 测试客户端重命名:测试客户端工具从 EventStore.TestClient 更名为 KurrentDB.TestClient

  5. HTTP API 内容类型变更:自定义的 HTTP API 内容类型已更新为新品牌名称。

  6. HTTP 头部更新:所有 HTTP 头部中的 "EventStore" 已被替换为 "KurrentDB"。

  7. 指标系统更新:监控指标系统已全面更新为使用 "kurrentdb" 前缀。

  8. 许可证和遥测端点:许可证检查和遥测收集的端点也已更新为新品牌名称。

值得注意的是,为了确保向后兼容性,系统仍然提供了获取旧版 EventStore 指标的选项,这使得过渡更加平滑。

革命性的归档功能

v25.0.0 版本引入了全新的归档功能,这是数据库架构的一项重大改进。归档功能允许将旧的、已完成的和已清理的块(chunk)从本地存储转移到成本更低的长期存储解决方案中,如 S3 对象存储。

归档功能的核心改进

  1. 异步友好的同步机制:引入了 HashListMemTable 的异步友好同步机制,为归档功能奠定了基础。

  2. TFChunk 读取侧内部 API 异步化:将 TFChunk 读取侧的内部 API 迁移到异步模式,提高了系统在处理大块数据时的响应能力。

  3. S3 存储支持:实现了将块上传到 S3 对象存储的功能,支持部分读取操作,优化了网络带宽使用。

  4. 顺序归档机制:确保块按照正确的顺序进行归档,防止数据不一致。

  5. 归档检查点:引入归档检查点机制,取代了简单的列表查询,提高了归档状态的确定效率。

  6. 追赶过程优化:实现了归档追赶过程,确保节点加入集群后能够正确同步归档状态。

  7. 逻辑块号映射:建立了逻辑块号与归档块文件名之间的映射关系,简化了归档数据的管理。

  8. 异步转换基础设施:构建了完整的异步转换基础设施,支持高效的批量数据处理。

  9. 保留策略配置:允许管理员配置归档保留策略,自动管理本地存储中的旧数据。

  10. 抽象文件系统:引入了抽象文件系统层,统一了本地和远程存储的访问接口。

  11. S3 块句柄:实现了 S3ChunkHandle 来从对象存储中读取块数据,优化了远程访问性能。

  12. 本地块清理:在清理过程中根据归档和保留策略自动移除本地块,释放存储空间。

  13. 单调归档过程:确保归档过程是单调的,防止数据不一致。

  14. 性能优化:通过优化 posmap 解析和添加异步读取/写入标志,显著提高了启动和运行时的性能。

  15. 监控指标:新增了 eventstore-io-record-read-duration-seconds 直方图指标,用于跟踪不同来源(内存/文件系统/归档)的记录读取性能。

  16. 块解合并:实现了块解合并功能,提高了存储灵活性。

  17. 取消令牌处理:统一了取消令牌的处理方式,提高了系统的健壮性。

  18. 硬删除限制:当启用归档功能时,禁止使用 UnsafeIgnoreHardDelete 选项,确保数据完整性。

全新的服务器 UI

v25.0.0 版本还带来了全新的基于 Blazor 的 Web UI:

  1. 现代化架构:采用 Sdk.Web 和顶级语句的 Program.cs,简化了代码结构。

  2. CORS 策略:添加了完善的跨域资源共享策略,提高了前端集成的灵活性。

  3. 服务注册清理:优化了服务注册逻辑,提高了启动效率。

  4. 内容根设置:正确设置了内容根目录,确保静态资源加载可靠。

  5. 许可证集成:将许可证信息集成到 UI 中,方便管理员查看。

  6. 管道优化:调整了中间件顺序,确保 CORS 在路由之前处理。

  7. 浏览器重定向:实现了智能的浏览器调用重定向机制。

  8. 客户端-服务器分离:将 UI 分离为客户端和服务器部分,提高了架构清晰度。

持久订阅分页支持

新版本还增加了对持久订阅的分页支持,这使得处理大量订阅事件变得更加高效和可控。

其他重要改进

除了上述主要功能外,v25.0.0 还包含了许多其他改进:

  1. 日志级别调整:优化了 gRPC 枚举器的日志级别,减少了噪音。

  2. 废弃选项移除:清理了已弃用的配置选项,简化了配置界面。

  3. 依赖更新:更新了依赖库版本,修复了已知的问题。

  4. 命名空间对齐:统一了清理功能的命名空间,提高了代码一致性。

  5. 配置逻辑分离:将配置逻辑与启动逻辑分离,提高了代码的可维护性。

  6. 直方图桶对齐:调整了直方图桶设置,与仪表板更好地配合。

  7. OTLP 导出器集成:将 OpenTelemetry 协议导出器插件集成到主仓库中。

  8. 服务初始化跟踪:跟踪已初始化的服务,确保关闭时正确等待。

  9. 未使用代码清理:移除了未使用的 LRUCache 代码,减少了代码库体积。

  10. 大事务处理:修复了处理大于整个块的事务时的问题。

  11. 安全更新:更新 OpenTelemetry 到 1.11.12 版本,修复了相关安全问题。

  12. 启动检查:在启动时验证数据库对数据库路径的写入权限。

  13. 优雅退出:在启动任务被取消时实现干净退出。

  14. 日志优化:避免在成功截断后记录 FTL 级别的日志消息。

总结

KurrentDB v25.0.0 是一个里程碑式的版本,不仅完成了品牌重塑,还引入了革命性的归档功能,大幅提升了系统的可扩展性和经济性。新的 Blazor Web UI 提供了更现代化的管理界面,而持久订阅的分页支持则增强了大规模事件处理的能力。这些改进共同使 KurrentDB 成为一个更加强大、灵活且易于管理的事件溯源数据库解决方案。

登录后查看全文
热门项目推荐

项目优选

收起
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
50
373
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
348
381
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
873
517
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
179
263
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
131
185
kernelkernel
deepin linux kernel
C
22
5
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
335
1.09 K
harmony-utilsharmony-utils
harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。
ArkTS
32
0
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.08 K
0