《JVS-智能BI技术栈深度拆解:Spring Cloud + Doris + DataX》
JVS-BI 的技术栈选型体现了实用主义不盲目追新,选择 Spring Cloud 而非 Service Mesh不重复造轮子,深度集成 DataX + Doris + XXL-JOB开放源码,降低企业二次开发门槛如果你正在选型 BI 或设计数据平台,欢迎参考这套架构。也欢迎在评论区交流以下问题:你会选择 Doris 还是 ClickHouse?为什么?在数据抽取中,你最头疼的问题是什么?你还想了
导读:本文从架构、数据集成、存储、调度、前后端选型等维度,全面拆解 JVS-BI 的技术栈。如果你是技术选型负责人、架构师或对 BI 系统底层感兴趣的开发者,这篇文章将为你提供一份可参考的实战笔记。文末附常见问题与互动话题。
一、为什么写这篇文章?
在企业级 BI 系统的技术选型中,我们常常面临几个核心问题:
-
如何在不影响业务库性能的前提下,完成多源数据抽取?
-
用什么数据库既能支持实时写入,又能跑出秒级的分析查询?
-
微服务架构下,调度、消息、配置中心如何选型?
-
有没有一套开源可二次开发的 BI 方案,拿来就能用?
JVS-BI 是一款 私有化部署、全源码开放 的自助式数据分析平台。本文基于其官方技术文档和实际部署经验,对其技术栈进行完整拆解。希望能为正在自研或选型 BI 的团队提供参考。
二、整体架构概览
JVS-BI 采用分层架构,自上而下分为四层:
-
基础框架层:JVS 统一数字化底座(用户、认证、消息、微服务治理)
-
数据接入层:JDBC/API/文件多源连接,屏蔽底层差异
-
数据加工层:可视化 ELT + DataX 抽取 + Doris 数仓存储
-
数据应用层:图表、报表、大屏、API 服务

