Langfuse 技术架构深度解析:从一个 Postgres 到 ClickHouse+Redis 的可观测性平台演进

> 来源: https://github.com/langfuse/langfuse

> 架构手册: https://langfuse.com/handbook/product-engineering/architecture

> v3 架构演进博客: https://langfuse.com/blog/2024-12-langfuse-v3-infrastructure-evolution

> 自托管文档: https://langfuse.com/self-hosting

> ClickHouse 合作博客: https://clickhouse.com/blog/langfuse-and-clickhouse-a-new-data-stack-for-modern-llm-applications

> 研究时间: 2026-03-17

📌 一句话总结

Langfuse 是目前最成熟的开源 LLM 可观测性平台(23K+ Stars,YC W23),从 2023 年的 Next.js + Postgres 单体架构,演进到 v3 的 ClickHouse + PostgreSQL + Redis + S3 四组件分布式架构。自托管 docker compose up 三分钟启动,生产部署支持 K8s Helm 和 AWS/Azure/GCP Terraform 模板。被 ClickHouse 收购后成为其 LLM 可观测性标杆。

🏗️ 架构全景

v1 → v3 演进


v1 (2023 YC W23)          v2 (2024 中期)              v3 (2024.12 发布)
┌──────────┐         ┌──────────────┐          ┌──────────────────────┐
│ Next.js  │         │ Next.js Web  │          │ Web (Next.js)        │
│    +     │   →     │    +         │    →     │ Worker (Express)     │
│ Postgres │         │ Redis Queue  │          │ PostgreSQL (OLTP)    │
└──────────┘         │ + Postgres   │          │ ClickHouse (OLAP)    │
                     └──────────────┘          │ Redis (Queue+Cache)  │
                                               │ S3/MinIO (Blob)      │
                                               └──────────────────────┘

v3 架构详解


┌─────────────────────────────────────────────────────────┐
│                        VPC                               │
│                                                          │
│  ┌─────────────┐     ┌──────────────┐                   │
│  │  Web Server  │────→│    Redis     │                   │
│  │  (Next.js)   │     │ (Queue+Cache)│                   │
│  │  UI + API    │     └──────┬───────┘                   │
│  └──────┬───────┘            │                           │
│         │              ┌─────▼──────┐                    │
│         │              │   Worker    │                    │
│         │              │  (Express)  │                    │
│         │              └──────┬──────┘                    │
│         │                     │                           │
│  ┌──────▼───────┐  ┌────────▼────────┐  ┌────────────┐ │
│  │  PostgreSQL   │  │   ClickHouse    │  │ S3 / MinIO │ │
│  │   (OLTP)      │  │    (OLAP)       │  │  (Blob)    │ │
│  │ 用户/组织/项目 │  │ Traces/Scores   │  │ 原始事件    │ │
│  │ API Key/Prompt │  │ 仪表盘/分析     │  │ 多模态附件  │ │
│  │ 数据集/评估    │  │                 │  │            │ │
│  └───────────────┘  └─────────────────┘  └────────────┘ │
│                                                          │
│  ┌──────────────────────────────────────────────────┐   │
│  │  LLM API / Gateway (可选)                         │   │
│  │  用于 Playground、LLM-as-a-Judge 等功能           │   │
│  └──────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘

四大存储组件职责

组件类型存储内容为什么选它
**PostgreSQL**OLTP用户、组织、项目、API Key、Prompt、数据集、评估设置事务型数据,强一致性
**ClickHouse**OLAPTraces、Observations、Scores列式存储,分析查询极快,Apache 开源
**Redis/Valkey**Queue + CacheBullMQ 事件队列 + API Key/Prompt 缓存低延迟,自托管友好(比 Kafka 轻量)
**S3/MinIO**Blob原始摄入事件、多模态附件(图片/音频/视频)事件持久化 + 大文件存储

两个应用容器

容器框架职责
**langfuse/langfuse** (Web)Next.jsUI 界面 + 所有 API(摄入、查询、管理)
**langfuse/worker** (Worker)Express异步事件处理、token 化、成本计算、LLM-as-a-Judge、数据导出

🔧 关键技术设计

1. 排队摄入管线(解决高峰流量)

v1 的致命问题:高峰期摄入 API 延迟飙到 50 秒,因为每条事件同步写 Postgres。

