一个按 Token 收费的 AI 服务,最初可能只需要一张用量表:请求完成后记下客户、模型和 Token 数量,月底求和,再乘上单价。随着事件增多,问题逐渐出现在记录和查询链路上:客户端重试可能产生重复记录,离线任务可能补报昨天的用量,逐条写入会拖慢存储,刚上报的事件也未必能立即查到。要得到可信的用量,首先需要弄清这些事件经过了哪些处理,以及每一步成功究竟意味着什么。
OpenMeter 把事件接入、后台写入和计量查询拆开,分别交给 API server、Kafka、Sink worker 和 ClickHouse 协作完成。业务配置及其他需要事务约束的状态保存在 PostgreSQL,内部消息和通知机制则连接后续处理。理解这些组件之间的数据流和一致性边界,比记住项目用了哪些数据库更有帮助。