StreamNative 宣布开源 MoP:Apache Pulsar 支持原生 MQTT 协议

我们很高兴地宣布 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)连接到数据的整合消息传递平台。

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/docs/en/client-libraries/

而且,该项目也支持 Java,Go,Python 和 C ++ 语言以及社区提供的第三方客户端。
https://pulsar.apache.org/docs/en/client-libraries/#thirdparty-clients

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 的服务流程。

  1. MQTT 客户端建立与 MoP Proxy 的连接。
  2. MoP Proxy 向 Pulsar 集群发送查找请求,确定当前 Topic 的 owner broker 的 URL 地址。
  3. Pulsar 集群将 owner broker 的 URL 地址返回给 MoP Proxy。
  4. MoP Proxy 建立与 Topic 所在的 owner broker 的连接,并开始在 MQTT 客户端和 Topic 所在的 owner broker 之间传输数据。

目前,MoP Proxy 以插件的方式与 Pulsar broker 一起运行。用户可以通过修改配置来开启 Proxy。

有关详细信息,可以参考:
https://github.com/streamnative/mop#how-to-use-proxy

开始使用 MoP

MoP 是一个开源项目,采用 Apache License V2。

下载 MoP 协议处理插件最新发布版本,开始使用 MoP 协议处理插件。
https://github.com/streamnative/mop/releases/

关于如何使用 MoP 协议处理插件,可以参考文档:
https://github.com/streamnative/mop/blob/master/README.md

如果在使用中遇到任何问题,可以在 MoP 仓库中提交 issue,我们会在第一时间回应。同时,我们也欢迎你为 MoP 贡献特性。
https://github.com/streamnative/mop/issues

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342