BifroMQ-v2.0.0 发布:支持标准集群模式(StandardCluster)


百度天工 AIoT 团队在 2023 年 7 月正式宣布开源高性能分布式MQTT物联网消息中间件,并将其全新命名为 BifroMQ。历时三个月,BifroMQ-v2.0.0 版本现已发布。

新版本首次支持集群模式,官方将其称为标准集群 StandardCluster(简称 StandardCluster)。主要有以下特性:

  • 集群模式全面支持 MQTT 协议:在集群模式下,每个节点均具备完整的 MQTT 协议功能,提供更高的可用性和扩展性。
  • 新增 HTTP API 支持:除 MQTT外,本版本新增对 HTTP API 的支持,更加灵活多变。
  • 高性能不减:专注于在大规模负载环境下的高性能 MQTT 协议。
  • 模块化架构进一步优化:适应各种业务需求的分布式集群管理。
  • 强力可扩展性:目标支持大规模多租户的 Serverless 云服务。

BifroMQ 的集群架构解析

StandardCluster 的整体结构

BifroMQ 将逻辑上的 MQTT 功能从负载的角度分解为若干子服务,每个子服务对应一类关键负载:

  • bifromq-mqtt:负责 MQTT 协议连接负载
  • bifromq-dist:负责订阅和消息路由分发负载
  • bifromq-inbox:负责持久会话中的离线消息队列负载
  • bifromq-retain:负责 Retain 消息存取负载

从部署的角度出发,BifroMQ StandardCluster是将这些独立负载的服务模块"封装"到一个节点服务进程的集群模式,从逻辑上来说,此为 Standalone 运行模式的抽象(BifroMQ Standalone 可以看作是单个节点的 BifroMQ StandardCluster)。与其他支持集群的 MQTT Broker 不同,BifroMQ 内置分布式持久化功能,因此单个 BifroMQ 节点是"有状态的"(Stateful)。

消息分发能力的水平扩展

在 StandardCluster 集群模式下,每个节点进程内的分发负载模块( 简称 Dist Service )构成逻辑上的负载子集群(Dist-SubCluster)。Dist Service 将订阅信息存储在内置的持久化引擎中,并通过持久化引擎的分布式功能在节点之间同步路由信息。公告称,在 StandardCluster 模式下,通过增加节点的方式,即可以实现消息分发能力的水平扩展,特别是在 CleanSession 为 True 的情况下。

离线消息队列的持久化、扩展性及高可靠性

与 Dist Service 模块类似,节点进程内负责 MQTT 持久会话中离线消息队列的 Inbox Service 模块构成了另一个逻辑上的负载子集群(以下简称Inbox-SubCluster)。Inbox Service 将离线队列消息持久化到内置的存储引擎中,可以极大程度地减少因节点故障导致的数据丢失。在存储方面,Inbox Service 利用内置存储引擎的分片功能,在实现存储规模和处理能力水平扩展的同时,通过静态配置或运行时策略动态增加分片的副本数,可以进一步提高离线消息数据的可靠性,这对某些对数据可靠性要求更高的应用场景尤为重要。

Inbox服务的基于负载的拆分策略

如前文所述,在StandardCluster 部署下,单个节点进程内的 Inbox Service 利用了内置存储引擎的分片功能来实现存储规模和处理能力的水平扩展。然而,分片策略对实际运行效果有着决定性的影响。在 BifroMQ StandardCluster 版本中,已内置开箱即用的基于负载的拆分策略(以下简称Load-based Splitting)。该策略通过统计最近一段时间内的负载情况来决定对KV Range的划分,可以视为一种"后验"拆分策略。当使用场景已经对离线消息负载的分布有提前规划和了解时,提前划分 Range 往往能在负载到来时带来更稳定的性能表现,而对于深度使用 BifroMQ 的用户,可以通过 SPI 机制实现此类"先验"拆分策略。

HTTP API 模块

BifroMQ StandardCluster 版本同时引入了 HTTP API 功能,每个集群节点均可通过配置开放 API 访问端口。BifroMQ HTTP API 作为无状态的全局接口,旨在支持业务层面的管理控制逻辑集成,访问任何一个节点的 API 都可以实现对整个集群的操作。

混合负载对性能的影响

在 StandardCluster 部署下,单个节点具备完整的 MQTT 协议功能,承担各种类型的负载。因此,这种模式非常适用于以下两类企业级应用场景:

  • 业务产生的负载类型相对单一
  • 业务产生的负载类型多元化,但产生时间相对分散。对于负载形式复杂且在时间维度上有集中产生的情况,官方建议用户通过模拟负载测试来获得单个 BifroMQ StandardCluster 集群下的最佳资源配置和参数设置,或者考虑使用多个 BifroMQ StandardCluster 来承载不同类型的业务负载。

简单部署和简化运维

