Appearance
基础设施配置
**本文引用的文件** - [nacos.yml](file://lemes-cloud/src/devops/docker-compose/nacos.yml) - [nacos-standalone.yml](file://lemes-cloud/src/devops/docker-compose/nacos-standalone.yml) - [docker-compose.yml](file://lemes-cloud/src/devops/docker-compose/docker-compose.yml) - [base.yml](file://lemes-cloud/src/devops/docker-compose/base.yml) - [lemes-nacos-pgsql.yaml](file://lemes-cloud/src/devops/console/k8s/template/lemes-nacos-pgsql.yaml) - [lemes-nacos.yaml](file://lemes-cloud/src/devops/console/k8s/template/lemes-nacos.yaml) - [lemes-gateway](file://lemes-cloud/lemes-gateway) - [RouterController.java](file://lemes-cloud/lemes-gateway/src/main/java/com/lenovo/lemes/gateway/controller/RouterController.java) - [bootstrap.yml(认证服务)](file://lemes-cloud/lemes-auth/src/main/resources/bootstrap.yml) - [lemes-gateway README](file://lemes-cloud/lemes-gateway/README.md) - [redis.yaml](file://lemes-cloud/src/devops/console/k8s/template/redis.yaml) - [redis-cluster.yaml](file://lemes-cloud/src/devops/k8s/service/base/redis-cluster.yaml) - [RedisConfig.java](file://lemes-cloud/lemes-framework/lemes-framework-core/src/main/java/com/lenovo/lemes/framework/core/config/RedisConfig.java) - [zookeeper.yaml](file://lemes-cloud/src/devops/console/k8s/template/zookeeper.yaml) - [lemes-nabfweb.yaml](file://lemes-cloud/src/devops/console/k8s/template/nabfweb.yaml) - [nabfweb.yaml](file://lemes-cloud/src/devops/k8s/service/expose-port/nabfweb.yaml) - [skywalking.yaml](file://lemes-cloud/src/devops/k8s/service/base/skywalking.yaml) - [nabfweb.yaml(暴露端口)](file://lemes-cloud/src/devops/k8s/service/expose-port/nabfweb.yaml) - [lemes-service-pcg-report.yaml](file://lemes-cloud/src/devops/k8s/service/expose-port/lemes-service-pcg-report.yaml) - [lemes-service-pcg-report.yaml(暴露端口)](file://lemes-cloud/src/devops/k8s/service/expose-port/lemes-service-pcg-report.yaml) - [lemes-websocket-server WebSocketConfig.java](file://lemes-cloud/lemes-websocket/lemes-websocket-server/src/main/java/com/lenovo/lemes/websocket/server/config/WebSocketConfig.java) - [lemes-framework-datasource pom.xml](file://lemes-cloud/lemes-framework/lemes-framework-datasource/pom.xml) - [lemes-framework-datasource 数据库适配接口](file://lemes-cloud/lemes-framework/lemes-framework-datasource/src/main/java/com/lenovo/lemes/datasource/adapter/DataBaseAdapter.java) - [lemes-framework-datasource 动态库名常量](file://lemes-cloud/lemes-framework/lemes-framework-datasource/src/main/java/com/lenovo/lemes/datasource/constants/DynamicDbName.java) - [lemes-job-devicemate-executor application.yml](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/resources/application.yml)目录
简介
本文件面向基础设施工程师,系统性梳理 DeviceMate 项目的基础设施配置与部署要点,覆盖以下方面:
- Nacos 配置中心:服务注册、配置管理、集群部署、数据持久化
- 数据库:PostgreSQL 主从复制、读写分离、备份策略、高可用架构
- 缓存:Redis 单机、哨兵、集群、数据分片策略
- 消息队列:RabbitMQ 集群、持久化、镜像队列、消费者组管理
- 网关:路由规则、负载均衡、熔断降级、限流策略
- 监控:Prometheus、Grafana、Alertmanager、日志收集栈
- 提供可操作的部署与配置指导
项目结构
本项目采用多模块 Maven 结构,基础设施相关配置主要集中在 lemes-cloud 的 devops 与 console 目录中,涵盖 Docker Compose 与 Kubernetes YAML 模板。
图表来源
- docker-compose.yml:1-136
- base.yml:1-70
- nacos.yml:1-25
- nacos-standalone.yml:1-25
- lemes-nacos.yaml:1-151
- lemes-nacos-pgsql.yaml:1-168
- redis.yaml:1-105
- zookeeper.yaml:1-72
- lemes-nabfweb.yaml:1-38
- nabfweb.yaml(暴露端口):1-32
- lemes-service-pcg-report.yaml:1-14
章节来源
核心组件
- Nacos 配置中心:支持单机与集群模式,通过环境变量注入数据库与集群地址,提供服务发现与配置下发能力。
- 网关服务:基于 Spring Cloud Gateway,提供路由列表查询与动态刷新能力。
- 认证服务:集成 Nacos 发现与配置,管理客户端访问令牌有效期。
- 缓存:提供 Redis 单实例与 Redis 集群模板,支持哨兵与分片策略。
- 消息队列:提供 ZooKeeper 模板用于 MQ 集群元数据管理。
- 监控:SkyWalking UI 暴露端口,便于可视化追踪。
章节来源
- lemes-nacos.yaml:1-151
- lemes-nacos-pgsql.yaml:1-168
- lemes-gateway
- bootstrap.yml(认证服务):1-67
- redis.yaml:1-105
- redis-cluster.yaml:1-94
- zookeeper.yaml:1-72
- skywalking.yaml:115-144
架构总览
下图展示基础设施层的关键交互:应用通过网关访问认证服务与业务服务,认证服务与配置中心进行交互,缓存与消息中间件支撑业务运行。
图表来源
- lemes-gateway
- bootstrap.yml(认证服务):1-67
- lemes-nacos.yaml:1-151
- redis.yaml:1-105
- zookeeper.yaml:1-72
- skywalking.yaml:115-144
详细组件分析
Nacos 配置中心
- 单机与集群模式
- 单机:通过环境变量 MODE=standalone 启动,适合开发与测试。
- 集群:通过 NACOS_SERVERS 注入集群节点,结合数据库持久化实现高可用。
- 数据持久化
- 支持 MySQL/PostgreSQL,模板中提供 JDBC 代理以兼容不同数据库平台。
- 服务注册与配置管理
- 应用通过 discovery.server-addr 与 config.server-addr 连接 Nacos,共享配置按命名空间与文件扩展名加载。
- 集群部署要点
- StatefulSet 控制副本数与稳定网络标识,Ingress 暴露管理后台路径。
- 通过 ConfigMap 注入数据库连接参数,确保跨 Pod 参数一致性。
图表来源
章节来源
网关服务
- 路由规则
- 通过 GatewayProperties 获取已定义路由,提供 /gateway-router/list 接口输出路由组件与模块映射。
- 动态刷新
- 通过 Actuator 端点触发网关路由刷新,保障配置变更即时生效。
- 负载均衡与熔断降级
- 可结合 Spring Cloud Circuit Breaker 与负载均衡策略在应用侧实现。
- 限流策略
- 可通过 Gateway 自带的限流过滤器或第三方限流组件实现。
图表来源
章节来源
缓存集群
- 单机模式
- 通过 ConfigMap 注入 redis.conf,启用持久化与密码保护,提供健康检查探针。
- 集群模式
- StatefulSet 部署 6 节点集群,开启 cluster-enabled,使用 gossip 端口进行节点通信。
- 分片策略
- 集群模式下由 Redis 内部进行槽位分片,建议配合客户端路由策略实现高可用与弹性扩容。
- 哨兵模式
- 可在应用侧通过 Sentinel 客户端实现高可用读写分离与故障转移。
图表来源
章节来源
消息队列集群
- ZooKeeper 元数据
- 提供 ZooKeeper 模板,用于维护 MQ 集群元数据与领导者选举。
- RabbitMQ 集群
- 建议在独立部署环境中使用 HAProxy 或 Kubernetes Headless Service 实现集群与负载均衡。
- 队列持久化与镜像队列需在 RabbitMQ 配置中启用,消费者组管理可通过客户端库实现。
- 集成建议
- 将 MQ 与业务服务解耦,通过网关统一接入与鉴权。
章节来源
认证服务与配置管理
- 认证服务通过 Nacos 发现与配置,管理客户端访问令牌有效期,支持优雅停机与端点暴露。
- 配置加载策略
- 通过命名空间与文件扩展名加载共享配置,避免硬编码。
章节来源
监控基础设施
- SkyWalking UI
- 通过 NodePort 暴露 UI 服务,便于本地调试与可视化追踪。
- Prometheus/Grafana/Alertmanager
- 建议在生产环境引入 Prometheus 抓取指标、Grafana 可视化、Alertmanager 告警,结合应用埋点与探针完善监控体系。
章节来源
数据库与高可用
- PostgreSQL 主从复制与读写分离
- 建议在应用侧通过连接池与路由实现读写分离,主库负责写入,从库承担读请求。
- 备份策略
- 建议采用定时快照与 WAL 归档相结合的方式,确保可恢复到任意时间点。
- 高可用架构
- 结合数据库集群(如 Patroni/Repmgr)与 VIP/代理层实现自动故障转移。
章节来源
- lemes-framework-datasource pom.xml:49-81
- lemes-framework-datasource 数据库适配接口:1-15
- lemes-framework-datasource 动态库名常量:1-17
- lemes-job-devicemate-executor application.yml:97-107
依赖关系分析
- 组件耦合
- 网关依赖认证服务与业务服务;认证服务依赖 Nacos;业务服务依赖缓存与消息中间件。
- 外部依赖
- Nacos 支持多种数据库后端;Redis 集群依赖稳定的 Pod IP 与 gossip 端口;ZooKeeper 用于 MQ 元数据管理。
- 循环依赖
- 代码层面未见循环依赖迹象;部署层面建议通过网关与命名空间隔离降低耦合。
图表来源
- lemes-gateway
- bootstrap.yml(认证服务):1-67
- lemes-nacos.yaml:1-151
- redis.yaml:1-105
- zookeeper.yaml:1-72
- skywalking.yaml:115-144
性能考量
- 缓存命中率
- 合理设置键空间过期策略与内存上限,避免 OOM;对热点数据进行预热。
- 数据库连接池
- 根据 QPS 调整最大连接数与超时时间,避免连接风暴。
- 网关限流
- 在网关层实施基于 IP/用户维度的限流,防止突发流量冲击下游。
- 监控与告警
- 建立关键指标阈值与告警通道,提前发现性能瓶颈。
故障排查指南
- Nacos 无法注册/拉取配置
- 检查 discovery.server-addr 与命名空间是否正确;确认数据库连通性与凭证。
- 网关路由不生效
- 执行路由刷新端点并确认路由定义;核对网关日志与 Actuator 输出。
- 缓存连接异常
- 校验密码与网络连通性;检查 AOF/持久化目录权限。
- MQ 集群元数据异常
- 清理 ZooKeeper 临时节点并重启服务;核对集群成员列表。
章节来源
结论
本文基于现有配置文件,给出了 DeviceMate 项目基础设施的部署与配置要点。建议在生产环境进一步完善数据库高可用、缓存与消息队列的监控与告警体系,并在网关层强化安全与限流策略,以提升整体稳定性与可观测性。
附录
- 服务暴露示例
- NabfWeb 与 PCG 报表服务通过 Ingress/NodePort 暴露,便于外部访问与集成。
- WebSocket 集成
- WebSocket 服务配置了 STOMP Broker 与用户前缀,便于实时消息推送。
章节来源