Apache BifroMQ 4.0.0-incubating 介绍与选型指南
基于官方资料的 Apache BifroMQ 4.0.0-incubating 认知篇:架构、特性、快速上手与同类 MQTT 中间件选型对比。
Apache BifroMQ 4.0.0-incubating 介绍与选型指南
一、信息基准
本文为认知篇,内容全部基于官方公开资料联网查证,未做本地安装实测。关键论断随文标注来源,统一查询日期为 2026-10-18。
| 事项 | 说明 |
|---|---|
| 查询日期 | 2026-10-18 |
| 版本依据 | GitHub 仓库 apache/bifromq 的 Releases 页 releases/latest 返回 tag v4.0.0-incubating(发布于 2026-01-28,非预发布),官方二进制下载目录 downloads.apache.org/incubator/bifromq/4.0.0-incubating/(来源:GitHub API releases/latest,2026-10-18 查询) |
| 项目状态 | Apache 孵化器(Incubating)项目,版本号沿用孵化前 3.3.x 版本线并升级为 4.0.0,官方发布说明明确该版本与此前非孵化版本不向后兼容,应视作大版本升级(来源:v4.0.0-incubating Release Notes) |
| 许可证 | Apache License 2.0(来源:GitHub 仓库 apache/bifromq License 字段,2026-10-18 查询) |
官方来源清单:
| 来源 | 链接 | 用途 |
|---|---|---|
| 官网 | https://bifromq.apache.org/ | 项目定位、特性总览 |
| 入门文档 | https://bifromq.apache.org/docs/get_started/intro/ | 简介、特性清单 |
| 安装文档 | https://bifromq.apache.org/docs/installation/intro/ | 运行环境、目录结构、环境变量 |
| 快速验证 | https://bifromq.apache.org/docs/get_started/quick_install/ | 快速安装与功能验证步骤 |
| GitHub 仓库 | https://github.com/apache/bifromq | 源码、Release Notes、活跃度 |
| 官方下载 | https://downloads.apache.org/incubator/bifromq/ | ASF 签名发布件 |
二、软件概述
Apache BifroMQ(Incubating)4.0.0-incubating 是一个基于 Java 的高性能、分布式 MQTT 消息中间件(MQTT Broker),原生内建多租户支持,面向大规模 IoT 设备接入与消息系统场景(来源:官方文档 Introduction,https://bifromq.apache.org/docs/get_started/intro/ ,2026-10-18 查询)。项目名称取自北欧神话中连接人间与神域的彩虹桥 Bifröst,寓意其作为系统间消息互通桥梁的定位。
- 当前版本:4.0.0-incubating(2026-01-28 发布;与 3.3.5 之前的非孵化版本不兼容,官方要求按大版本升级对待,来源:GitHub Release v4.0.0-incubating)。
- 定位:面向 IoT 工作负载的分布式 MQTT Broker,强调"原生多租户 + 内建分布式存储引擎、零第三方存储中间件依赖"。
- 许可证:Apache-2.0;运行环境:Java 17 或更高(来源:官方安装文档 Prerequisites)。
- 维护方:Apache 软件基金会孵化器项目;社区渠道包括 dev@bifromq.apache.org 邮件列表、GitHub Issues 与 Discord(来源:官方文档 Community 一节)。
三、核心架构
BifroMQ 采用存算一体的分布式对等架构,无中心 Master 节点,官方仓库将其特性概括为"decentralized cluster(去中心化集群)"。其核心设计要点如下(来源:官网特性区与 GitHub Release Notes,2026-10-18 查询):
- 工作负载角色拆分:4.0.0 引入独立工作负载集群(Independent Workload Cluster, IWC)部署模式,允许 MQTTServer、DistService、InboxService、RetainService、SessionDictService、APIServer 六类服务角色按需拆分为独立集群运行,实现弹性伸缩与资源隔离(来源:v4.0.0-incubating Release Notes "Independent Workload Cluster" 一节)。
- 内建分布式存储引擎:不依赖外部消息存储或 KV 存储中间件,官方自研面向 MQTT 工作负载优化的存储引擎,覆盖订阅关系(Inbox)、保留消息(Retain)等数据。4.0.0 对
base-kv、base-rpc、base-cluster、base-crdt、base-scheduler等基础组件做了重构与优化(来源:v4.0.0-incubating Release Notes)。 - 多租户资源隔离:以租户(Tenant)为一等公民,支持租户级资源配额、负载隔离与租户级运行时设置,避免单一租户的大流量影响其他租户(来源:官方文档特性清单)。
- 扩展机制(SPI/插件):支持认证、授权、事件、系统/租户级监控指标的扩展点;4.0.0 新增 ClientBalancer 插件以自定义客户端连接负载均衡策略,并提供集群拓扑巡检、RPC 流量治理、StoreBalancer 管理等新运维 API(来源:v4.0.0-incubating Release Notes)。
四、功能特性
以下特性清单引自官方文档(https://bifromq.apache.org/docs/get_started/intro/ ,2026-10-18 查询):
- 完整支持 MQTT 3.1、3.1.1 与 5.0,传输覆盖 TCP、TLS、WS(WebSocket)、WSS。
- 原生多租户:资源分享与工作负载隔离内建于架构。
- 内建面向 MQTT 工作负载优化的分布式存储引擎,无第三方存储中间件依赖。
- 扩展机制覆盖:
- 认证/授权(Authentication/Authorization);
- 租户级客户端负载均衡(Tenant-level Client Balancing);
- 租户级资源限流(Tenant-level Resource Throttling);
- 租户级运行时设置(Tenant-level Runtime Setting);
- 事件与监控(Event、系统/租户级 Metrics)。
工程配套方面:安装目录提供 plugins 目录,以 pf4j 兼容格式装载插件;启动脚本支持 MEM_LIMIT、JVM_HEAP_OPTS、JVM_GC_OPTS 等环境变量做运行时定制(来源:官方安装文档 Installation Overview)。
五、快速上手(引自官方文档,未本地实测)
环境要求:Java 17+(来源:https://bifromq.apache.org/docs/installation/intro/ Prerequisites)。
获取与目录结构:从官方下载页获取 4.0.0-incubating 二进制包并解压。安装目录结构如下(引自官方安装文档):
| 目录 | 说明 |
|---|---|
bin | 启动与管理 BifroMQ 的可执行脚本 |
conf | 定制 BifroMQ 行为的配置文件 |
lib | 运行所需的程序库 |
plugins | pf4j 兼容格式的 BifroMQ 插件 |
data | 用户持久化数据 |
logs | 日志文件 |
关键环境变量(引自官方安装文档):DATA_DIR(数据目录,默认 ./data)、LOG_DIR(日志目录,默认 ./logs)、MEM_LIMIT(内存上限)、JVM_HEAP_OPTS/JVM_GC_OPTS/JVM_PERF_OPTS(JVM 调优)、JAVA_HOME。
功能快速验证(步骤引自官方 Quick Verify,https://bifromq.apache.org/docs/get_started/quick_install/ ):
- 下载并安装 MQTTX 桌面工具(https://mqttx.app/ );
- 新建连接:Host 按协议填写
mqtt://<HOST>(TCP)/mqtts://<HOST>(TLS)/wss://<HOST>,端口对应 TCP1883、TLS/SSL1884、WSS443; - MQTT 版本可选 3.1、3.1.1 或 5.0,连接后新建订阅(New Subscription);
- 在同一主题上以 QoS 0 发布一条消息,界面中能看到消息回显即验证通过。
六、适用场景与限制
适用场景(基于官方定位与特性推导,均出自上文引用的官方资料):
- 大规模 IoT 设备接入:MQTT 3.1/3.1.1/5.0 全特性支持,面向海量连接设计。
- 多租户 SaaS 化 IoT 平台:租户级隔离、限流与运行时设置为内建能力,无需自行改造。
- 希望简化部署栈的团队:内建存储引擎省去独立部署存储中间件的运维成本。
- 需要深度定制的场景:认证、授权、均衡策略、监控事件均有官方扩展点。
限制与注意(来源均为官方资料,2026-10-18 查询):
- 仍在 Apache 孵化器阶段,4.0.0-incubating 与历史版本不向后兼容,升级需按大版本迁移评估(来源:Release Notes)。
- 需要 Java 17+ 运行环境;性能与容量规划依赖
MEM_LIMIT与 JVM 参数调优(来源:安装文档)。 - 作为孵化期项目,生态插件与第三方集成资料相对有限,官方文档目前以入门、安装与扩展机制为主。
- 官方 Quick Install 首选路径提供的是轻量运行时拉起方式,二进制/包管理安装的公开资料较少,传统运维团队需自行评估落地路径。
七、同类选型对比
对比对象为 MQTT Broker 及相邻消息中间件:EMQX、Eclipse Mosquitto、NATS。GitHub 活跃度数据查询日期为 2026-10-18(来源:GitHub API 对应仓库;Mosquitto 星数取自第三方 ecosyste.ms 快照;EMQX 最新版为其 GitHub Releases 页 latest 记录 6.3.2,2026-10-16 发布;Mosquitto 最新版为官方博客 2026-02-04 发布的 2.1.1)。
| 维度 | Apache BifroMQ 4.0.0 | EMQX 6.x | Eclipse Mosquitto 2.1.1 | NATS Server |
|---|---|---|---|---|
| 许可证 | Apache-2.0 | GitHub 仓库 License 字段为 Other/NOASSERTION(开源版与商业版并存) | EPL/EDL 双许可(来源:EMQ 官方对比博客对 Mosquitto 许可的描述) | Apache-2.0 |
| 语言 | Java 17+ | Erlang | C/C++,单线程架构(来源:EMQ 官方对比博客) | Go |
| 社区活跃度 | 803 stars / 99 forks(apache/bifromq) | 12,435 stars / 2,096 forks(emqx/emqx) | 约 9.1k stars(ecosyste.ms 快照) | 17,562 stars / 1,602 forks(nats-io/nats-server) |
| 最近发版 | 4.0.0-incubating(2026-01-28) | 6.3.2(2026-10-16) | 2.1.1(2026-02-04) | 以 GitHub Releases 页为准 |
| 多租户 | 原生内建,租户级隔离/限流/配置 | 企业版能力为主 | 无原生多租户 | 非 MQTT 语义,账户/权限体系 |
| 存储依赖 | 内建分布式存储引擎,零外部依赖 | 内建 + 可选外接 | 轻量内建持久化 | 内建(JetStream 流存储) |
一句选型建议:需要原生多租户、全栈自包含且接受孵化期项目风险的 Java 技术栈团队,BifroMQ 4.0.0 值得试点;追求成熟生态、大规模生产验证与商业支持,选 EMQX;边缘/资源受限设备上的轻量网关选 Mosquitto;若只需云原生消息总线而非严格 MQTT 语义,NATS 更轻。
八、参考链接
- 官网:https://bifromq.apache.org/
- 项目介绍(Introduction):https://bifromq.apache.org/docs/get_started/intro/
- 快速安装与验证:https://bifromq.apache.org/docs/get_started/quick_install/
- 安装总览(环境要求/目录/环境变量):https://bifromq.apache.org/docs/installation/intro/
- GitHub 仓库:https://github.com/apache/bifromq
- Release v4.0.0-incubating:https://github.com/apache/bifromq/releases/tag/v4.0.0-incubating
- ASF 官方下载目录:https://downloads.apache.org/incubator/bifromq/4.0.0-incubating/
- dev 邮件列表:https://lists.apache.org/list.html?dev@bifromq.apache.org