数据服务平台 OneService
概述
OneService 是数据平台的统一查询网关:屏蔽底层多引擎差异,提供一致的 SQL/API 服务。核心能力:统一查询、多引擎路由、SQL 审计、结果缓存、限流熔断。本文讲透网关架构与关键机制。
一、OneService 定位
问题:
多种引擎(Spark/Flink/Doris/CH)
用户要分别连 → 复杂
→ 统一查询入口| 能力 | 说明 |
|---|---|
| 统一入口 | 一个入口查所有 |
| 引擎路由 | 自动选择 |
| 安全 | 审计/权限 |
| 稳定 | 限流/熔断 |
| 性能 | 缓存 |
价值:
用户简单(统一)
平台可控(治理)
安全可审计二、统一查询网关
2.1 架构
用户/应用
↓
OneService 网关
├── 认证鉴权
├── SQL 解析/校验
├── 路由选择
├── 缓存
├── 执行调度
└── 审计日志
↓
多引擎(Spark/Flink/Doris/CH/Presto)| 模块 | 职责 |
|---|---|
| 接入 | 认证/协议 |
| 解析 | SQL 校验 |
| 路由 | 引擎选择 |
| 执行 | 调度/异步 |
| 治理 | 限流/审计 |
2.2 统一能力
| 能力 | 说明 |
|---|---|
| 统一 SQL | 多引擎语法适配 |
| 统一 API | REST/JDBC |
| 统一权限 | 平台级授权 |
| 统一审计 | 全量记录 |
| 统一监控 | 延迟/成功率 |
三、多引擎路由
3.1 路由依据
| 依据 | 说明 |
|---|---|
| 数据位置 | 表在哪个引擎 |
| 查询类型 | 明细/聚合 |
| 并发 | 高并发路由 OLAP |
| 用户配置 | 指定引擎 |
| 成本 | 引擎负载 |
3.2 路由策略
规则路由:
表 → 引擎映射(元数据)
查询特征 → 引擎
示例:
查 Doris 表 → 路由 Doris
湖上分析 → Presto
实时大查询 → Spark3.3 引擎适配
SQL 差异适配:
语法转换
类型映射
函数差异多引擎路由核心:
元数据驱动(表在哪)
能力匹配(查询类型)四、SQL 审计
4.1 审计内容
| 审计 | 说明 |
|---|---|
| 用户 | 谁查询 |
| SQL | 查询内容 |
| 表 | 访问对象 |
| 时间 | 何时 |
| 结果 | 行数/大小 |
| 引擎 | 在哪执行 |
4.2 审计价值
1. 安全:异常查询识别
2. 合规:数据访问可追溯
3. 治理:访问热度分析
4. 性能:慢查询定位审计实现:
网关统一拦截
日志留存 + 检索
异常规则告警4.3 敏感审计
敏感表访问:
白名单/审批
审计告警
脱敏返回五、结果缓存
5.1 作用
高频重复查询:
结果缓存 → 秒级返回
减轻引擎压力5.2 缓存设计
| 维度 | 说明 |
|---|---|
| 缓存键 | SQL + 参数 |
| 过期 | TTL |
| 失效 | 数据变更 |
| 大小 | 结果限制 |
| 一致性 | 可配置 |
适用缓存:
固定报表查询
重复指标查询
不适用:
实时性要求高的
大数据结果5.3 缓存策略
| 策略 | 说明 |
|---|---|
| TTL 缓存 | 时间过期 |
| 主动失效 | 数据更新 |
| LRU | 淘汰 |
缓存命中:
网关层拦截
命中直接返回六、限流熔断
6.1 限流
保护引擎:
控制并发/速率
防止打爆| 手段 | 说明 |
|---|---|
| 并发限制 | 最大并发 |
| QPS | 速率 |
| 资源配额 | 用户/队列 |
| 排队 | 缓冲 |
限流策略:
按用户/租户配额
按引擎保护
高峰降级6.2 熔断
引擎故障/慢:
熔断 → 快速失败/降级
避免雪崩| 状态 | 说明 |
|---|---|
| 关闭 | 正常 |
| 打开 | 熔断(拒绝) |
| 半开 | 试探恢复 |
降级策略:
缓存兜底
降级提示
限流保核心七、高可用与扩展
7.1 高可用
网关多实例:
无状态
负载均衡
故障转移7.2 扩展
水平扩展:
加网关实例
引擎动态接入
插件化引擎适配八、架构设计要点
| 要点 | 说明 |
|---|---|
| 元数据驱动 | 表/引擎映射 |
| 无状态 | 易扩展 |
| 异步执行 | 长查询 |
| 插件化 | 新引擎接入 |
| 全链路审计 | 安全 |
| 分级限流 | 稳定 |
8.1 查询流程
1. 认证 → 2. 解析校验 → 3. 鉴权
4. 路由 → 5. 缓存判断 → 6. 执行
7. 审计 → 8. 返回(异步/同步)常见问题速查
| 问题 | 要点 |
|---|---|
| OneService 是什么 | 统一查询网关 |
| 路由依据 | 元数据/查询类型 |
| 审计看什么 | 谁/什么/何时 |
| 缓存适用 | 高频固定查询 |
| 怎么保护引擎 | 限流 + 熔断 |
| 高可用 | 无状态多实例 |