系统架构
概念模型
EMQ X 消息服务器概念上更像一台网络路由器(Router)或交换机(Switch),而不是传统的企业级消息服务器(MQ)。相比网络路由器按 IP 地址或 MPLS 标签路由报文,EMQ X 按主题树(Topic Trie)发布订阅模式在集群节点间路由 MQTT 消息:
设计原则
- EMQ X 消息服务器核心解决的问题:处理海量的并发 MQTT 连接与路由消息。
- 充分利用 Erlang/OTP 平台软实时、低延时、高并发、分布容错的优势。
- 连接(Connection)、会话(Session)、路由(Router)、集群(Cluster)分层。
- 消息路由平面(Flow Plane)与控制管理平面(Control Plane)分离。
- 支持后端数据库或 NoSQL 实现数据持久化、容灾备份与应用集成。
系统分层
- 连接层(Connection Layer): 负责 TCP 连接处理、MQTT 协议编解码。
- 会话层(Session Layer):处理 MQTT 协议发布订阅消息交互流程。
- 路由层(Route Layer):节点内路由派发 MQTT 消息。
- 分布层(Distributed Layer):分布节点间路由 MQTT 消息。
- 认证与访问控制(ACL):连接层支持可扩展的认证与访问控制模块。
- 钩子(Hooks)与插件(Plugins):系统每层提供可扩展的钩子,支持插件方式扩展服务器。