跳到主要内容

4 篇带有 “技术深入分析” 标签的帖子

查看所有标签

使用 Native MQTT 服务数百万客户端

·阅读时长 24 分钟

RabbitMQ 的核心协议一直是 AMQP 0.9.1。为了支持 MQTT、STOMP 和 AMQP 1.0,broker 通过其核心协议进行透明代理。虽然这是一种用更多消息协议扩展 RabbitMQ 支持的简单方法,但它会降低可扩展性和性能。

在过去的 9 个月里,我们重写了 MQTT 插件,使其不再通过 AMQP 0.9.1 进行代理。相反,MQTT 插件解析 MQTT 消息并将它们直接发送到队列。这就是我们所说的 Native MQTT

结果非常惊人

  1. 在大量连接的情况下,内存使用量最多可降低 95%,并节省数百 GB。
  2. RabbitMQ 首次能够处理数百万个连接。
  3. 端到端延迟降低了 50% - 70%。
  4. 吞吐量提高了 30% - 40%。

Native MQTT 将 RabbitMQ 转变为 MQTT 代理,为更广泛的物联网用例打开了大门。

Native MQTT 在 RabbitMQ 3.12 中发布。

仲裁队列如何在本地交付消息,同时仍然提供排序保证

·阅读时长 17 分钟
Jack Vanlightly

最近有人问到,仲裁队列在可能的情况下会从本地队列副本(leader 或 follower)传递消息,那么它们是否以及如何提供与经典队列相同的消息排序保证。镜像队列始终从 master(leader)传递消息,因此从任何队列副本传递消息听起来可能会影响这些保证。

这就是本文的主题。请注意,这篇文章是为好奇者和分布式系统爱好者准备的技术深入分析。我们将探讨仲裁队列如何在不额外协调(Raft 之外)的情况下,从任何队列副本(leader 或 follower)传递消息,同时保持消息排序保证。

© . All rights reserved.