v3 的解决方案:


SDK batch 发送
    ↓
Web API(轻量验证:认证 + 格式检查)
    ↓
事件写入 S3(持久化,确保不丢)
    ↓
S3 引用放入 Redis 队列(BullMQ)
    ↓
Worker 异步消费:token 化 → 成本计算 → 写入 ClickHouse

关键:Redis 队列里只传 S3 引用,不传实际数据。这样即使 ClickHouse 临时不可用,事件也不会丢失(全在 S3 里)。

2. ClickHouse ReplacingMergeTree(解决 OLAP 更新问题)

SDK 会对同一个 Trace ID 多次发送更新。在 Postgres 里 UPDATE 很快,但在 ClickHouse 里 UPDATE 极其昂贵

解决方案:


新事件到达
    ↓
从 Redis 读取当前状态(10 秒内缓存)
    ↓
合并更新 → INSERT 新行到 ClickHouse
    ↓
ClickHouse 后台 merge 去重

3. Redis 三重角色

角色用途效果
**事件队列**BullMQ 消息队列解耦摄入与处理,削峰填谷
**API Key 缓存**内存缓存所有 API Key每次 API 调用不查数据库,未授权请求极低资源拒绝
**Prompt 缓存**Read-through cache热门 Prompt 不查 Postgres,p95 延迟从 7 秒降到毫秒级

4. 可恢复性设计

所有摄入事件先写 S3,再处理。即使 ClickHouse 宕机,事件也安全保存在 S3 中,恢复后自动补处理。这个设计保证了零数据丢失

📦 安装方法

方法一:Docker Compose(最简单,适合试用和小规模)


# 1. 克隆仓库
git clone https://github.com/langfuse/langfuse.git
cd langfuse

# 2. 修改 docker-compose.yml 中的密钥(标记为 # CHANGEME 的行)

# 3. 启动
docker compose up

# 4. 等待 2-3 分钟,看到 "Ready" 后访问 http://localhost:3000

最低要求(VM 部署):

方法二:Kubernetes Helm(生产推荐)


# 添加 Helm repo
helm repo add langfuse https://langfuse.github.io/langfuse-helm
helm repo update

# 安装
helm install langfuse langfuse/langfuse \
  --namespace langfuse \
  --create-namespace \
  -f values.yaml

支持:

方法三:Terraform 模板

云平台文档
**AWS**https://langfuse.com/self-hosting/deployment/aws
**Azure**https://langfuse.com/self-hosting/deployment/azure
**GCP**https://langfuse.com/self-hosting/deployment/gcp

一键部署完整基础设施:ECS/EKS + Aurora PostgreSQL + ElastiCache Redis + ClickHouse + S3。

方法四:Langfuse Cloud(零运维)

直接注册 https://cloud.langfuse.com,免费 Hobby 套餐即可开始。

💰 定价

方案月费含量数据保留用户数适用场景
**Hobby**免费50K units30 天2个人试用
**Core**$29100K units90 天无限小团队生产
**Pro**$199100K units3 年无限需要合规(SOC2/ISO27001)
**Enterprise**$2,499+100K units3 年无限大型组织,专属 SLA
**自托管**免费无限无限无限完全掌控

超出套餐:$8 / 100K units(所有付费方案)

> "Unit" = 1 个 Trace、Observation 或 Score

自托管 vs Cloud 成本对比

假设月处理 100 万 units:

自托管在大规模时更便宜,但需要运维投入。小规模直接用 Cloud 更省事。

🔌 集成生态

SDK & 框架

集成语言方式
**Langfuse SDK**Python, JS/TS手动埋点
**OpenAI**Python, JS/TSDrop-in 替换 SDK
**LangChain**Python, JS/TSCallback Handler
**LlamaIndex**PythonCallback
**Vercel AI SDK**JS/TS原生集成
**LiteLLM**Python代理模式
**OpenTelemetry**通用OTLP 标准
**Haystack**PythonContent Tracing
**Mastra**JS/TSMulti-Agent 框架

OpenClaw 集成

Langfuse 官方有 OpenClaw 集成文档。最简单的接入方式:

1. OpenRouter Broadcast:零代码修改,在 OpenRouter 配置里加一个 Langfuse callback URL

