向 HN 展示:Filament – Go 语言快速数据移动引擎
摘要
Filament 是一个用 Go 编写的快速数据移动引擎,提供可插拔的数据复制功能,支持检查点、批处理和完整性事件,以实现可靠且持久的数据管道。
查看缓存全文
缓存时间: 2026/09/10 17:18
galaxy-io/filament
来源:https://github.com/galaxy-io/filament
发布版本 (https://github.com/galaxy-io/filament/releases)
测试 (https://github.com/galaxy-io/filament/actions/workflows/test.yaml)
许可证:Apache 2.0
DeepWiki (https://deepwiki.com/galaxy-io/filament)
Slack (https://join.slack.com/t/galaxy-filament/shared_invite/zt-486oaagls-WCKm605mP6NCmoB3E7frpQ)
Filament
Filament 是一个具备检查点、批处理和完整性事件的可插拔数据复制工具。它使用全量、增量或变更数据捕获复制方式,将数据从源移动到目标。Filament 在数据传输过程中持久化进度记录,对写入两侧的批次进行验证,并能安全地从检查点暂停或恢复运行。数据源、数据目的地、状态存储和事件传输均为可替换接口。
你可以通过其 API 和 Web UI 将 Filament 作为服务运行,部署到自有基础设施,或将引擎嵌入 Go 应用程序。
安装
curl -fsSL https://getgalaxy.io/filament/install | sh
在 macOS 上通过 Homebrew 安装:
brew install galaxy-io/tap/filament
Linux 和 macOS 的预编译二进制文件可在发布页面 (https://github.com/galaxy-io/filament/releases) 下载。
入门指南
要在本地运行 Filament,请安装 Go、Docker、just、Node.js 和 pnpm。
在 macOS 上,仓库的 Brewfile 会安装工具链:
brew bundle
对于 Podman 用户,请设置 CONTAINER_ENGINE=podman 以在以下命令中使用 Podman。详情参见 引擎配置。
启动 PostgreSQL 和 NATS,然后运行 Filament:
just infra
just dev
打开 http://localhost:3000 使用 Web UI。完成后,停止本地基础设施:
just infra down
部署 Filament
推荐使用 Kubernetes 和 Helm 在生产环境中运行 Filament。安装说明请参见 Kubernetes 部署指南 (https://filament.getgalaxy.io/pages/guides/deployment/kubernetes),所有支持的配置项请查看 Helm Chart README。
如需更简单的免 Kubernetes 托管部署,可一键部署:
请阅读 Railway (https://filament.getgalaxy.io/pages/guides/deployment/railway)、Render (https://filament.getgalaxy.io/pages/guides/deployment/render) 和 DigitalOcean (https://filament.getgalaxy.io/pages/guides/deployment/digitalocean) 指南,了解部署的资源、运行时行为和生产环境检查清单。
DigitalOcean 部署使用 filament/standalone (https://github.com/galaxy-io/filament/blob/main/cmd/standalone/main.go),这是一个包含控制平面、服务器和 SQLite 数据存储的一体化镜像。
工作原理
Filament 管道将数据源连接到数据目的地,并定义选定资源应如何复制。在运行过程中,Filament 将记录提取成有限批次,写入并验证每个批次,仅在成功完成后才推进持久化检查点。
运行时采用事件驱动架构:服务器接收管道和运行请求,控制平面调度和分配任务,工作节点执行单个运行任务。PostgreSQL 存储持久化状态,NATS JetStream 在各组件之间传输生命周期事件。
开发 Filament
Filament 使用 Go 编写,Web UI 基于 React 和 TypeScript。欢迎为引擎、连接器、UI、部署工具、测试和文档贡献代码。
请参阅 CONTRIBUTING.md 了解仓库设置、代码生成、测试和拉取请求指南。
社区
- 阅读 Filament 文档 (https://filament.getgalaxy.io)。
- 在 Filament Slack 社区 (https://join.slack.com/t/galaxy-filament/shared_invite/zt-486oaagls-WCKm605mP6NCmoB3E7frpQ) 提问并与其他用户交流。
- 通过 GitHub Issues (https://github.com/galaxy-io/filament/issues) 报告错误或提出功能建议。
相似文章
Rive,Go语言中快速可靠的后台任务
River是一个健壮、高性能的Go和Postgres任务处理系统,强调事务性入队以避免分布式系统陷阱。
Show HN: Tiny – 一种带有内联Go原生函数的动态解释型语言
Tiny是一种用Go编写的新的动态解释型编程语言,具有字节码虚拟机、JIT编译和内联Go原生函数,以实现高性能。
Fileregister:基于纯文本的文件标签与引用层
Fileregister 是一款可移植的 Go CLI 工具,它通过永久 ID、JSONL 索引和 Markdown 伴生文件,为文件构建纯文本的标签与引用层,使链接和元数据在重命名和跨磁盘移动后依然得以保留。
HFlow
HFlow 是一个可扩展的多模态数据管道工具,用于机器人应用,最近在 Product Hunt 上被推荐。
I want extern "fil-c"
作者主张一种讲 Fil-C ABI 的 Rust FFI,使其能够与重新编译的 C/C++ 库安全互操作,并呼吁 Rust、Fil-C、Zig 和 Nix/filnix 社区之间进行跨生态协作。