Skip to content

整体架构设计

**本文引用的文件** - [[bi-analysis/cmd/bi-analysis/main.go]](../file/bi-analysis/cmd/bi-analysis/main.go) - [[bi-analysis/internal/conf/conf.proto]](../file/bi-analysis/internal/conf/conf.proto) - [[bi-analysis/internal/server/server.go]](../file/bi-analysis/internal/server/server.go) - [[bi-common/conf/common.proto]](../file/bi-common/conf/common.proto) - [[bi-common/registry/nacos/client.go]](../file/bi-common/registry/nacos/client.go) - [[bi-common/observability/logger/logger.go]](../file/bi-common/observability/logger/logger.go) - [[bi-common/database/gormx/config.go]](../file/bi-common/database/gormx/config.go) - [[bi-common/mq/kafkax/config.go]](../file/bi-common/mq/kafkax/config.go) - [[bi-common/cache/redisx/config.go]](../file/bi-common/cache/redisx/config.go) - [[bi-common/auth/jwt.go]](../file/bi-common/auth/jwt.go) - [[bi-common/utils/snowflake/snowflake.go]](../file/bi-common/utils/snowflake/snowflake.go) - [[bi-api-jushuitan/go.mod]](../file/bi-api-jushuitan/go.mod) - [[bi-api-leke/go.mod]](../file/bi-api-leke/go.mod) - [[bi-basic/go.mod]](../file/bi-basic/go.mod) - [[bi-common/go.mod]](../file/bi-common/go.mod) - [[bi-analysis/go.mod]](../file/bi-analysis/go.mod)

目录

  1. 引言
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

引言

本文件面向BI分析平台的整体架构设计,基于仓库中的实际代码与模块组织,系统化阐述微服务架构的设计理念、分层职责、服务间依赖与调用链路、可扩展性与水平扩展策略,并给出架构决策的技术考量与权衡。文档同时提供系统边界图与关键组件交互图,帮助读者快速理解平台如何通过统一基础设施与通用组件支撑多业务域的分析能力。

项目结构

该仓库采用多模块微服务架构,围绕“分析服务”“基础服务”“租户与认证服务”“消息队列与缓存”“公共能力层”等维度组织。核心服务包括:

  • bi-analysis:分析服务入口,承载指标计算、报表聚合等分析能力
  • bi-basic:基础数据与领域服务,提供商品、订单、店铺等基础能力
  • bi-api-jushuitan、bi-api-leke:对接外部系统的API网关/适配器服务
  • bi-common:公共能力层,提供配置、日志、鉴权、缓存、消息队列、数据库、注册中心、工具库等
  • 其他子系统:如聊天、通知、计划任务、系统管理等

图表来源

章节来源

核心组件

  • 服务启动与容器化:基于Kratos框架,统一管理HTTP/GRPC服务、配置加载、日志与追踪初始化、服务注册与注销
  • 配置与注册中心:Nacos作为配置中心与服务注册中心,支持动态配置下发与服务发现
  • 数据访问:GORM封装,支持MySQL与StarRocks,提供连接池、慢查询日志、TLS等配置
  • 消息队列:Kafka封装,支持生产者/消费者、批处理、分区重平衡、SASL/TLS安全配置
  • 缓存:Redis封装,支持单机/哨兵/集群模式,连接池与超时配置
  • 鉴权:JWT工具,支持访问令牌与刷新令牌生成、解析与过期判断
  • 基础设施:雪花ID生成,支持多级初始化策略(配置/环境/Nacos/IP)

章节来源

架构总览

本平台采用“微服务 + 分层架构”,结合统一的公共能力层,实现高内聚、低耦合的服务拆分与跨域协作。整体架构遵循以下设计原则:

  • 分层清晰:表现层(API/网关)、业务层(领域服务)、数据层(数据库/缓存/消息队列)
  • 松耦合:服务间通过协议(gRPC/HTTP)与消息队列解耦,支持独立演进
  • 可观测:统一日志、指标与追踪接入,便于问题定位与性能分析
  • 可扩展:通过Nacos实现配置与注册中心,支持水平扩展与灰度发布

图表来源

详细组件分析

服务启动与生命周期(Kratos App)

  • 统一入口:命令行参数解析、环境切换、配置加载(Nacos)、日志初始化、雪花ID初始化、服务注册、应用启动
  • 服务注册:可选Nacos注册器,便于服务发现与治理
  • 配置模型:Bootstrap包含服务名、版本、Server、Data、Log、Snowflake、Auth等字段

图表来源

章节来源

服务间鉴权与远程校验

  • 远程鉴权中间件:从请求头提取Token,支持白名单路径跳过;对非白名单路径调用租户服务进行Token验证
  • 用户信息注入:验证通过后将用户信息写入上下文,供业务层使用

