系统架构

概念模型

EMQ X 消息服务器概念上更像一台网络路由器(Router)或交换机(Switch),而不是传统的企业级消息服务器(MQ)。相比网络路由器按 IP 地址或 MPLS 标签路由报文,EMQ X 按主题树(Topic Trie)发布订阅模式在集群节点间路由 MQTT 消息:

image

设计原则

  1. EMQ X 消息服务器核心解决的问题:处理海量的并发 MQTT 连接与路由消息。
  2. 充分利用 Erlang/OTP 平台软实时、低延时、高并发、分布容错的优势。
  3. 连接(Connection)、会话(Session)、路由(Router)、集群(Cluster)分层。
  4. 消息路由平面(Flow Plane)与控制管理平面(Control Plane)分离。
  5. 支持后端数据库或 NoSQL 实现数据持久化、容灾备份与应用集成。

系统分层

  1. 连接层(Connection Layer): 负责 TCP 连接处理、MQTT 协议编解码。
  2. 会话层(Session Layer):处理 MQTT 协议发布订阅消息交互流程。
  3. 路由层(Route Layer):节点内路由派发 MQTT 消息。
  4. 分布层(Distributed Layer):分布节点间路由 MQTT 消息。
  5. 认证与访问控制(ACL):连接层支持可扩展的认证与访问控制模块。
  6. 钩子(Hooks)与插件(Plugins):系统每层提供可扩展的钩子,支持插件方式扩展服务器。