项目结构与模块化
**本文档引用的文件** - [[go.work]](../file/go.work) - [[go.work.sum]](../file/go.work.sum) - [[bi-common/go.mod]](../file/bi-common/go.mod) - [[bi-common/README.md]](../file/bi-common/readme.md) - [[bi-common/go.sum]](../file/bi-common/go.sum) - [[bi-common/apitypes/error.go]](../file/bi-common/apitypes/error.go) - [[bi-common/apitypes/page.go]](../file/bi-common/apitypes/page.go) - [[bi-common/apitypes/request.go]](../file/bi-common/apitypes/request.go) - [[bi-common/apitypes/response.go]](../file/bi-common/apitypes/response.go) - [[bi-common/conf/common.proto]](../file/bi-common/conf/common.proto) - [[bi-common/auth/jwt.go]](../file/bi-common/auth/jwt.go) - [[bi-common/auth/middleware.go]](../file/bi-common/auth/middleware.go) - [[ui-web/package.json]](../file/ui-web/package.json) - [[ui-web-admin/package.json]](../file/ui-web-admin/package.json) - [[ui-web-top/package.json]](../file/ui-web-top/package.json)
目录
引言
本指南为BI分析平台提供完整的项目结构与模块化设计指导。该平台采用monorepo架构,结合Go工作区和前端应用模块化设计,构建了一个可扩展、可维护的BI解决方案。
BI分析平台的核心特点包括:
- Monorepo架构:统一管理多个Go微服务和前端应用
- 模块化设计:清晰的模块边界和依赖关系
- 标准化组件库:bi-common提供统一的基础设施
- 多前端应用:针对不同用户群体的前端界面
- 企业级特性:完善的配置管理、国际化支持和监控体系
项目结构
Go工作区配置
项目采用Go 1.25.5工作区配置,统一管理所有Go模块:
图表来源
模块组织原则
项目遵循以下模块组织原则:
- 功能域分离:每个模块专注于特定的业务功能
- 依赖最小化:模块间保持松耦合
- 接口定义规范:统一的API设计标准
- 配置管理:集中化的配置管理策略
章节来源
核心组件
bi-common组件库
bi-common是整个BI平台的核心组件库,提供统一的基础设施:
核心模块架构
图表来源
统一响应格式
平台采用统一的API响应格式,确保前后端交互的一致性:
| 字段 | 类型 | 描述 | 示例 |
|---|---|---|---|
| code | int | 业务错误码 | 0 |
| message | string | 响应消息 | "success" |
| data | interface{} | 响应数据 | {} |
章节来源
配置管理系统
配置管理采用Protocol Buffers定义,支持多种配置类型:
图表来源
章节来源
架构概览
整体架构设计
图表来源
模块间通信机制
平台采用多种通信方式确保模块间的有效协作:
- gRPC通信:服务间高性能RPC调用
- HTTP REST API:前端应用与后端服务交互
- 消息队列:异步事件处理和数据同步
- 配置中心:动态配置管理和服务发现
详细组件分析
前端应用架构
ui-web应用
ui-web是主要的BI分析用户界面,采用Next.js框架构建:
图表来源
ui-web-admin应用
ui-web-admin提供管理后台功能:
| 依赖 | 版本 | 功能描述 |
|---|---|---|
| @arco-design/web-react | ^2.66.8 | 企业级UI组件库 |
| @plasmicapp/loader-nextjs | ^1.0.451 | 可视化页面构建器 |
| crypto-js | ^4.2.0 | 加密解密工具 |
| json-bigint | ^1.0.0 | 大整数JSON处理 |
章节来源
ui-web-top应用
ui-web-top专注于顶部导航和快捷操作:
| 依赖 | 版本 | 功能描述 |
|---|---|---|
| next-intl | ^4.7.0 | 国际化支持 |
| framer-motion | ^12.29.0 | 动画效果 |
| clsx | ^2.1.1 | 条件CSS类名 |
| tailwind-merge | ^3.4.0 | Tailwind CSS合并 |
章节来源
公共组件库设计
统一错误处理
bi-common提供统一的错误处理机制:
图表来源
章节来源
分页查询组件
统一的分页查询接口设计:
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| page_num | int | 否 | 1 | 页码,从1开始 |
| page_size | int | 否 | 10 | 每页大小,最大100 |
| sort_by | string | 否 | - | 排序字段 |
| sort_order | string | 否 | "desc" | 排序方向 |
章节来源
鉴权与授权系统
JWT认证机制
图表来源
章节来源
依赖分析
Go模块依赖关系
图表来源
前端依赖管理
ui-web依赖结构
| 依赖类别 | 主要包 | 版本范围 | 用途 |
|---|---|---|---|
| UI框架 | next, react, react-dom | 16.x, 19.x | 前端框架 |
| 组件库 | @arco-design/web-react | ^2.66.8 | 企业级UI组件 |
| 可视化 | echarts, ag-grid-community | ^35.0.0 | 数据图表和表格 |
| 工具库 | lodash, dayjs | ^4.17.21, ^1.11.19 | 实用工具函数 |
| 状态管理 | zustand | ^5.0.9 | 应用状态管理 |
章节来源
性能考虑
缓存策略
平台采用多层次缓存策略优化性能:
- Redis缓存:热点数据缓存
- 浏览器缓存:静态资源缓存
- 数据库查询缓存:重复查询结果缓存
并发处理
监控指标
平台建立完善的监控指标体系:
- 业务指标:用户活跃度、数据查询次数
- 系统指标:CPU使用率、内存占用、网络延迟
- 应用指标:API响应时间、错误率、吞吐量
故障排除指南
常见问题诊断
配置相关问题
配置加载失败
- 检查Nacos连接状态
- 验证配置文件格式
- 确认环境变量设置
数据库连接异常
- 检查连接池配置
- 验证数据库服务状态
- 查看慢查询日志
性能问题排查
API响应缓慢
- 分析数据库查询
- 检查Redis缓存命中率
- 监控系统资源使用
内存泄漏
- 检查goroutine泄漏
- 分析内存分配模式
- 监控垃圾回收频率
日志分析
平台采用统一的日志格式,便于问题定位:
章节来源
结论
BI分析平台的模块化设计提供了高度的可扩展性和可维护性。通过monorepo架构和标准化组件库,团队能够:
- 统一技术栈:确保各模块使用一致的技术标准
- 提高开发效率:复用公共组件,减少重复开发
- 增强系统稳定性:完善的错误处理和监控机制
- 支持快速迭代:灵活的模块边界和独立部署能力
未来可以进一步优化的方向包括:
- 完善模块间依赖图谱
- 增强自动化测试覆盖率
- 优化容器化部署策略
- 扩展国际化支持范围
附录
新模块创建流程
配置管理最佳实践
- 环境隔离:开发、测试、生产环境配置分离
- 敏感信息保护:密钥和密码通过环境变量管理
- 配置热更新:支持运行时配置修改
- 版本控制:配置变更纳入版本管理
国际化支持
平台采用next-intl实现多语言支持:
- 支持中英文双语界面
- 动态语言切换
- 日期、数字格式本地化
- 文案内容国际化