Skip to content

Latest commit

 

History

History
133 lines (87 loc) · 4.48 KB

README.zh_Hans.md

File metadata and controls

133 lines (87 loc) · 4.48 KB

BifroMQ

English | 中文简体


BifroMQ 是一个高性能且支持分布式的 MQTT Broker 实现,它原生支持多租户,专为构建大规模 IoT 设备连接与消息系统而设计。目前,它已成为百度 IoTCore云服务的核心技术。

特性

  • 完整支持 MQTT 3.1/3.1.1/5.0 的所有特性,包括可通过TCP, TLS, WS, WSS的方式访问
  • 原生支持多租户资源共享和工作负载隔离
  • 内置存储引擎,针对关键负载定向优化,无第三方中间件依赖。
  • 扩展机制支持:
    • 认证/授权 (Authentication/Authorization)
    • 租户级运行时设置 (Runtime Setting)
    • 租户级资源限制 (Resource Throttling)
    • 事件 (Event)
    • 系统/租户级别的监控 (System/Tenant-level Monitoring)

文档

您可以在官方网站上查看文档。 此外,欢迎您在GitHub仓库中贡献文档。

开始使用

Docker

docker run -d -m <MEM_LIMIT> -e MEM_LIMIT='<MEM_LIMIT_IN_BYTES>' --name bifromq -p 1883:1883 bifromq/bifromq:latest

<MEM_LIMIT><MEM_LIMIT_IN_BYTES>替换为 Docker 进程的实际内存分配,例如,使用2G替换<MEM_LIMIT>,使用 2147483648 替换<MEM_LIMIT_IN_BYTES>。如果未指定这些值,BifroMQ 默认使用宿主服务器的物理内存来确定JVM参数。这可能导致 Docker 进程被宿主机的OOM Killer终止,更多供信息参考

从源码构建

预备条件

  • JDK 17+
  • Maven 3.5.0+

获取源码并构建

将仓库克隆到您的本地工作空间:

cd <YOUR_WORKSPACE>
git clone https://github.com/baidu/bifromq bifromq

进入项目文件夹,执行以下命令来构建整个项目:

cd bifromq
mvn wrapper:wrapper
./mvnw -U clean package

构建输出包括位于/build/build-bifromq-starters/target/下:

  • bifromq-<VERSION>-windows-standalone.zip
  • bifromq-<VERSION>-standalone.tar.gz

运行测试

在项目根文件夹执行以下命令来运行所有测试用例,包括单元测试和集成测试。 注意:测试可能需要一些时间来完成

mvn test

快速开始

要快速启动一个 BifroMQ 单机服务器,请先将 bifromq-xxx-standalone.tar.gz 文件解压到某个目录中。解压后的目录结构如下所示:

|- bin
|- conf
|- lib
|- plugins

然后,在 bin 目录下执行以下命令:

  • 启动服务器

    ./standalone.sh start // 这将会在后台启动服务进程
    
  • 停止服务器

    ./standalone.sh stop
    

配置文件 standalone.yml 位于 conf 目录下。大多数配置项的名称都是自解释的,容易理解其功能。默认情况下,单机服务器会将持久化数据保存在 data 目录中。

集群部署

BifroMQ支持两种集群部署模式:标准集群(Standard Cluster)独立工作负载集群(Independent-Workload Cluster)

标准集群

标准集群部署模式适用于需要可靠性和可扩展性的小型到中型生产环境。 它由几个完全功能的Standalone节点组成,共同作为一个逻辑 MQTT Broker 实例,确保高可用性。 你也可以通过添加更多的节点来扩大并发 MQTT 连接的工作负载,而在这种模式下,某些类型的消息相关的工作负载并不是水平可扩展的。

独立工作负载集群

独立工作负载集群部署模式旨在构建大规模的,多租户的 Serverless 集群。在这种模式下,集群由几个专门的子集群组成,每个子集群都专注于一个特定的'独立类型'的工作负载。这些子集群共同协作形成一个逻辑的 MQTT Broker 实例。这是最复杂的部署模式,需要额外的非开源协作组件。如需商业支持,请随时与我们联系。

讨论

微信群

如果你对我们的项目感兴趣,你可以加入我们的微信群。

通过电子邮件 向我们联系,告知您的WeChat ID,以及"为什么您对 BifroMQ 感兴趣" 的更多信息(我们很乐意听到),我们将尽快邀请您加入我们的群组。

Discord

或加入我们的 Discord 群组(英文)

BifroMQ Discord server