Skip to content

bi-basic 基础数据服务

**本文档引用的文件** - [[README.md]](../file/bi-basic/readme.md) - [[go.mod]](../file/bi-basic/go.mod) - [[main.go]](../file/bi-basic/cmd/server/main.go) - [[conf.proto]](../file/bi-basic/internal/conf/conf.proto) - [[shop.proto]](../file/bi-basic/api/shop/v1/shop.proto) - [[order.proto]](../file/bi-basic/api/order/v1/order.proto) - [[goods.proto]](../file/bi-basic/api/goods/v1/goods.proto) - [[shop_auth.proto]](../file/bi-basic/api/shop-auth/v1/shop-auth.proto) - [[grpc.go]](../file/bi-basic/internal/server/grpc.go) - [[shop.go]](../file/bi-basic/internal/biz/bo/shop.go) - [[order.go]](../file/bi-basic/internal/biz/bo/order.go) - [[goods.go]](../file/bi-basic/internal/biz/bo/goods.go) - [[shop.go]](../file/bi-basic/internal/data/do/shop.go) - [[shop.go]](../file/bi-basic/internal/data/repo/repoimpl/shop.go) - [[shop.go]](../file/bi-basic/internal/service/shop.go)

更新摘要

所做更改

  • 更新了依赖关系分析,反映移除对 bi-proto 模块的依赖
  • 修改了架构概览图,移除 bi-proto 组件
  • 更新了服务依赖关系图,反映新的模块结构
  • 移除了与 bi-proto 相关的协议定义说明

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

bi-basic 是 BI 平台的基础数据服务,作为所有业务数据的核心支撑系统。该服务提供订单、商品、店铺等核心实体的统一管理能力,通过 gRPC API 接口为整个 BI 平台提供标准化的数据访问服务。

该服务采用微服务架构设计,基于 Go Kratos 框架构建,支持多租户数据隔离和动态表名机制。服务集成了 Nacos 配置中心、Kafka 消息队列、MySQL 数据库等多种技术栈,为 BI 平台提供了稳定可靠的基础数据支撑。

更新 服务现已移除对 bi-proto 模块的依赖,采用本地 Protocol Buffers 定义,简化了模块间的依赖关系。

项目结构

bi-basic 项目遵循清晰的分层架构设计:

图表来源

章节来源

核心组件

服务架构设计

bi-basic 服务采用分层架构模式,每个层次都有明确的职责分工:

  1. API 层: 定义 gRPC 和 HTTP 接口规范,使用 Protocol Buffers 进行接口定义
  2. 业务逻辑层: 实现具体的业务规则和流程控制
  3. 数据访问层: 处理数据持久化和数据库交互
  4. 服务层: 作为业务逻辑层和数据访问层的协调者

数据模型设计

服务围绕三个核心实体构建数据模型:

图表来源

业务逻辑实现

服务实现了完整的 CRUD 操作和复杂的业务逻辑:

  • 店铺管理: 支持店铺的创建、查询、更新、删除和状态管理
  • 订单管理: 提供订单的增删改查、同步和统计功能
  • 商品管理: 实现商品信息的维护、同步和展示
  • 授权管理: 处理平台授权和权限控制

章节来源

架构概览

bi-basic 服务的整体架构采用微服务设计理念:

更新 移除了 bi-proto 组件,因为服务现已采用本地 Protocol Buffers 定义。

图表来源

服务启动流程

图表来源

详细组件分析

店铺管理模块

API 接口定义

店铺管理模块提供了完整的 CRUD 操作和授权管理功能:

图表来源

数据模型设计

店铺实体包含了丰富的业务字段:

字段名类型描述用途
idbigint店铺唯一标识主键标识
i_user_idbigint用户ID关联用户
c_platform_uidstring平台店铺UID平台唯一标识
c_namestring店铺名称显示名称
c_platformint32平台类型电商类型
b_enabledint8启用状态状态控制
t_create_timedatetime创建时间时间戳

