# gd-data-platform **Repository Path**: chinaben/gd-data-platform ## Basic Information - **Project Name**: gd-data-platform - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-14 - **Last Updated**: 2025-10-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 开放广东数据开放平台 ## 项目概述 本项目为开放广东数据开放平台,采用大数据架构设计,处理 100 亿级数据规模,提供数据资源开放服务,包括接口调用、数据下载、实时监控和离线分析等功能。 ## 技术架构 ### 技术栈 - **后端框架**: SpringBoot 2.7.14 + MyBatisPlus 3.5.3.1 - **实时计算**: Apache Flink 1.16.1 - **消息队列**: Apache Kafka 3.4.0 - **数据存储**: ClickHouse 0.4.2(列式存储) - **数据库**: MySQL 8.0(元数据存储) - **缓存**: Redis 6.0 - **API 文档**: Swagger 3.0.0 ### 架构设计 - **实时数仓**: Kafka → Flink → ClickHouse - **离线数仓**: Kafka → ClickHouse - **数据分层**: ODS/DWS/ADS 分层存储 ## 核心功能 ### 1. 实时监控大屏 - Flink 实时计算:1 分钟滑动窗口,滑动步长 10 秒 - 监控指标:实时调用量、失败率、当前 IP 下载次数 - 告警规则:调用量>100 次、失败率>5%、单 IP 下载>20 次 - 前端大屏:每 10 秒刷新一次数据 ### 2. 离线数据分析 - 数据同步:每日凌晨 2 点执行离线分析任务 - 计算逻辑:资源增长趋势、沉睡资源识别 - 数据分层:计算结果写入 ClickHouse 分层存储 ### 3. 数据质量保障 - 实时监控:Flink 实时计算确保数据准确性 - 数据校验:ClickHouse 内置数据校验机制 - 异常处理:实时告警机制 ## 项目结构 ``` gd-data-platform/ ├── src/main/java/ │ ├── controller/ # 控制器层 │ │ ├── api/ # API接口 │ │ └── ext/ # 扩展接口 │ ├── service/ # 业务服务层 │ │ ├── realtime/ # 实时计算服务 │ │ ├── offline/ # 离线分析服务 │ │ └── ext/ # 扩展服务 │ ├── mapper/ # 数据访问层 │ ├── entity/ # 实体类 │ ├── dto/ # 数据传输对象 │ ├── config/ # 配置类 │ │ ├── kafka/ # Kafka配置 │ │ ├── flink/ # Flink配置 │ │ └── clickhouse/ # ClickHouse配置 │ └── flink/ # Flink作业 │ ├── jobs/ # 实时计算作业 │ └── utils/ # Flink工具类 ├── src/main/resources/ │ ├── sql/ # 数据库脚本 │ └── mapper/ # MyBatis映射文件 └── pom.xml # Maven配置 ``` ## 快速开始 ### 1. 环境要求 - JDK 8+ - Maven 3.6+ - MySQL 8.0+ - ClickHouse 22.0+ - Kafka 3.0+ - Redis 6.0+ ### 2. 数据库初始化 ```sql -- 执行MySQL初始化脚本 source src/main/resources/sql/mysql_schema.sql source src/main/resources/sql/init_data.sql -- 执行ClickHouse初始化脚本 clickhouse-client < src/main/resources/sql/clickhouse_schema.sql ``` ### 3. 配置文件 修改 `src/main/resources/application.yml` 中的数据库连接信息: ```yaml spring: datasource: mysql: url: jdbc:mysql://localhost:3306/gd_data_platform username: your_username password: your_password clickhouse: url: jdbc:clickhouse://localhost:8123/gd_data_platform username: default password: ``` ### 4. 启动应用 ```bash mvn spring-boot:run ``` ### 5. 访问 API 文档 启动后访问:http://localhost:8080/api/swagger-ui.html ## API 接口 ### 实时监控 API - `GET /api/v1/realtime/monitor` - 获取实时监控数据 - `POST /api/v1/realtime/push` - 手动推送实时数据 - `GET /api/v1/realtime/connections` - 获取 WebSocket 连接数 ### 离线分析 API - `POST /api/v1/offline/analyze` - 手动执行离线分析 - `GET /api/v1/offline/results` - 获取分析结果 ### 数据质量 API - `GET /api/v1/quality/report` - 获取数据质量报告 - `POST /api/v1/quality/check` - 手动执行数据质量检查 ### 数据资源 API - `GET /api/v1/resources/page` - 分页查询数据资源 - `GET /api/v1/resources/{id}` - 根据 ID 查询数据资源 - `GET /api/v1/resources/search` - 搜索数据资源 ## 数据流向 ### 实时数据流 1. 用户调用接口/下载数据 → 生成调用日志/下载日志 2. 日志数据 → Kafka 实时消息队列 3. Kafka → Flink 实时计算 → ClickHouse 实时存储 4. ClickHouse → 前端监控大屏展示 ### 离线数据流 1. Kafka 实时日志 → ClickHouse 列式存储 2. ClickHouse 内置计算引擎 → 分层存储(ODS/DWS/ADS) 3. 数据报表生成 → 离线分析结果 ## 监控告警 ### 告警规则 - **调用量告警**: API 调用量超过 100 次 - **失败率告警**: API 失败率超过 5% - **下载量告警**: 单 IP 下载次数超过 20 次 - **响应时间告警**: 平均响应时间超过 5 秒 ### 告警通知 - WebSocket 实时推送 - 邮件通知 - 短信通知 ## 性能指标 ### 数据处理能力 - **数据规模**: 支持 100 亿级数据处理 - **实时性**: Flink 毫秒级实时计算 - **数据延迟**: 端到端数据延迟不超过 1 分钟 - **查询性能**: 大数据量查询响应时间不超过 30 秒 ### 扩展性 - **水平扩展**: 支持 Kafka、Flink、ClickHouse 集群扩展 - **数据分片**: 合理设计数据分片策略 - **负载均衡**: 实现计算和存储负载均衡 ## 开发规范 ### 代码规范 - 类名大驼峰、方法名小驼峰、变量名小驼峰 - 统一异常处理、业务异常、参数验证 - 完整注释:类注释、方法注释、字段注释 ### 数据库规范 - MySQL 字段:下划线分割的全小写 - ClickHouse 字段:下划线分割的全小写 - Java 字段:驼峰命名法 ### API 设计规范 - RESTful 设计:遵循 REST 架构风格 - 统一响应格式:所有接口返回统一的响应结构 - 版本控制:API 版本通过 URL 路径控制 ## 部署说明 ### 快速部署 本项目提供基于 Docker Compose + Registry 的完整部署方案,支持一键部署和自动化管理。 **详细部署文档**: - [项目程序环境部署文档.md](./项目程序环境部署文档.md) - 环境部署方案 - [项目程序部署文档.md](./项目程序部署文档.md) - 程序部署方案 ### 部署文档导航 | 文档 | 用途 | 适用场景 | | ---------------------------------------------------- | -------------- | ------------------ | | [项目程序环境部署文档.md](./项目程序环境部署文档.md) | 环境搭建和配置 | 首次部署、环境配置 | | [项目程序部署文档.md](./项目程序部署文档.md) | 应用部署和发布 | 应用更新、版本管理 | ### 快速开始指南 #### 1. 环境部署(首次部署) ```bash # 启动基础环境 docker-compose up -d # 验证环境状态 scripts\health-check.bat # Windows ./scripts/health-check.sh # Linux/macOS ``` #### 2. 程序部署 ##### 方式一:一键部署(推荐) ```cmd # Windows 环境 scripts\one-click-deploy.bat ``` ```bash # Linux/macOS 环境 chmod +x scripts/*.sh ./scripts/one-click-deploy.sh ``` ##### 方式二:IDEA 中部署 1. 在 IDEA 中打开 "Run/Debug Configurations" 2. 选择 "Deploy to Registry" 配置 3. 点击运行按钮 ##### 方式三:分步部署 ```bash # 1. 构建和推送镜像 scripts\build-and-push.bat # Windows ./scripts/build-and-push.sh # Linux/macOS # 2. 部署到生产环境 scripts\deploy.bat # Windows ./scripts/deploy.sh # Linux/macOS ``` ### 访问地址 - **Web 应用**: http://localhost - **API 文档**: http://localhost/api/swagger-ui.html - **Registry UI**: http://localhost:8080 - **Flink UI**: http://localhost:8081 - **ClickHouse**: http://localhost:8123 ### 故障排查 #### 常见问题 1. **服务启动失败** ```bash # 查看服务状态 docker-compose ps # 查看服务日志 docker-compose logs -f ``` 2. **数据库连接失败** ```bash # 检查数据库状态 docker-compose exec mysql mysqladmin ping -h localhost -u gd_user -pgd_password ``` 3. **镜像推送失败** ```bash # 检查 Docker 登录状态 docker login localhost:5000 -u admin -p admin123 ``` #### 健康检查 ```bash # 执行健康检查 scripts\health-check.bat # Windows ./scripts/health-check.sh # Linux/macOS ``` ## 维护说明 ### 日志管理 - 应用日志:`logs/gd-data-platform.log` - 系统日志:通过 Spring Boot Actuator 监控 ### 监控指标 - 通过 Prometheus 收集指标 - 通过 Grafana 展示监控面板 ### 备份策略 - 数据库定期备份 - 配置文件版本控制 - 代码版本管理 ## 联系方式 - 项目负责人:gd-data-platform 团队 - 技术支持:请通过 Issue 反馈问题 - 文档更新:请提交 Pull Request ## 许可证 本项目采用 MIT 许可证,详情请参见 LICENSE 文件。