1.2 为什么值得学
学习目标
完成本节后,你将能够:
- 说出 Langfuse repo 对工程学习的价值。
- 理解为什么它适合作为大型 TypeScript monorepo 案例。
- 区分产品功能学习和源码架构学习。
1.2.1 值得学的四个原因
| 原因 | 体现 |
|---|---|
| 多入口 | UI tRPC、Public API、ingestion、worker queue 并存 |
| 多存储 | PostgreSQL、ClickHouse、Redis、S3 分工明确 |
| 强契约 | Zod、TypeScript、queue payload、FilterState、query builder |
| 高吞吐场景 | LLM observability 数据天然宽、快、多、高基数 |
这类系统最能训练“架构阅读能力”:你必须先找到边界,再读实现。
1.2.2 与普通 CRUD 项目的区别
| 普通 CRUD | Langfuse |
|---|---|
| 单一数据库为主 | Postgres + ClickHouse + Redis + S3 |
| 请求同步完成 | 大量任务异步排队处理 |
| 页面和 API 边界简单 | UI API、Public API、SDK ingestion 分开 |
| 表单字段直接落库 | 事件要校验、聚合、合并、写宽表 |
| 查询语义简单 | FilterState → query builder → ClickHouse SQL |
1.2.3 学完能带走什么
- 大型 monorepo 的 package 边界判断。
- 高吞吐数据写入链路的异步化思路。
- 前端复杂筛选 UI 如何保持单一事实源。
- Public API 如何用 Zod 和 Fern 维护外部契约。
- ClickHouse 宽事件模型和轻量投影的取舍。