业务逻辑实现

图表来源

章节来源

订单管理模块

数据模型设计

订单管理模块采用了灵活的数据模型设计:

图表来源

核心业务功能

订单管理模块实现了以下核心功能:

  1. 订单查询: 支持按多种条件组合查询订单
  2. 订单同步: 从平台同步订单数据
  3. 订单统计: 提供订单相关的统计数据
  4. 订单展示: 为前端提供友好的展示数据

章节来源

商品管理模块

API 接口设计

商品管理模块提供了全面的商品管理功能:

图表来源

数据模型特点

商品管理模块采用了灵活的数据模型:

字段类别字段名类型描述
基础信息i_product_idint64商品ID
平台信息c_platformint8平台类型
商品标识c_product_idstring平台商品ID
商品属性c_titlestring商品标题
价格信息d_pricefloat64商品价格
库存信息i_num_soldint64销量
状态信息c_statusstring商品状态

章节来源

授权管理模块

授权流程设计

图表来源

章节来源

依赖关系分析

外部依赖关系

bi-basic 服务依赖于多个外部组件和库:

更新 移除了 bi-proto 依赖,因为服务现已采用本地 Protocol Buffers 定义。

图表来源

内部模块依赖

服务内部模块之间的依赖关系清晰明确:

更新 移除了 bi-proto 相关的依赖关系。

图表来源

章节来源

性能考虑

数据库优化策略

  1. 索引优化: 为常用查询字段建立合适的索引
  2. 连接池管理: 合理配置数据库连接池大小
  3. 查询优化: 使用预编译语句和参数化查询
  4. 缓存策略: 实现多级缓存机制

服务性能优化

  1. 并发处理: 使用 goroutine 和 channel 处理并发请求
  2. 资源复用: 复用数据库连接和 HTTP 客户端
  3. 异步处理: 对耗时操作采用异步处理方式
  4. 负载均衡: 支持水平扩展和负载均衡

监控和诊断

服务集成了完善的监控机制:

  • 日志记录: 结构化日志输出
  • 指标收集: Prometheus 指标收集
  • 链路追踪: OpenTelemetry 链路追踪
  • 健康检查: 自动健康检查机制

故障排除指南

常见问题及解决方案

  1. 数据库连接失败

    • 检查数据库配置和网络连接
    • 验证数据库服务状态
    • 查看连接池配置
  2. 服务启动失败

    • 检查配置文件加载
    • 验证端口占用情况
    • 查看依赖服务状态
  3. API 调用异常

    • 检查请求参数格式
    • 验证认证信息
    • 查看服务日志

调试技巧

  1. 日志分析: 通过日志定位问题根因
  2. 性能分析: 使用 pprof 分析性能瓶颈
  3. 网络诊断: 检查网络连接和延迟
  4. 数据库诊断: 分析 SQL 执行计划

章节来源

结论

bi-basic 基础数据服务作为 BI 平台的核心支撑系统,通过清晰的架构设计和完善的业务实现,为整个平台提供了稳定可靠的数据服务。服务采用现代化的技术栈和最佳实践,具备良好的可扩展性和可维护性。

该服务的主要优势包括:

  1. 架构清晰: 分层设计明确,职责分离合理
  2. 功能完整: 覆盖了 BI 平台所需的核心业务功能
  3. 性能优秀: 采用多种优化策略,满足高并发需求
  4. 易于扩展: 模块化设计便于功能扩展和维护

更新 通过移除对 bi-proto 模块的依赖,服务的模块化程度得到进一步提升,减少了跨模块的耦合度,提高了系统的独立性和可维护性。

未来可以进一步完善的功能包括:

  1. 增强安全性: 添加更细粒度的权限控制
  2. 提升可观测性: 完善监控和告警机制
  3. 优化性能: 持续改进数据库和缓存策略
  4. 扩展功能: 支持更多的业务场景和平台

通过持续的优化和完善,bi-basic 服务将继续为 BI 平台提供强有力的技术支撑。