kuvasz-streamer:实时数据同步的高性能开源解决方案
项目介绍
kuvasz-streamer 是一个开源的变更数据捕获(Change Data Capture,CDC)项目,专注于 PostgreSQL 数据库。它通过紧密集成 PostgreSQL 的逻辑复制功能,提供高性能、低延迟的数据复制能力。kuvasz-streamer 的设计理念是为开发者提供简单易用、性能卓越的数据同步工具。
项目技术分析
kuvasz-streamer 采用 Go 语言编写,其设计轻量且高效,无外部依赖,无需排队。它支持以系统服务或 Docker 容器的方式运行,并提供了多种配置模式,包括声明式配置和数据库支持的交互模式。声明式配置模式下,配置信息存储在只读的 YAML 文件中,无需在磁盘上写入文件,非常适合 CI/CD 流水线和 Kubernetes 部署。
项目及技术应用场景
kuvasz-streamer 的应用场景广泛,主要包括:
- 微服务数据库整合:在微服务架构中,每个服务通常拥有自己的数据库。kuvasz-streamer 能够将所有服务的数据库整合到一个数据仓库中,而无需仓库的架构与原服务保持一致。
- 多租户数据库整合:在多租户环境中,每个租户可能被分配独立的数据库以防止数据交叉污染。kuvasz-streamer 可以将所有数据整合到单个带租户标识的表中,便于报告和分析。
- 数据库性能优化:微服务架构中,通常只保留必要的历史数据以保持查询速度和低延迟。kuvasz-streamer 实现了不删除策略,对某些表不传播
DELETE
操作,适用于交易表和审计历史表等场景。 - PostgreSQL 大版本升级:升级 PostgreSQL 的主要版本是一项耗时的任务,需要较长的停机时间。kuvasz-streamer 可以在不同版本的 PostgreSQL 之间同步数据库,实现快速切换。
项目特点
以下是 kuvasz-streamer 的主要特点:
轻量级
kuvasz-streamer 是一个轻量级服务,使用 Go 语言编写,无外部依赖和排队需求。它支持完全声明式配置,配置存储在只读 YAML 文件中,适合 CI/CD 和 Kubernetes 部署。
高性能
kuvasz-streamer 利用 PostgreSQL 的 COPY 协议进行初始同步,并使用逻辑复制协议进行后续同步。它通过打开多个连接到目标数据库并进行负载均衡,将更新分批处理以显著提高性能。此外,它还支持全局速率限制,防止生产数据库服务器过载。
kuvasz-streamer 在基准测试中实现了每秒 10K 事务的处理能力,并且延迟小于 1 秒。
功能全面
kuvasz-streamer 简化了发布(publications)和复制槽(replication slots)的管理:
- 启动时自动创建缺失的发布和复制槽
- 自动将配置的表添加到发布中
- 添加新表时执行完整同步
kuvasz-streamer 还提供完整的可观察性,包括 Prometheus 指标和详尽的日志。
灵活性
kuvasz-streamer 支持多种表流模式:
- 克隆模式:原样复制源表
- 仅追加模式:复制源表但不清除任何记录
- 历史模式:保留所有变更的完整历史记录和时间戳
完整的 PostgreSQL 支持
kuvasz-streamer 为 PostgreSQL 提供了完整的支持,并拥有广泛的测试套件:
- 支持所有最新的 PostgreSQL 版本(从 12 到 17)
- 支持所有数据类型
- 支持分区
- 支持模式(源表可在任何数据库和模式中,目标表在单个数据库和模式中)
API 和 Web 界面
kuvasz-streamer 提供了一个可选的 API 和 Web 界面,便于管理发布和映射配置。
kuvasz-streamer 作为一个高效、灵活的开源数据同步工具,适用于多种场景,能够帮助开发者和企业实现数据整合和性能优化。其简单易用的特性,加上全面的 PostgreSQL 支持和高性能表现,使其成为当前市场上不可多得的 CDC 解决方案。如果您正在寻找一个能够高效同步 PostgreSQL 数据的开源工具,kuvasz-streamer 绝对值得一试。