2. LiteLLM Proxy:如果用 LiteLLM 做模型路由,自带 Langfuse 集成

🤔 深度分析

为什么选 ClickHouse 而不是其他 OLAP?

方案优势劣势
**ClickHouse** ✅Apache 开源、列式高性能、自托管友好更新昂贵(需要 ReplacingMergeTree workaround)
DuckDB嵌入式、零运维不支持多节点、不适合高并发摄入
Apache Druid实时摄入强部署复杂、非 Apache 友好许可
TimescaleDB时序优化、Postgres 扩展分析查询不如列式数据库

Langfuse 选 ClickHouse 的决定性因素:开源许可 + 可自托管 + 列式分析性能。后来被 ClickHouse 收购更证明了这个选择。

架构的三个聪明之处

1. S3 First:所有事件先落 S3,再异步处理。这意味着即使整个处理管线宕机,数据也不会丢。这是大规模可观测性系统的标准做法(Datadog、Honeycomb 也这么干)。

2. Redis 而非 Kafka:对于需要自托管的开源项目,Redis 的运维成本远低于 Kafka。BullMQ 提供了足够的队列能力。代价是不如 Kafka 能处理极端吞吐,但对绝大多数用户够了。

3. 双数据库分离:Postgres 管事务(写多读少、强一致)、ClickHouse 管分析(写多读多、最终一致)。两者各司其职,互不干扰。

潜在问题

💡 与我们的关联

1. 我们的 OpenClaw 可以直接接入

之前研究过,最简路径是 OpenRouter Broadcast——零代码改动,在 OpenRouter 后台加个 Langfuse callback 就行。所有 Agent 的 LLM 调用自动出现在 Langfuse 仪表盘。

2. 我们的服务器能跑

我们的 VPS 是 1vCPU/2GB(偏小),但 docker-compose 最低推荐 4 核 16GB。两个方案:

3. 反馈闭环

之前研究 auxten(ClickMem 作者)提到的 "Agent 查 Langfuse → 找 bad case → 自动优化" 模式。有了 Langfuse 的 Trace 数据,我们可以:

❓ 常见问题

Q1: Langfuse 的 "Unit" 是什么?

Langfuse 的计费单位 unit = 1 个可计费事件,包括三种:

Unit 类型含义举例
**Trace**一次完整的用户请求链路用户发了一条消息 → 1 个 trace
**Observation**Trace 内的单个操作节点一次 LLM 调用、一次工具调用、一次检索
**Score**对 Trace/Observation 的评分用户反馈👍、LLM-as-a-Judge 评分

实际消耗举例

所以 Hobby 的 50K units/月:

Q2: 有更简单运维的开源替代品吗?

有。主流开源 LLM 可观测性平台运维复杂度对比:

平台Stars存储组件运维复杂度
**Langfuse**23K+PG + ClickHouse + Redis + S3⭐⭐⭐⭐ 复杂
**Opik** (Comet)6K+MySQL + ClickHouse + Redis + Zookeeper⭐⭐⭐⭐ 同样复杂
**Helicone**4K+PG + ClickHouse + S3⭐⭐⭐ 中等
**Phoenix** (Arize)15K+**仅 PostgreSQL**⭐ **最简单**
**OpenLLMetry** (Traceloop)3K+接标准 OTLP 后端⭐ 轻量

最简单的替代品:Phoenix(Arize)


# 安装(一行命令)
pip install arize-phoenix

# 启动(一行命令)
phoenix serve

# 打开 http://localhost:6006

Phoenix 的优势:

Phoenix 的代价:

建议:个人/小团队先用 Phoenix(pip install 秒装),量大了再迁移到 Langfuse。

📊 评分

维度评分(/10)
技术架构9.0 — 四组件分离、S3-first 持久化、ReplacingMergeTree 创新方案
安装体验8.5 — docker-compose 三分钟起步,但生产 4 组件运维复杂
开源程度8.5 — 核心全开源(MIT),部分企业功能需 License Key
文档质量9.5 — 架构博客、Handbook、部署文档极其详细透明
与我们的关联8.0 — OpenRouter 零代码接入,ub2 可自托管
**综合****8.8**

报告由深度研究助手自动生成 | 2026-03-17

来源: https://github.com/langfuse/langfuse