Date: 7/2/2026Category: GoWind风行Tag: UBA, 大数据分析, Golang, GoWind
本文回答一个问题:一个埋点事件,从用户在浏览器里点了一下,到最终被 Kafka 接住,中间的 SDK 和 Collector 做了多少你看不见的工程? 答案是:比你想象的多得多。
一、为什么"采集"这件事很难
很多人以为埋点 SDK 就是 fetch('/report', { body: event })。这在 demo 里成立,在生产里不成立。真实的采集层要回答这些问题:
- 页面随时可能关闭——用户点完就关 tab,残留事件怎么办?
- 网络随时可能抖动——一次失败就丢数据?还是重试?重试几次?退避多久?
- 服务端可能限流——429 要重试,但 401(鉴权失败)不该重试,怎么区分?
- 批量还是单条——单条上报开销大,批量要攒多久、攒多少?
- 客户端环境千差万别——浏览器的 sendBeacon、Unity WebGL 不能用 HttpClient、小程序没有 localStorage……
- 凭证放哪——放 Header 还是 body?前者标准但不支持 sendBeacon。
