喵个咪的博客喵个咪的博客
TX7DO
文章列表
文章分类
文章标签
时间线
TX7DO
文章列表
文章分类
文章标签
时间线
健康养生 1fastapi 1随笔日志 1产品设计 1Golang 111架构 1ASIO 2cron 1rclone 1flutter 1RxDart 1Make 2CMake 2Ninja 1设计模式 2Cache Aside Pattern 1缓存设计模式 1汽车 1go 2CDC 1PostgreSQL 6Centos 1docker 1杀毒 1CLion 1云手机 1GoogleTest 1Cococs2dx 1Cocos Creator 1代码注释 1IDE 3Python 4TRC20 1C++ 8类型转换 1CQRS 1Kafka Streams 1Bazel 2Docker 21Go 6crontab 1客户留存率 1EFK 1RustDesk 1Jitsi Meet 1Traefik 1Swagger 1Docker Hub 1VIM 1Word 1VBA 1Doris 1量化交易 2Flutter 14Widget 1Ent 3SQL 2Excel 2配色 1TypeScript 3C# 1Sealed Class 2微信小程序 1人脸识别 2RK3588S 1Android Studio 1iOS 1GetX 1鸿蒙 1字体渲染 1期货 1Futures 1地理围栏 1GEO 1Git 2Vue3 6React 7Protobuf 6GoWind 60AI 1Dart 1CMS 4Go-Kratos 91React.js 1Vue 2Nuxt 1Taro 1IAM 1JWT 1Casbin 1OPA 1GoWind Toolkit 2代码生成 2Element Plus 1Ant Design 1UBA 5大数据分析 4算法 5WebRTC 3MongoDB 1Kratos 2CRUD 1GORM 1Wire 1Headless CMS 1WASM 1随机种子 1MacOS 3Ubuntu 2GCC 1Godot 1Clang 1Superset 1CentOS 1OpenCV 1咖啡 1Android 1Google Play 1Unity WebGL 1Dexie 1IndexedDB 1htop 1IM 1Postgresql 1Mattermost 1Qt 4TL;DR 1Swift 1Javascript 2JetBrains 1Typescript 1libuv 1Linux 1本地化 1国际化 1状态同步 1帧同步 1泡泡水 1Markdown 1机器学习 1QTT 1MQTT 2MSB 1LSB 1MySQL 1npm 1pnpm 1yarn 1OCR 1OHLC 1OLTP 1OLAP 1OpenAI 1OpenAPI 1数织 1Ping 1人体姿态识别 1全文搜索 1交叉表 1Prometheus 1Docx 1QUIC 1Reactor 1Websocket 1KCP 1Kratos-Transport 1Redis 1REST 1CoTURN 2RBAC 1SDD 1Selenium 1基准测试 1Spine 1股票 1Roguelike 2ThingsBoard 3时间戳 1时序数据库 3交易所 1Unity 2用户画像 1PgBouncer 1Vite 1WebGL 1加权随机 1BI 1数据血缘 1Roguelite 1Protocol 1WiFi 1WSL 3Windows 4
Go Wind UBA 拆解系列 - SDK 与采集层:从浏览器到 Kafka

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。
Go Wind UBA 拆解系列 - OLAP 与 SQL 硬核:25 个分析模型怎么落地

Date: 7/2/2026Category: GoWind风行Tag: UBA, 大数据分析, Golang, GoWind

本文回答一个问题:25 个分析模型(漏斗 / 留存 / LTV / 归因 / 路径……)在 ClickHouse 和 Doris 上,到底是用什么 SQL 写出来的?双引擎又是怎么做到"一份业务模型,两份实现"的?

一、为什么是双引擎?

先说结论:GoWind UBA 支持 ClickHouse 和 Apache Doris 二选一,部署时按需选其一,运行时通过一个开关切换。这是一个很有意思的工程选择——为什么不让用户自己写 SQL,而要维护两份?

Go Wind UBA 拆解系列 - 多租户与安全:两套隔离机制的边界

Date: 7/2/2026Category: GoWind风行Tag: UBA, 大数据分析, Golang, GoWind

本文回答一个问题:一个 SaaS 级 UBA 平台,怎么保证租户 A 绝对看不到租户 B 的数据? 答案藏在两层完全不同的机制里——而它们的边界差异,恰恰是最值得讲的部分。

一、两套机制,一个真相

先说结论:GoWind UBA 的多租户隔离不是一套统一机制,而是两套独立的、设计哲学迥异的机制:

数据层 隔离机制 哲学
关系层(PostgreSQL + ent) TenantPrivacy 行级隐私策略 fail-closed(缺上下文直接拒绝)
OLAP 层(ClickHouse/Doris) 手工拼 tenant_id = ? 条件 opt-in(请求带 appId 才裁剪)
Go Wind UBA 拆解系列 - 架构总览:三服务、数据流与契约优先

Date: 7/2/2026Category: GoWind风行Tag: UBA, 大数据分析, Golang, GoWind

本文回答一个问题:当一个用户行为从浏览器发出,到最终在 Vue 看板上变成一条留存曲线,中间经过了哪些服务、哪些代码、哪些取舍?

一、先看全貌:四个角色的接力

GoWind UBA 不是单体,也不是"微服务为了微服务"。它把用户行为分析的链路切成职责清晰的三段服务,外加一个采集 SDK:

SDK 上报 ──HTTP──▶ Collector ──Publish──▶ Kafka ──▶ Core ──▶ OLAP
                                                       │
                  Vue 看板 ◀──HTTP/SSE── Admin ◀──gRPC──┘