web集群架构
2025年4月24日大约 2 分钟
web集群架构
图-1-架构整体图

图-2-架构详细图

1. 客户端层
- 用户终端:浏览器、移动App、第三方系统通过HTTP/HTTPS协议接入。
2. 负载均衡层
- Nginx集群:
- 反向代理和负载均衡后端服务。
- 支持SSL终止和静态资源缓存。
- 横向扩展确保高可用性。
3. 应用服务层
- Spring Boot服务集群:
- 提供RESTful API接口,处理业务逻辑。
- 横向部署多实例,通过Nginx实现负载均衡。
4. 消息队列层
- Kafka集群:
- 分区策略:每个Topic划分为多个分区(如
Partition 1
、Partition 2
),通过分区实现消费者负载均衡。 - 消费设备数据:从Fmq集群(MQTT/TCP/UDP服务集群)接收设备上报的数据。
- 生产者:设备网关服务将数据写入Kafka。
- 消费者:Spring Boot服务消费Kafka数据,处理设备指令、告警等。
- 分区策略:每个Topic划分为多个分区(如
5. 数据处理层
- 规则引擎:
- LiteFlow:负责场景联动规则执行(如设备联动、告警触发)。
- Ignite:存储和管理LiteFlow的规则配置,支持动态更新。
- 分布式任务调度:
- Quartz集群:部署Modbus轮询任务,通过数据库锁实现集群模式的任务协调。
6. 缓存与元数据层
- 分布式缓存:
- Ignite集群:缓存设备元数据(如设备ID、状态、配置),支持分布式查询。
- 与Spring Boot集成,提供低延迟的元数据访问。
- Redis主从架构:(待实现....)
- 主节点:处理写操作(如会话状态、实时计数器)。
- 从节点:处理读操作,通过哨兵(Sentinel)实现自动故障切换。
7. 数据存储层
- 关系型数据库:
- MySQL主从架构:(待实现....)
- 主库:处理事务性写入(如用户数据、设备配置)。
- 从库:处理查询请求,通过Binlog同步数据。
- MySQL主从架构:(待实现....)
- 时序数据库:
- TDengine主从架构:
- 主节点:存储设备采集的历史数据(如温度、湿度)。
- 从节点:提供高性能时序数据查询,支持降采样和聚合。
- TDengine主从架构:
8. 设备接入层
- 协议网关:
- 支持MQTT/TCP/UDP协议,对接物理设备。
- 将设备数据转发至Kafka集群。
架构图关键设计
- 高可用性:
- 所有关键组件(Nginx、Kafka、MySQL、Redis等)均采用主从或集群部署。
- 数据流向:
- 设备数据 → MQTT/TCP/UDP网关 → Kafka → Spring Boot服务 → TDengine/MySQL。
- 规则引擎和任务调度服务通过Ignite实现状态共享。
- 性能优化:
- Ignite缓存设备元数据,降低MySQL查询压力。
- TDengine针对时序数据优化存储和查询效率。
- 扩展性:
- 通过Kafka分区和Nginx负载均衡实现水平扩展。