共计 3003 个字符,预计需要花费 8 分钟才能阅读完成。
咱们很快乐地发表 StreamNative 开源了“MoP”(MQTT on Pulsar)。MoP 将 MQTT 协定解决插件引入 Pulsar broker。这样一来,Apache Pulsar 就能够反对原生 MQTT 协定。
与 KoP 类似,MoP 是一种可插拔的协定解决插件。将 MoP 协定解决插件增加到现有 Pulsar 集群后,用户不必批改代码就能够将现有的 MQTT 应用程序和服务迁徙到 Pulsar。
这样 MQTT 应用程序就能够利用 Pulsar 的个性,例如 Apache Pulsar 计算和存储拆散的架构以及 Apache BookKeeper 保留事件流和 Pulsar 分层存储等个性。
什么是 Apache Pulsar
Apache Pulsar 是一个云原生的分布式消息传递和流数据平台,每天治理数千亿个事件。Pulsar 最后由 Yahoo 开发,于 2016 年底开源,并于 2018 年成为 Apache 软件基金会的顶级我的项目。Pulsar 将重要的 Yahoo 应用程序(例如 Yahoo Finance、Yahoo Mail 和 Flickr)连贯到数据的整合消息传递平台。
GitHub:https://github.com/apache/pulsar。
Pulsar 是一种多租户、高性能解决方案,用于在服务器之间传递音讯。Pulsar 反对以下要害个性:
- Pulsar 的单个实例原生反对多个集群,反对跨地区在集群间无缝复制音讯
- 极低的公布提早和端到端提早
- 反对扩大到数百万个 Topic
- 通过 Apache BookKeeper 提供的长久化音讯存储机制保障消息传递
目前,Apache Pulsar 曾经广泛应用于多个畛域。腾讯、Verizon Media、Splunk、中国移动、BIGO 等都在应用 Pulsar 来实现业务指标。
更多用户案例,能够参考:https://streamnative.io/blog。
什么是 MQTT
MQTT(Message Queuing Telemetry Transport,音讯队列遥测传输协定),是一种基于公布 / 订阅(pubish/subscribe)模式的 ” 轻量级 ” 通信协定。
该协定构建于 TCP/IP 协定之上,由 IBM 在 1999 年公布。MQTT 最大长处在于,它能够以极少的代码和无限的带宽,为连贯近程设施提供实时牢靠的音讯服务。作为一种低开销、低带宽占用的即时通讯协定,MQTT 在物联网、小型设施、挪动利用等方面失去广泛应用。
为什么须要 MoP
Apache Pulsar 为队列和流工作负载提供对立的音讯模型。Apache Pulsar 反对基于 protobuf 的二进制协定,以确保高性能和低提早。protobuf 有利于实现 Pulsar 客户端:https://pulsar.apache.org/doc…。
而且,该我的项目也反对 Java,Go,Python 和 C ++ 语言以及社区提供的第三方客户端:https://pulsar.apache.org/doc…。
Pulsar 反对多租户,基于 Apache BookKeeper 构建长久化机制。因而,越来越多的公司正在摸索应用 Pulsar 搭建其底层服务、转变业务架构。然而,想要采纳 Pulsar 的对立音讯协定,用户必须重写应用其余音讯协定编写的现有应用程序。
为了解决这个问题,StreamNative 始终致力于开发新我的项目。往年,StreamNative 开源了 KoP(Kafka-on-Pulsar)和 AoP(AMQP-on-Pulsar)协定解决插件,不便将应用 Kafka 和 AMQP 协定的应用程序和服务迁徙到 Pulsar。
- KoP 是一种可插拔的协定解决插件。将 KoP 协定解决插件增加到现有 Pulsar 集群后,用户不必批改代码就能够将现有的 Kafka 应用程序和服务迁徙到 Pulsar
- AoP 是一种可插拔的协定解决插件。将 AoP 协定解决插件增加到现有 Pulsar 集群后,用户不必批改代码就能够将现有的 RabbitMQ 应用程序和服务迁徙到 Pulsar
StreamNative 收到大量的用户申请,申请帮忙他们从 MQTT 迁徙到 Pulsar。同时,StreamNative 也意识到在 Pulsar 上原生反对 MQTT 音讯传输协定的必要性。所以,StreamNative 开始致力于将通用协定解决插件框架引入到 Pulsar 中。该框架容许应用 MQTT 传输协定的开发人员应用 Pulsar。
MoP 架构
MoP 是一个可插拔的协定解决插件。通过应用 Pulsar 的 Topic、Cursor 等个性,实现在 Pulsar 上反对原生 MQTT 协定。
下图展现了 MoP 协定解决插件与 Pulsar 集群的联合。MQTT Proxy 服务和 MQTT 协定解决插件都与 Pulsar broker 一起运行。
MoP 概念
音讯的服务质量
为了适应不同的场景需要,MQTT 协定反对以下三种 QoS 等级:
- QoS0:最多只发送一次音讯,或者当网络传送碰壁时,基本不发送音讯。也不会保留发送的音讯。
- QoS1:至多发送一次音讯。如果发送方没有收到确认包,则会再次发送加上 DUP 标记的音讯,直到发送方收到确认包。
- QoS2:只胜利发送一次音讯。音讯必须存储在发送方和接管方的本地环境中,直到被妥善处理。该 QoS 等级最高的音讯服务等级。
目前,MoP 协定解决插件只反对 QoS0 和 QoS1 级别的音讯服务质量。打算在将来版本中反对 QoS2。
MoP Proxy
在 MoP 中,MoP Proxy 是一个可选组件,次要用来代理 MoP 的服务。MoP Proxy 反对将 MoP 扩大至多个节点,以实现横向扩大服务。MoP Proxy 次要用于正确地转发 MQTT Client 和 Pulsar Broker 之间传递的音讯数据,因而 MQTT Client 只需连贯到 MoP Proxy,发送并接收数据,而无需关注 Topic 的所属 Pulsar Broker。
MoP Proxy 能够感知 Topic 所属 Pulsar Broker 的变动。一旦所属 Pulsar Broker 发生变化,MoP Proxy 能够将 MQTT Client 的网络数据包发送至新的所属 Pulsar Broker。
下图阐明了 MoP Proxy 的服务流程。
- MQTT 客户端建设与 MoP Proxy 的连贯。
- MoP Proxy 向 Pulsar 集群发送查找申请,确定以后 Topic 的 owner broker 的 URL 地址。
- Pulsar 集群将 owner broker 的 URL 地址返回给 MoP Proxy。
- MoP Proxy 建设与 Topic 所在的 owner broker 的连贯,并开始在 MQTT 客户端和 Topic 所在的 owner broker 之间传输数据。
目前,MoP Proxy 以插件的形式与 Pulsar broker 一起运行。用户能够通过批改配置来开启 Proxy。
无关详细信息,能够参考:https://github.com/streamnati…。
开始应用 MoP
MoP 是一个开源我的项目,采纳 Apache License V2。
下载 MoP 协定解决插件最新公布版本,开始应用 MoP 协定解决插件:https://github.com/streamnati…。
对于如何应用 MoP 协定解决插件,能够参考文档:https://github.com/streamnati…。
如果在应用中遇到任何问题,能够在 MoP 仓库中提交 issue,咱们会在第一工夫回应。同时,咱们也欢送你为 MoP 奉献个性:https://github.com/streamnati…。