BifroMQ 集群建立在一套内置的去中心化技术之上(base-cluster),无需依赖外部节点注册和发现服务。因此,构建 BifroMQ StandardCluster 的部署过程非常简单,只需指定任何一个集群中的节点作为种子节点,即可完成新节点的加入。此外,BifroMQ 还内置了集群分裂后的自愈能力,可以极大地简化出现网络分区(Network Partition)等故障时的运维操作。


相關推薦

2023-11-17

版本,新版本首次支持集群模式,我们将其称为标准集群StandardCluster(以下简称StandardCluster)。新版本主要有以下特性:   🌍 集群模式全面支持 MQTT 协议:在集群模式下,每个节点均具备完整的 MQTT 协议功能,提供更高的

2023-03-04

OpenSearch 2.6 已正式发布。此版本新增了按照 OpenTelemetry 标准构建的数据模式 (data schema),为分析和可观察性用例的未来功能进行了铺垫。此外还升级了索引管理、改进了安全分析工作负载的威胁检测,并为可视化工具、机器学习

2023-03-25

存储引擎、日志引擎、Kube等。 2022年1月,PolarDB-X 正式发布 2.0.0 版本,继 2021 年 10 月 20 号云栖大会正式开源后的第一次版本更新,更新内容包括新增集群扩缩容、以及binlog生态兼容等特性,兼容 maxwell 和 debezium 增量日志订阅

2023-09-07

是对BifroMQ技术架构的整体介绍。请期待我们将在接下来发布的一系列专题文章中,深入探讨BifroMQ的各个组件和设计原则。 最后,为了帮助大家更好地了解BifroMQ的技术架构,我们将于9月21日(周四)举办一场BifroMQ线上直播公开

2023-09-14

商业化产品作为 TDMQ 产品家族的新成员在本次大会上重磅发布。 TDMQ RocketMQ 版是一款分布式高可用的消息队列服务,兼容 Apache RocketMQ 的各个组件与概念,支持开源客户端零改造接入,同时具备计算存储分离,灵活扩缩容的底

2023-03-28

5000万元人民币。   在 OSCHINA 和 Gitee 今年联合发布的《2022 中国开源开发者报告》中,我们也有幸邀请到了袁进辉在 “前沿开源技术领域解读” 栏目就“开源 AI”进行深度剖析。他提到,开源模式使得 AI 标准化和规

2024-02-15

5,300+ 拉取请求 2,300+ 问题 230+ 贡献者 131 个发布版本 15 个公开生产用户 2800+位于#strimzi CNCF Slack 频道的用户 由于使 Apache Kafka 在 Kubernetes 上以“云原生”方式运行的能力,Strimzi 与其他 CNCF 项目集成,包括 Pr

2023-09-06

化加速问题,做好智慧健康养老产业发展引导规范工作,发布智慧健康养老产品和服务推广目录,开展智慧健康养老应用试点示范,持续提高试点示范工作规范化体系化水平。 2.培育壮大新增长点。 虚拟现实。落实《虚拟现

2022-11-05

2022年云栖大会上,PolarDB-X 发布2.2.0版本,这是一个重要的里程碑版本,重点推出符合分布式数据库金融标准下的企业级和国产化适配,共包括八大核心特性,全面提升 PolarDB-X 分布式数据库在金融、通讯、政务等行业的普适性。

2022-10-30

CosId 通用、灵活、高性能分布式 ID 生成器       更新内容( v2.0.0-RC1) 🎉 🎉 🎉 🔨 依赖更新 适配 org.springframework.boot:spring-boot-dependencies 3.0.0-RC1 代码基线升级到 Java 17 (Spring boot

2024-08-10

标准化协会大数据技术标准推进委员会(CCSA TC601)重磅发布了《中国数据库产业图谱(2024)》,该图谱旨在全面客观展现我国数据库产业中的关键领域、环节和代表企业。SelectDB 作为全球最受技术人员认可的分析型数据库之一

2024-07-10

用参数 支持 支持 通知公告 系统通知公告信息发布维护 支持 支持 操作日志 系统正常操作日志记录和查询 系统异常信息日志记录和查询 支持 支持 登录日志 系统登录日志记录查询包含登录异常 支

2022-05-21

部分,PostgreSQL 在 2012 年曾增加了对 JSON 的支持。五年后发布的 SQL/JSON 标准指定了用于访问和操作存储在关系数据库中的 JSON 数据的各种接口。PostgreSQL 15 在其现有的对 SQL/JSON 路径语言的支持的基础上,加入了更多标准的 SQL/JSON

2023-06-09

配,已适配约27万兼容适配组合(截至2023/5/31)。在最新发布的1060版本中,重点对云组件进行了版本升级和兼容,例如: OpenStack:新增支持Victoria版本 Ceph:支持12/14/16版本 Docker:ISO集成版本更新至20.10.7 RunD:新增适配kat