Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Service Gateway

轻量级数据服务平台:提供 HBase 表元数据管理、动态查询、用户权限控制、查询历史追溯等功能。支持多角色细粒度表级权限,适用于大数据开发、数据分析场景下的快速数据探查与权限管控。

功能特性

  • 用户认证与授权:JWT 登录,支持角色(管理员/分析师/访客)
  • 表元数据管理:动态注册 HBase 表,维护列族、描述、数据来源(Kafka Topic 等)
  • 动态数据查询:支持选择表、RowKey 范围、列族/列,返回 JSON 结果
  • 查询历史:记录每次查询参数、结果行数、耗时,支持复用查询条件
  • 权限管理:基于角色的表级权限控制(READ/WRITE/ADMIN),前端菜单/按钮动态展示
  • 用户管理:管理员可创建/编辑/禁用用户,分配角色,重置密码
  • 缓存加速:Redis 缓存查询结果,提升响应速度(手动缓存管理,避免权限绕过)
  • 前后端权限联动:非管理员不显示用户管理、权限管理入口;根据表权限显示编辑/删除按钮
  • API 文档:集成 SpringDoc OpenAPI,访问 /swagger-ui.html 查看接口文档(后续规划中已包含)

技术栈

模块 技术
后端 Spring Boot 3.1.3, Spring Security, Spring Data JPA, HBase Client 2.4.11, Jedis 4.4.3, MySQL 8.0, JWT
前端 Vue 3.5.27, Vite 4.5.14, Element Plus, Axios
数据存储 HBase 2.4.11, MySQL 8.0, Redis 5.0.7
部署环境 伪分布式(Hadoop 3.2.4, ZooKeeper 3.7.1)

快速开始

前置条件

  • JDK 17
  • Maven 3.8+
  • Node.js 18.20 + npm
  • MySQL 8.0(已创建数据库 data_service
  • Redis 5.0(已启动)
  • HBase 2.4.11(已启动,ZooKeeper 连接正常)

后端启动

# 进入后端目录
cd backend

# 初始化数据库(如果未执行)
mysql -u root -p < scripts/init-db.sql

# 修改配置文件 src/main/resources/application.yml
# - 更新 MySQL 用户名/密码
# - 确认 HBase ZooKeeper 地址
# - 确认 Redis 地址

# 编译打包
mvn clean package

# 启动服务
java -jar target/data-service-gateway-1.0.0.jar

默认端口:2006(可在 application.yml 中修改)

前端启动

# 进入前端目录
cd frontend

# 安装依赖
npm install

# 启动开发服务器
npm run dev

访问 http://localhost:2005,使用默认管理员账号登录:admin / 123456

项目结构

data-service-gateway/
├── backend/                     # Spring Boot 后端
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/com/example/dataservice/
│   │   │   │   ├── config/          # 安全配置、HBase/Redis 配置
│   │   │   │   ├── controller/      # API 控制器
│   │   │   │   ├── model/           # 实体类、DTO
│   │   │   │   ├── repository/      # JPA 仓库
│   │   │   │   ├── security/        # JWT 工具、UserDetails
│   │   │   │   └── service/         # 业务逻辑
│   │   │   └── resources/
│   │   │       ├── application.yml
│   │   │       └── db/migration/    # SQL 脚本(可选)
│   │   └── test/
│   ├── scripts/                     # 数据库初始化脚本
│   ├── pom.xml
│   └── docs/                         # 接口文档(Swagger 后续加入)
├── frontend/                        # Vue 3 前端
│   ├── public/
│   ├── src/
│   │   ├── views/                    # 页面组件
│   │   │   ├── Login.vue
│   │   │   ├── Tables.vue            # 表管理与查询
│   │   │   ├── Users.vue             # 用户管理
│   │   │   ├── QueryHistory.vue      # 查询历史
│   │   │   └── Permission.vue        # 权限管理
│   │   ├── store/                     # 权限状态管理
│   │   │   └── permissions.js
│   │   ├── router/                     # 路由配置
│   │   ├── App.vue
│   │   └── main.js
│   ├── index.html
│   ├── package.json
│   ├── vite.config.js
│   └── README.md
├── docker-compose.yml               
├── .gitignore
└── README.md                   

详细功能说明

1. 用户认证与授权

  • 登录接口 /api/auth/login 返回 JWT token。
  • 前端存储 token,后续请求携带在 Authorization: Bearer <token> 头中。
  • 后端通过 JwtAuthenticationFilter 解析 token,构建 SecurityContext
  • 角色分为 ROLE_ADMINROLE_ANALYSTROLE_VIEWER,权限方法级控制(@PreAuthorize)。

2. 表元数据管理

  • 管理员可增删改 HBase 表元信息(表名、列族、描述、数据来源)。
  • 前端表管理页面展示所有已注册表,根据当前用户权限显示操作按钮。

3. 动态数据查询

  • 选择表后自动加载该表的列族(从元数据获取),可勾选列族或输入具体列。
  • 后端支持两种列格式:family:(返回该列族所有列)和 family:qualifier(返回指定列)。
  • 查询结果以表格形式展示,支持导出 JSON。

4. 查询历史

  • 每次查询(成功)自动记录到 query_history 表,包含用户名、表名、参数、结果行数、耗时。
  • 历史页面分页展示,点击“复用”可跳转到表管理并填充查询条件。

5. 权限管理

  • 管理员在权限管理页面为角色分配对某张表的权限(READ/WRITE/ADMIN)。
  • 前端登录后调用 /api/users/permissions 获取当前用户的所有表权限,存入全局 store。
  • 根据权限动态控制菜单、按钮、查询入口的显示与禁用。

6. 缓存优化与安全

  • 使用 Redis 手动缓存查询结果,缓存 key 包含用户名和请求参数,确保不同用户隔离。
  • 每次查询先执行权限检查,再查缓存;权限变更时自动清理对应表的缓存,避免权限残留。

后续规划

1. 数据血缘可视化(ECharts)

在表详情页增加“数据血缘”标签,以图谱形式展示 HBase 表与 Kafka Topic 的依赖关系。

  • 后端:扩展 hbase_table_meta 表,增加 source_typesource_details 字段(如 kafka:user_behavior);新增接口 /api/lineage/table/{tableId} 返回节点和边数据。
  • 前端:集成 ECharts,使用 Graph 图表渲染,点击节点可查看详情。

2. 监控统计与慢查询告警

基于现有查询历史数据,增加监控看板。

  • 后端
    • QueryHistory 中增加 status(成功/失败)、error_msg 字段。
    • 定时任务(如每小时)统计:查询次数、平均耗时、热门表、慢查询(>3s)列表。
    • 慢查询告警:通过邮件或 WebSocket 实时通知管理员。
  • 前端:增加监控页面,展示图表(ECharts 折线图/柱状图)和慢查询列表。

3. Swagger API 文档集成

  • 引入 springdoc-openapi-starter-webmvc-ui 依赖。
  • 为 Controller 添加 @Operation@ApiResponse 注解。
  • 访问 /swagger-ui.html 自动生成交互式 API 文档。

贡献指南

欢迎提交 Issue 或 Pull Request。请确保代码风格一致,并编写必要的单元测试。

许可证

MIT 本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。

About

轻量级数据服务平台,提供 HBase 表元数据管理、动态查询、用户权限控制与查询历史追溯,支持多角色细粒度权限。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages