# Data-processing **Repository Path**: kaikai99/data-processing ## Basic Information - **Project Name**: Data-processing - **Description**: 全链路 Java 实时数仓/流计算实战项目 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-05 - **Last Updated**: 2026-02-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 电商实时大屏 按 `doc/design.md` 规划实现:Mock 订单 → Kafka → Flink → Redis → Spring Boot → WebSocket → Vue 3 大屏。 ## 模块说明 | 模块 | 说明 | 端口/运行方式 | |------|------|----------------| | **mock-service** | 模拟订单生成,发往 Kafka `ods_order_create` | 8081,本地运行 | | **flink-engine** | Flink 流计算:GMV、省份 Top N、分钟趋势,写 Redis | 本地 `java -jar` 或 Flink 集群 | | **backend** | 数据服务:读 Redis、REST `/api/metrics/summary`、WebSocket `/topic/metrics` | 8080,Docker 或本地 | | **frontend** | Vue 3 + ECharts 大屏,订阅 WebSocket | 5173,`npm run dev` | ## 快速启动 ### 1. 启动基础设施(Kafka KRaft、Redis、MySQL、Backend) ```bash docker compose up -d ``` - Kafka: `localhost:9092`(宿主机)/ 容器内 `kafka:19092` - Redis: `localhost:6379` - MySQL: `localhost:3306`,库 `dashboard`,用户 `app/app` - Backend: `http://localhost:8080` ### 2. 初始化 MySQL(可选) ```bash mysql -h 127.0.0.1 -P 3306 -u app -papp dashboard < backend/src/main/resources/db/schema.sql mysql -h 127.0.0.1 -P 3306 -u app -papp dashboard < backend/src/main/resources/db/data.sql ``` ### 3. 创建 Kafka Topic(可选,自动创建时跳过) ```bash docker exec -it kafka /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:19092 --create --topic ods_order_create --partitions 3 --replication-factor 1 ``` ### 4. 启动 Mock-Service(发订单) ```bash cd mock-service && mvn spring-boot:run ``` 配置见 `mock-service/src/main/resources/application.yml`,Kafka 填 `localhost:9092`。 ### 5. 启动 Flink 任务(写 Redis) ```bash cd flink-engine && mvn package -DskipTests java -jar target/flink-engine-0.0.1-SNAPSHOT.jar ``` 需保证 Kafka `ods_order_create` 有数据、Redis 可连(默认 `localhost:6379`)。Kafka/Redis 地址可在 `RealtimeDashboardJob` 中改为环境变量。 ### 6. 启动前端大屏 ```bash cd frontend && npm install && npm run dev ``` 浏览器打开 `http://localhost:5173`,大屏会通过 Vite 代理访问 Backend 的 REST 与 WebSocket。 ## 接口说明 - **GET** `/api/metrics/summary`:拉取当前 GMV、订单数、省份 Top N、分钟趋势(首屏或降级用)。 - **WebSocket**:连接 `/ws/dashboard`(SockJS),订阅 `/topic/metrics`,每秒推送一次 `MetricsSummary` JSON。 ## 文档 - `doc/design.md` - 整体架构与模块规划 - `doc/mysql-schema.md` - MySQL 表规划 - `doc/redis-keys.md` - Redis 键值规划