三、后端核心组件选型与详解
3.1 微服务框架:Spring Cloud Alibaba
| 组件 | 选型 | 作用 |
|---|---|---|
| 服务注册/配置 | Nacos | 动态配置、服务发现 |
| 服务调用 | OpenFeign | 声明式 HTTP 客户端 |
| 流量控制 | Sentinel(可选) | 限流降级 |
| 网关 | Spring Cloud Gateway | 路由、鉴权 |
为什么不是 Dubbo 或纯 Spring Boot?
-
Nacos 同时支持配置中心和服务发现,比 Eureka(已停更)更成熟。
-
OpenFeign 与 Spring WebMVC 注解兼容,开发效率高。
-
对于 BI 这种 IO 密集型(数据查询)而非 RPC 密集型系统,Spring Cloud 生态足够。
3.2 数据抽取:DataX
DataX 是阿里开源异构数据同步工具,支持 MySQL、Oracle、SQL Server、PostgreSQL、Hive、HDFS、MongoDB 等。
在 JVS-智能BI 中,DataX 被封装为界面化任务:
-
用户只需选择源端、目标端(Doris)、同步策略(全量/增量),系统自动生成 DataX 的 JSON 配置文件。
-
支持限速、脏数据阈值、断点续传。
典型 DataX 配置片段(MySQL → Doris):
json
{ "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "123456", "connection": [{ "jdbcUrl": ["jdbc:mysql://localhost:3306/sales"], "table": ["orders"] }] } }, "writer": { "name": "doriswriter", "parameter": { "feLoadUrl": ["fe_host:8030"], "beLoadUrl": ["be_host:8040"], "database": "jvs_bi_ods", "table": "orders" } } } ], "setting": { "speed": { "channel": 3, "byte": 1048576 } } } }

3.3 数据存储:Apache Doris
Doris 是 MPP 架构的 OLAP 数据库,由百度开源,在美团、小米、京东有大规模应用。
选型对比(以 JVS-BI 官方评估为准):
| 特性 | Doris | ClickHouse | StarRocks |
|---|---|---|---|
| 标准 SQL 支持 | ✅ 优秀 | ⚠️ 部分函数差异 | ✅ 兼容 MySQL |
| 实时写入能力 | ✅ 高吞吐 | ✅ 高吞吐 | ✅ 高吞吐 |
| 主键更新 | ✅ Unique Key | ❌ 需重建 | ✅ 支持 |
| 运维复杂度 | 低(FE/BE 架构) | 中 | 低 |
| 社区活跃度 | 高(Apache 顶级) | 高 | 中(原 Doris 分支) |
| 学习成本 | 低(MySQL 协议) | 中 | 低 |
Doris 建表示例(聚合模型):
sql
-- 创建销售事实表(按日期聚合) CREATE TABLE sales_daily ( sale_date DATE, product_id INT, region VARCHAR(20), amount DECIMAL(18,2) ) AGGREGATE KEY(sale_date, product_id, region) DISTRIBUTED BY HASH(product_id) BUCKETS 10 PROPERTIES ( "replication_num" = "1", "storage_format" = "V2" );
为什么不用 MySQL 直接分析?
-
业务库通常为行存,复杂聚合查询会拖垮 OLTP。
-
Doris 列存 + 向量化执行引擎,亿级数据秒级响应。
3.4 调度引擎:XXL-JOB
-
功能:数据集定时执行(ELT 任务)、前置/后置任务依赖。
-
特点:分布式、支持分片、有 Web 管理界面、执行日志可追溯。
-
JVS 集成方式:每个数据集对应一个 XXL-JOB 任务,通过
@XxlJob注解触发 DataX 或 Doris SQL 执行。

3.5 消息队列:RabbitMQ
-
用途:异步处理任务状态更新、发送通知(邮件/钉钉)、记录执行日志。
-
为什么不选 Kafka?
BI 系统的任务量级通常远小于日志系统,RabbitMQ 更轻量,且支持复杂的路由和 ACK 机制。
四、前端技术栈
| 技术 | 版本 | 用途 |
|---|---|---|
| Vue3 | 3.2+ | 渐进式框架 |
| Element Plus | 2.3+ | UI 组件库 |
| Vite | 4.x | 构建工具 |
| Pinia | 2.x | 状态管理 |
| ECharts | 5.4+ | 图表渲染 |
亮点:
-
大屏设计器基于 Vue3 的拖拽组件实现,支持图层、母版、多页面。
-
图表配置器动态渲染 ECharts 配置,用户无需写 JS。

五、部署与运维(Docker Compose 示例)
JVS-BI 提供一键部署脚本,核心服务包括:jvs-mysql、jvs-doris-fe/be、nacos、rabbitmq、xxl-job-admin、jvs-bi-backend、jvs-bi-ui。
启动命令(节选):
bash
# 1. 克隆部署项目 git clone https://gitee.com/software-minister/jvs-docker-compose.git cd jvs-docker-compose # 2. 修改本地 IP 地址(替换 ${IP}) sed -i 's/server-ip/192.168.1.100/g' ./mysql/nacos.sql # 3. 启动基础中间件 docker-compose -f docker-compose-db.yml up -d docker-compose -f docker-compose-base.yml up -d # 4. 启动 Doris(需先调优系统参数,见文档) docker-compose -f docker-compose-doris.yml up -d # 5. 启动 BI 后端 + 前端 docker-compose -f docker-compose-data-platform.yml up -d

六、常见问题 Q&A(来自官方文档 + 社区)
Q1:能否将 Doris 替换为其他 OLAP 引擎?
A:可以。JVS-BI 通过 DAO 层抽象,目前已适配 MySQL、Doris,企业可按需扩展 ClickHouse 或 StarRocks。
Q2:DataX 抽取时如何保证数据一致性?
A:对于增量抽取,建议使用时间戳或版本号字段;对于全量抽取,可配合 Doris 的临时表 + 原子替换。
Q3:JVS-BI 支持流式数据(Kafka)吗?
A:官方路线图中提到正在对接 Kafka,目前可通过 MQTT 数据集或 API 数据集实现准实时。
Q4:源码二次开发的难度大吗?
A:后端基于 Spring Boot 标准工程,前端 Vue3 + Element Plus,有经验的 Java/前端工程师 1 周可上手。
Q5:集群部署需要多少资源?
A:参考官方建议:FE 节点 8C16G,BE 节点 16C64G 起步,数据盘建议 SSD。
七、总结与互动
JVS-BI 的技术栈选型体现了 实用主义:
-
不盲目追新,选择 Spring Cloud 而非 Service Mesh
-
不重复造轮子,深度集成 DataX + Doris + XXL-JOB
-
开放源码,降低企业二次开发门槛
如果你正在选型 BI 或设计数据平台,欢迎参考这套架构。也欢迎在评论区交流以下问题:
-
你会选择 Doris 还是 ClickHouse?为什么?
-
在数据抽取中,你最头疼的问题是什么?
-
你还想了解 JVS-BI 哪个模块的实现细节?
📌 相关资源
JVS-BI Gitee 仓库:https://gitee.com/software-minister/jvs-bi(示例地址)
官方技术文档:https://doc.bctools.cn
如果本文对你有帮助,请点赞、收藏、转发支持!
更多推荐
所有评论(0)