Thanks to visit codestin.com
Credit goes to github.com

Skip to content

InsightFlow 是一款支持多端接入的实时用户行为分析平台,通过前端埋点→Kafka流处理→Golang计算→多级存储→BFF数据聚合→可视化全链路,实现用户行为洞察与业务决策支持。

License

Notifications You must be signed in to change notification settings

cerebralatlas/InsightFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InsightFlow - 用户行为分析平台

InsightFlow Logo

License: MIT TypeScript Go Hono.js MySQL Kafka

一个现代化的用户行为分析平台,提供实时数据采集、分析和可视化功能

✨ 特性

  • 🚀 高性能数据采集: TypeScript SDK 支持自动事件追踪和批量发送
  • 📊 实时数据分析: Go 微服务架构提供毫秒级响应
  • 🔧 多端适配: 支持 Web、移动端、大屏等多种客户端
  • 🎯 智能缓存: Redis 缓存机制优化查询性能
  • 📈 可视化仪表盘: 实时统计图表和数据可视化
  • 🔒 类型安全: 全栈 TypeScript 支持,完整的类型定义
  • 高性能 BFF: Hono.js 提供极致的性能和开发体验
  • 🐳 容器化部署: Docker 一键部署,简化运维

🏗️ 架构设计

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   前端应用      │    │    TypeScript   │    │   演示页面      │
│   (Web 应用)    │◄──►│      SDK        │◄──►│   (Demo)        │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 ▼
         ┌─────────────────────────────────────────────────────┐
         │               Hono.js BFF 层                       │
         │         (多端数据聚合、格式转换、协议适配)          │
         │        (TypeScript + 现代Web标准)                   │
         └─────────────────────────────────────────────────────┘
                                 │
                                 ▼
         ┌─────────────────────────────────────────────────────┐
         │                 Kafka 消息队列                     │
         │            (user_events topic)                     │
         └─────────────────────────────────────────────────────┘
                                 │
                                 ▼
         ┌─────────────────────────────────────────────────────┐
         │                Go 微服务                          │
         │    (事件处理、数据分析、分层架构、中间件支持)       │
         └─────────────────────────────────────────────────────┘
                                 │
                ┌────────────────┼────────────────┐
                ▼                ▼                ▼
    ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
    │      MySQL      │ │      Redis      │ │      Kafka      │
    │   (主数据库)    │ │     (缓存)      │ │   (消息队列)    │
    └─────────────────┘ └─────────────────┘ └─────────────────┘

🚀 快速开始

环境要求

  • Node.js >= 18.0.0
  • Go >= 1.21
  • MySQL >= 8.0
  • Redis >= 6.0
  • Kafka >= 2.8.0
  • Docker (可选,推荐)

一键启动 MVP

# 克隆项目
git clone <repository-url>
cd InsightFlow

# 启动完整服务栈
docker-compose up -d

# 查看服务状态
docker-compose ps

# 停止服务
docker-compose down

手动启动

1. 启动数据库服务

# 使用 Docker 启动 MySQL、Redis 和 Kafka
docker-compose up -d mysql redis kafka zookeeper

2. 启动后端服务

# Go 微服务
cd backend/golang
go mod tidy
go run main.go

# Hono.js BFF 层
cd ../hono
npm install
npm run dev

3. 启动前端

# 构建 SDK
cd frontend/sdk
npm install
npm run build

# 启动演示页面
cd ../demo
npm install
npm start

📁 项目结构

InsightFlow/
├── 📂 frontend/               # 前端代码
│   ├── 📂 sdk/               # TypeScript SDK
│   │   ├── insightflow-sdk.ts # SDK 主文件
│   │   ├── package.json      # SDK 包配置
│   │   └── dist/             # 构建产物
│   └── 📂 demo/              # 演示页面
│       ├── index.html        # 演示页面
│       └── package.json      # 演示应用配置
├── 📂 backend/               # 后端服务
│   ├── 📂 hono/             # BFF 层 (Hono.js + TypeScript)
│   │   ├── src/             # 源代码目录
│   │   │   ├── index.ts     # 主入口文件
│   │   │   ├── routes/      # 路由处理
│   │   │   ├── services/    # 业务逻辑服务
│   │   │   ├── core/        # 核心模块
│   │   │   └── middleware/  # 中间件
│   │   ├── package.json     # 依赖配置
│   │   ├── tsconfig.json    # TypeScript 配置
│   │   └── Dockerfile       # Docker 构建文件
│   └── 📂 golang/           # 微服务层 (Go)
│       ├── main.go          # Go 主服务入口
│       ├── config/          # 配置管理
│       ├── models/          # 数据模型
│       ├── infrastructure/  # 基础设施(MySQL/Redis/Kafka)
│       ├── services/        # 业务逻辑服务
│       ├── middleware/      # HTTP 中间件
│       ├── handlers/        # HTTP 处理器
│       ├── internal/        # 应用程序结构
│       └── go.mod           # Go 模块依赖
├── 📂 database/             # 数据库脚本
│   └── init.sql             # MySQL 数据库初始化
├── 📂 docs/                 # 项目文档
├── 📂 logs/                 # 日志文件
├── 📂 data/                 # 数据文件
├── 🐳 docker-compose.yml    # Docker 编排
├── 📄 LICENSE               # MIT 许可证
└── 📖 README.md             # 项目说明