图表来源

章节来源

配置与注册中心(Nacos)

  • 配置中心:支持获取/发布/监听配置,支持多DataId与Group
  • 服务发现:提供命名客户端,支持服务注册与发现
  • 客户端参数:支持Scheme/ContextPath、超时、心跳、认证、密钥等

图表来源

章节来源

数据访问(GORM封装)

  • 配置结构:驱动、主机、端口、数据库、用户名、密码、字符集、连接池、日志、Streamload等
  • 连接池:最大打开连接数、空闲连接数、生命周期与空闲时间
  • 日志:日志级别、慢查询阈值
  • TLS:启用/跳过校验、CA/证书/密钥路径、SNI
  • DSN生成:根据驱动与TLS参数拼装DSN,支持StarRocks优化

图表来源

章节来源

消息队列(Kafka封装)

  • 生产者配置:Broker列表、Topic、Batch、可靠性、异步、压缩、Balancer、超时、SASL/TLS
  • 消费者配置:Broker、Topic、GroupID、分区、最小/最大字节、起始偏移、心跳/会话/再均衡超时、隔离级别、SASL/TLS
  • 默认配置:提供默认生产者与消费者配置,支持克隆与合并

图表来源

章节来源

缓存(Redis封装)

  • 连接模式:single、sentinel、cluster
  • 地址列表:单机/哨兵/集群节点地址
  • 认证:用户名/密码(ACL)
  • 连接池:池大小、最小/最大空闲连接、池超时、连接最大空闲/生命周期
  • 超时:连接/读/写超时
  • TLS:启用/跳过校验、CA/证书/密钥路径、SNI
  • 自定义Dialer:支持地址映射等场景

图表来源

章节来源

鉴权(JWT)

  • 令牌生成:访问令牌与刷新令牌,支持签发者、过期时间、刷新阈值
  • 令牌解析:支持多种错误类型(过期、无效、格式错误、尚未生效)
  • 刷新判断:根据剩余有效期与阈值判断是否需要刷新

图表来源

章节来源

基础设施(雪花ID)

  • 节点初始化:支持配置、环境变量、Nacos服务实例数、IP自动生成等多级策略
  • 生成规则:时间戳、数据中心ID、工作节点ID、序列号组合,带时间回拨容忍
  • 解析能力:支持从ID解析出时间、数据中心ID、工作节点ID、序列号

图表来源

章节来源

依赖分析

  • 模块依赖:各服务模块均依赖bi-common,统一引入Kratos、gRPC、Protobuf、GORM、Kafka、Redis、Nacos等
  • 版本约束:bi-common作为公共模块,被多个服务模块引用,确保版本一致性
  • 替换声明:bi-analysis在go.mod中通过replace指向本地bi-common与bi-proto,便于开发调试

图表来源

章节来源

性能考虑

  • 连接池优化:GORM封装针对StarRocks提供连接池优化策略,避免频繁连接创建/销毁
  • 批处理与分区:Kafka生产者支持批量大小、字节、超时与Balancer策略,消费者支持分区重平衡与延迟监控
  • 缓存策略:Redis支持多模式与连接池参数调优,结合TTL与路由策略提升命中率
  • 日志与追踪:统一日志格式与级别控制,结合慢查询阈值定位性能瓶颈
  • ID生成:雪花ID在多实例下具备唯一性与有序性,减少热点与冲突

故障排查指南

  • 配置加载失败:确认Nacos配置源可用、DataId/Group正确、环境参数传入正确
  • 服务注册异常:检查Nacos服务连通性、命名客户端参数、服务实例健康状态
  • 数据库连接问题:核对DSN参数、TLS配置、连接池参数、慢查询日志
  • 消息队列消费异常:检查Broker可达性、Topic/Group/分区配置、SASL/TLS、重平衡与滞后监控
  • 缓存不可用:确认连接模式、地址列表、认证信息、连接池与超时配置
  • 鉴权失败:核对JWT密钥、签发者、过期时间、刷新阈值,检查租户服务Token验证接口
  • ID生成异常:检查WorkerID/DataCenterID范围、时间回拨容忍、IP生成策略

章节来源

结论

本BI分析平台通过微服务与分层架构,结合统一的公共能力层,实现了高内聚、低耦合与强一致的可观测体系。Nacos提供配置与注册中心,Kafka与Redis支撑高吞吐与低延迟,GORM与JWT保障数据访问与鉴权安全,雪花ID确保分布式唯一性。该架构在满足业务需求的同时,兼顾了可扩展性、稳定性与运维效率,适合在多租户、多业务域的复杂场景中持续演进。

附录

  • 系统边界图(概念示意)