暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

EMQX 跨域集群:连接三大洲,横跨 12,600 公里的数据纽带

EMQX 2024-07-18
118

作为一个创新架构,EMQX 跨域集群(EMQX Geo-Distribution)允许部署在不同地区或云上的 EMQX 作为一个单集群一起工作。通过跨域集群,单一地理位置的限制被打破,企业可以建立一个跨多云的全球 MQTT 接入网络,让 MQTT 消息得以在不同地区的节点之间自动同步和传输。我们甚至可以在不同大洲的多个数据中心部署 EMQX 集群,不管所处的物理位置在哪里,设备和应用都能从最近的节点接入实现相互通信。
跨域集群的主要优势如下:
  • 提高系统可靠性:通过地理冗余,即使部分地区出现故障,整体服务也不会中断。
  • 增强系统扩展性:可以根据用户需要增加或减少集群节点,以适应不同的负载需求。
  • 简化数据处理:MQTT Streams 等扩展能力使得数据处理更加高效和统一。
  • 降低运营成本:通过减少对单一地理位置的依赖,可以有效降低硬件和维护成本。


跨域集群面临的挑战


然而,任何分布式部署都会带来成本,跨域集群也有着不可避免的问题。
  • 实例之间网络连接速度慢
比起同一实例上 CPU 核心之间的通信延迟以纳秒计,多实例之间通过网络连接,其速度要慢得多。实例之间的距离越远,网络延迟就越高,这是物理定律使然,我们只能在某些方面做出妥协。如果用户希望更靠近某些客户端「可能在澳大利亚也可能在巴西」,那么有些 EMQX 节点之间的距离必然会增加,导致它们之间的通信速度变慢,在这种情况下,延迟可能会增加到几十毫秒。
  • 跨域连接的网络可靠性差
两个 EMQX 节点之间距离越远,中间需要经过的网络设备和传输电缆就越多,出现故障的几率就越大。数据包会丢失,连接会因网络拥塞、硬件故障、配置错误、甚至恶意活动而中断……虽然其中一些问题可以通过网络协议栈处理,只会表现为有较高的延迟,但仍有些问题会直接影响到应用层,带来许多不确定性。在出现这种部分故障时,EMQX 节点无法判断是某个远程节点宕机还是网络异常,会导致可用性降低。
  • 系统吞吐量受到严重影响
除延迟外,我们还需要考虑吞吐量的问题。虽然高延迟网络也可以具有很高的吞吐量,但网络的不可靠性会严重影响高吞吐量的实现。例如:在 TCP 连接中,即使是单个数据包丢失也会显著降低吞吐量,因为 TCP 协议栈需要重新传输数据包,并大幅缩小传输窗口,通信双方距离越远,这种情况发生的频率就越高。
事实上,对许多客户端来说,通过 MQTT 协议进行各种操作的吞吐量更为重要。例如:消息发布的吞吐量或 SUBSCRIBE
 操作的吞吐量。
这正是共享状态发挥作用的地方,由于 MQTT 协议的异步特性,客户端相对独立,共享状态的问题并不明显,但它依然存在。


一个跨越 12600 公里的集群


针对更广泛的部署场景,EMQX 5.0 版本采用了新的部署模型,即集群由核心节点和复制节点两种类型组成,由核心节点负责管理共享状态的关键部分,而复制节点则只复制核心节点的状态更改,不参与状态管理。
为了便于大家理解,我们设置了一个跨越 12600 公里,由分布在三个大洲的三个核心节点所组成的集群。
基于 EMQX 5.0 在集群架构、主题索引设计、批量同步等方面进行的优化,我们分享了在新的核心-复制「Core-Replicant」架构下,提升多区域 EMQX 集群性能的经验和建议;讨论了异步 MQTT 桥接器和集群链接等方案的优缺点;介绍了即将上线的新功能——集群链接「Cluster Linking」的应用价值。期望能帮助用户在可接受的延迟范围内,最大化系统的性能和可靠性。
点击阅读原文,一同见证「跨越 12600 公里」的集群挑战。



点击“阅读原文”,了解更多




文章转载自EMQX,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论