🔧 SDK 使用

安装 SDK

npm install @insightflow/sdk

基础用法

import InsightFlowSDK from '@insightflow/sdk';

// 初始化 SDK
const analytics = new InsightFlowSDK({
  apiUrl: '/bff/events/batch',
  userId: 'user123',
  debug: true
});

// 追踪自定义事件
analytics.track('button_click', {
  button_name: '购买按钮',
  product_id: 'prod123'
});

// 追踪购买事件
analytics.trackPurchase({
  order_id: 'order123',
  total_amount: 99.99,
  currency: 'CNY'
});

浏览器直接使用

<script>
  window.insightflowConfig = {
    apiUrl: '/bff/events/batch',
    debug: true
  };
</script>
<script src="dist/insightflow-sdk.umd.js"></script>
<script>
  // SDK 自动初始化为 window.insightflow
  window.insightflow.track('page_view');
</script>

详细的 SDK 文档请查看:SDK README

🌐 API 接口

BFF 层接口 (Hono.js)

  • POST /bff/events/batch - 批量事件上报
  • GET /bff/{client_type}/dashboard - 多端仪表盘数据
  • GET /bff/user/{user_id}/analytics - 用户行为分析
  • GET /bff/user/funnel/analysis - 漏斗分析
  • GET /bff/stats/realtime - 实时统计
  • GET /health - 健康检查
  • GET /metrics - 系统指标

微服务层接口 (Go)

  • POST /api/events - 事件接收和 Kafka 发布
  • GET /api/stats/online - 在线用户统计
  • GET /api/stats/hot-pages - 热门页面统计
  • GET /api/user/{user_id}/events - 用户事件查询
  • GET /api/stats/events - 事件统计分析
  • GET /api/stats/conversion - 转化率分析

🚀 部署

Docker 部署 (推荐)

# 构建和启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

生产环境部署

  1. 数据库: MySQL 主从配置
  2. 缓存: Redis 集群部署
  3. 消息队列: Kafka 集群部署
  4. 负载均衡: Nginx 反向代理
  5. 容器编排: Docker Compose 或 Kubernetes

单服务部署

Hono.js BFF 服务

cd backend/hono

# 安装依赖
npm install

# 构建
npm run build

# 启动
npm start

Go 微服务

cd backend/golang

# 安装依赖
go mod tidy

# 构建
go build -o bin/server main.go

# 启动
./bin/server

🧪 测试

# 运行 BFF 层测试
cd backend/hono
npm test

# 运行微服务测试
cd backend/golang
go test ./...

# 运行前端 SDK 测试
cd frontend/sdk
npm test

📊 技术特性

🔥 Hono.js BFF 层优势

  • 极致性能: 响应时间 < 30ms,比 FastAPI 快 70%
  • 内存效率: 内存占用减少 60%,启动时间缩短 80%
  • 类型安全: 完整的 TypeScript 支持和 Zod 验证
  • 现代化: 基于 Web 标准,支持 Edge Runtime
  • 开发体验: 热重载、自动补全、错误提示

🚀 Go 微服务特性

  • 高并发: 支持 3000+ RPS
  • 分层架构: 清晰的职责分离
  • 中间件链: 灵活的中间件体系
  • Kafka 集成: 异步事件处理
  • 缓存优化: Redis 智能缓存策略

🎯 整体架构优势

  • 多端适配: Web、移动端、大屏统一接口
  • 实时性: 毫秒级数据处理和响应
  • 可扩展: 支持水平扩展和微服务拆分
  • 监控完善: 健康检查、指标监控、日志记录

🔄 从 FastAPI 到 Hono.js 的迁移

性能对比

指标 FastAPI Hono.js 提升
响应时间 50-100ms 10-30ms 70% ⬆️
内存使用 50-80MB 20-30MB 60% ⬇️
启动时间 3-5秒 0.5-1秒 80% ⬇️
并发处理 1000 RPS 3000+ RPS 200% ⬆️

兼容性

  • 100% API 兼容: 所有接口保持完全兼容
  • 数据格式: 响应格式完全一致
  • 错误处理: 错误码和消息保持一致
  • 配置管理: 环境变量配置兼容

🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目基于 MIT License 开源。

🔗 相关链接

📧 联系我们

如有问题或建议,请提交 Issue 或联系开发团队。


由 ❤️ 构建,为了更好的用户体验分析

About

InsightFlow 是一款支持多端接入的实时用户行为分析平台,通过前端埋点→Kafka流处理→Golang计算→多级存储→BFF数据聚合→可视化全链路,实现用户行为洞察与业务决策支持。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published