导读:本文从架构、数据集成、存储、调度、前后端选型等维度,全面拆解 JVS-BI 的技术栈。如果你是技术选型负责人、架构师或对 BI 系统底层感兴趣的开发者,这篇文章将为你提供一份可参考的实战笔记。文末附常见问题与互动话题。


一、为什么写这篇文章?

在企业级 BI 系统的技术选型中,我们常常面临几个核心问题:

  • 如何在不影响业务库性能的前提下,完成多源数据抽取?

  • 用什么数据库既能支持实时写入,又能跑出秒级的分析查询?

  • 微服务架构下,调度、消息、配置中心如何选型?

  • 有没有一套开源可二次开发的 BI 方案,拿来就能用?

JVS-BI 是一款 私有化部署、全源码开放 的自助式数据分析平台。本文基于其官方技术文档和实际部署经验,对其技术栈进行完整拆解。希望能为正在自研或选型 BI 的团队提供参考。


二、整体架构概览

JVS-BI 采用分层架构,自上而下分为四层:

  1. 基础框架层:JVS 统一数字化底座(用户、认证、消息、微服务治理)

  2. 数据接入层:JDBC/API/文件多源连接,屏蔽底层差异

  3. 数据加工层:可视化 ELT + DataX 抽取 + Doris 数仓存储

  4. 数据应用层:图表、报表、大屏、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-mysqljvs-doris-fe/benacosrabbitmqxxl-job-adminjvs-bi-backendjvs-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 或设计数据平台,欢迎参考这套架构。也欢迎在评论区交流以下问题:

  1. 你会选择 Doris 还是 ClickHouse?为什么?

  2. 在数据抽取中,你最头疼的问题是什么?

  3. 你还想了解 JVS-BI 哪个模块的实现细节?

📌 相关资源

如果本文对你有帮助,请点赞、收藏、转发支持!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