Skip to content

基础设施架构

**本文引用的文件** - [[bi-infra 说明文档]](../file/bi-intra/readme.md) - [[APISIX 服务配置]](../file/bi-intra/apisix/services.yaml) - [[APISIX Prometheus 全局规则]](../file/bi-intra/apisix/apisix-prometheus-global-rule.json) - [[Nacos Helm values]](../file/bi-intra/charts/nacos/values.yaml) - [[Grafana Helm values]](../file/bi-intra/charts/grafana/values.yaml) - [[APISIX Dashboard Helm values]](../file/bi-intra/charts/apisix-dashboard/values.yaml) - [[Kafka Helm values]](../file/bi-intra/charts/kafka/values.yaml) - [[Nacos 客户端实现]](../file/bi-common/registry/nacos/client.go) - [[Nacos 服务发现实现]](../file/bi-common/registry/nacos/discovery.go) - [[Nacos 配置结构]](../file/bi-common/registry/nacos/config.go) - [[部署脚本]](../file/scripts/deploy.sh)

目录

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

引言

本文件面向 BI 分析平台的基础设施架构,系统性阐述容器化部署、Kubernetes 集群配置、APISIX API 网关路由策略、Nacos 配置中心与注册发现、监控与日志体系、CI/CD 自动化部署流程,并提供高可用与容灾设计建议及资源管理与扩缩容策略。

项目结构

基础设施相关配置集中在 bi-infra 子模块,包含:

  • APISIX 路由与安全策略配置
  • Helm Charts:Nacos、APISIX Dashboard、Kafka、Grafana
  • 监控与日志相关配置
  • 通用组件:Nacos 客户端 SDK(Go)

图表来源

章节来源

核心组件

  • APISIX API 网关:统一入口、路由转发、鉴权与安全防护
  • Nacos:服务注册与配置中心
  • Kafka:消息队列(KRaft 模式)
  • Grafana:可视化与告警
  • Helm Charts:标准化部署与运维
  • Nacos 客户端 SDK:服务发现与配置获取

章节来源

架构总览

整体采用“网关 + 服务网格 + 中间件 + 监控”的分层架构。前端通过 APISIX 访问后端微服务;服务间通过 Nacos 注册发现;消息通过 Kafka 流转;监控通过 Prometheus 收集指标,Grafana 展示。

图表来源

详细组件分析

APISIX API 网关

  • 统一入口与路由:通过 services.yaml 定义各服务的路由前缀、主机名、上游地址等
  • 安全与防护:内置 IP 白名单、API Key、限流、WAF 规则
  • JWT 认证:支持网关层 JWT 校验
  • Prometheus 指标:全局启用 Prometheus 插件采集指标
  • 外部代理:支持对特定外部服务进行反向代理

图表来源

章节来源

Nacos 配置中心与注册发现

  • Helm 部署:集群模式,3 副本,MySQL(PolarDB-X) 存储
  • 客户端 SDK:提供配置中心与服务发现能力,支持注册/注销、订阅、查询
  • 默认配置:包含服务端、客户端、鉴权、高级参数等结构化配置

图表来源

章节来源

Kafka 消息队列(KRaft 模式)

  • 版本与模式:Kafka 3.9.1,KRaft Combined(Broker + Controller)
  • 副本与存储:3 副本,20Gi,阿里云磁盘
  • 连接地址:集群内服务地址

章节来源

监控与日志体系

  • Prometheus:采集各组件指标
  • Grafana:仪表盘与告警
  • Helm 配置:可启用 ServiceMonitor、HPA、持久化等

图表来源

章节来源

CI/CD 与自动化部署

  • 脚本职责:拉取代码、构建前端/后端、打包 Docker 镜像、使用 docker-compose 启动
  • 建议演进:将 docker-compose 迁移为 Helm/Kustomize + ArgoCD/Flux,实现声明式与 GitOps

图表来源

章节来源

依赖关系分析

  • 服务依赖:各业务服务通过 Nacos 进行注册与发现
  • 网关依赖:APISIX 作为统一入口,依赖 Nacos 获取服务实例
  • 监控依赖:各组件暴露指标,Prometheus 抓取,Grafana 展示

图表来源

章节来源

性能考虑

  • APISIX:合理设置连接/发送/读取超时与重试次数,避免上游抖动放大
  • Nacos:集群模式与 MySQL 存储需评估 QPS 与延迟;开启鉴权与压缩提升安全性与吞吐
  • Kafka:副本数与分区数平衡吞吐与恢复时间;磁盘 IOPS 与网络带宽满足峰值
  • Grafana:启用 ServiceMonitor 与 HPA,限制资源请求与限制,避免资源争抢

[本节为通用指导,无需列出具体文件来源]

故障排查指南

  • APISIX
    • 检查路由前缀与 Host 是否匹配
    • 核对 JWT 密钥与算法配置
    • 查看限流与 WAF 拦截日志
  • Nacos
    • 确认服务实例健康状态与权重
    • 检查订阅回调是否正常触发
    • 验证配置中心 DataId/Group 一致性
  • Kafka
    • 关注分区 leader/follower 状态
    • 检查磁盘容量与网络 I/O
  • Grafana/Prometheus
    • 确认 ServiceMonitor 与抓取间隔
    • 校验数据源连通性与权限

章节来源

结论

该基础设施以 APISIX 为核心入口,结合 Nacos 实现服务治理,Kafka 提供异步解耦,Grafana/Prometheus 完成可观测性闭环。通过 Helm Charts 标准化部署,具备良好的可维护性与扩展性。建议进一步推进 GitOps 化与多集群高可用策略,强化容灾与弹性伸缩能力。

[本节为总结性内容,无需列出具体文件来源]

附录

高可用与容灾设计

  • APISIX:多副本部署,结合 Ingress/SLB 提供外网入口
  • Nacos:集群模式 + 外部 MySQL 存储,跨可用区部署
  • Kafka:多副本与分区,跨 AZ 部署,开启 ISR 保障
  • Grafana:启用持久化与备份,HPA 动态扩缩

章节来源

资源管理与扩缩容策略

  • HPA:根据 CPU/内存或自定义指标自动扩缩
  • 资源配额:为命名空间设置 Requests/Limits
  • PodDisruptionBudget:保证关键服务的可用性
  • Topology Spread:跨节点/AZ 均匀分布

章节来源