MQTT 与 Kafka 是完全不同的两个东西, MQTT 是协议,是一个技术标准,由 OASIS 技术委员会的成员(其成员多数为 IBM 和微软的顶级工程师)制订。而 Kafka 是已经实现的开源流处理平台,最早由 LinkedIn 开发,于2011年开源后交给 Apache Incubator 孵化后成为了 Apache 软件基金会的顶级项目。

◆◆ 两者之前唯一存在的联系恐怕就是它们都和发布/订阅范式有关了吧。MQTT 是基于发布/订阅范式的消息协议,而 Apache Kafka 的生产、消费的流程也是属于发布/订阅范式的。那么如果我们基于 MQTT 协议去实现一个消息 broker ,是否这个 MQTT broker是否能和 Kafka 作用等价呢? 答案当然是否定的!

◆◆ Kafka 虽然也是基于发布订阅范式的消息系统,但它同时也被称为“分布式提交日志”或者“分布式流平台”,它的最主要的作用还是实现分布式持久化保存数据的目的。Kafka 的数据单元就是消息,可以把它当作数据库里的一行“数据”或者一条“记录”来理解,Kafka 通过主题来进行分类,Kafka的生产者发布消息到某一特定主题上,由消费者去消费特定主题的消息,其实生产者和消费者就可以理解成发布者和订阅者,主题就好比数据库中的表,每个主题包含多个分区,分区可以分布在不同的服务器上,也就是说通过这种方式来实现分布式数据的存储和读取, Kafka分布式的架构利于读写系统的扩展和维护(比如说通过备份服务器来实现冗灾备份,通过架构多个服务器节点来实现性能的提升),在很多有大数据分析需求的大型企业,都会用到 Kafka 去做数据流处理的平台。

◆◆ 而 MQTT 最开始就是为物联网设备的网络接入而设计的,物联网设备大多都是性能低下,功耗较低的计算机设备,而且网络连接的质量也是不可靠的,所以在设计协议的时候最需要考虑的几个重点是: 协议要足够轻量,方便嵌入式设备去快速地解析和响应。 具备足够的灵活性,使其足以为 IoT 设备和服务的多样化提供支持。 应该设计为异步消息协议而非同步协议,这么做是因为大多数 IoT 设备的网络延迟很可能非常不稳定,若使用同步消息协议,IoT 设备需要等待服务器的响应,对于为大量的 IoT 设备提供服务这一情景,显然是非常不现实的。 必须是双向通信,服务器和客户端应该可以互相发送消息。

◆◆ MQTT 协议完美地解决了上述几点要求,并且最新版的 MQTT v5.0 协议做了很多优化,使其协议相比过去的 v3.1.1 版本具备更强大的灵活性以及对带宽的更少占用。

◆◆ 要说基于 MQTT 协议的消息 broker 和 Kafka 的区别的话,EMQ 君认为还是在于它们的侧重点不同,Kafka 的侧重点在于数据的存储和读取,针对实时性比较高的流式数据处理场景;而 MQTT broker 的侧重点在于客户端和服务器的通信。

◆◆ MQTT broker 与 Kafka 所采用的消息交换范式是如此相近,将其两者结合起来使用显然是一个非常不错的主意,事实上,很多 MQTT broker,诸如 EMQ X 已经实现了 MQTT broker 与 Kafka 的桥接。MQTT broker 用来快速的对大量物联网设备发来的消息做接收处理响应,而 Kafka 对这些大量的数据做采集存储,交给数据分析人员来分析处理消息。

转载于:https://juejin.im/post/5c9b23645188252dab3ecbb0

MQTT 与 Kafka相关推荐

  1. tcp实时传输kafka数据_将物联网数据和MQTT消息流式传输到Apache Kafka

    Apache Kafka是一个实时流媒体平台,在大型和小型组织中得到广泛采用.Kafka的分布式微服务架构和发布/订阅协议使其成为在企业系统和应用程序之间移动实时数据的理想选择.据一些人称,超过三分之 ...

  2. Kafka消息中间件(Kafka与MQTT区别)

    文章目录 Kafka Kafka重要原理 Topic 主题 Partition 分区 Producer 生产者 Consumer 消费者 Broker 中间件 Offset 偏移量 Kafka与mqt ...

  3. MQTT 协议基本介绍

    目录 一.简介 二.基本特点 三.基本概念 四.简单示例 五.进一步了解MQTT 3 六.MQTT协议的工作方式 七.MQTT控制报文 CONNECT报文 CONNACK报文 八.清除会话.保留消息和 ...

  4. 「物联网架构」MQTT 传感器数据流异常检测的深度学习KSQL UDF

    用于传感器分析的KSQL UDF.利用KSQL的新的API特性,用Java轻松地构建UDF / UDAF函数,从而使用Apache Kafka进行连续流处理.用例:联网汽车--使用深度学习的实时流媒体 ...

  5. 触手可得的云原生 | 阿里云中间件发布多项新功能

    2019独角兽企业重金招聘Python工程师标准>>> 3月21日,在阿里云峰会·北京企业级互联网架构专场的现场,阿里云中间件 PaaS 平台的多项新功能重磅发布 ,覆盖应用服务管理 ...

  6. 技术盘点:消息中间件的过去、现在和未来

    作者介绍:林清山(花名:隆基) 操作系统.数据库.中间件是基础软件的三驾马车,而消息队列属于最经典的中间件之一,已经有30多年的历史.其发展主要经历了以下几个阶段: 第一个阶段,2000年之前. 80 ...

  7. 阿里云 EventBridge 事件驱动架构实践

    作者:周新宇 审核&校对:白玙.佳佳 编辑&排版:雯燕 本文内容整理自 中国开源年会 演讲 首先做一个自我介绍,我是 RocketMQ 的 PMC member 周新宇,目前负责阿里云 ...

  8. RabbitMQ 学习笔记

    RabbitMQ 学习笔记 RabbitMQ 学习笔记 1. 中间件 1.1 什么是中间件 1.2 为什么要使用消息中间件 1.3 中间件特点 1.4 在项目中什么时候使用中间件技术 2. 中间件技术 ...

  9. 技术干货丨摄像头管理功能架构,EdgeX ONVIF/USB 管理和推理平台

    关于2022 EdgeX中国挑战赛 2022 EdgeX中国挑战赛暨中关村国际前沿科技创新大赛EdgeX专题赛正式拉开帷幕.大赛由北京市科委.中关村管委会指导,由Linux基金会主办,由阿里云.百度智 ...

最新文章

  1. 操作系统常用词典(一)
  2. 了解下C# 类(Class)
  3. hdu-3625 Examining the Rooms(斯特灵数第一类)
  4. ORACLE性能优化救生指南_21章 重做和归档的优化
  5. CG-CTF-Web-COOKIE
  6. python自动写作软件_有哪些适合长文的轻量级写作软件值得推荐?
  7. Python熊猫– GroupBy
  8. 将本地项目上传到码云(gitee)远程仓库
  9. 【记录】Docker安装后出现 Cannot connect to the Docker daemon
  10. python实操案例_python实战案例分享 - 讲师
  11. python中pyserial模块使用方法
  12. 用电脑怎么录制游戏视频
  13. GAMES101现代计算机图形学入门-闫令琪-随堂笔记-Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)
  14. android 11.0 12.0去掉前置摄像头闪光灯功能
  15. python 操作微信_利用 Python 实现微信半自动化操作
  16. ACID特性的实现原理与MySQL事务的关系
  17. 编程初学者为什么要选择python语言,哪些人群适合使用python
  18. 计算机cpu的字母,CPU编号中的字母 你了解多少?
  19. linux开发板设置时间,开发板上修改时间方法
  20. 计算机硬盘没内存怎么办,电脑磁盘内存空间不足怎么办

热门文章

  1. latex 下划线_Vim Latex 的使用和配置技巧 (三): 用 snippet 编辑 latex
  2. 检查集群状态命令_巨杉数据库SequoiaDB巨杉Tech | 四步走,快速诊断数据库集群状态...
  3. 智能调温需要哪些计算机知识,一种智能调温的计算机用鼠标的制作方法
  4. java如何给一个链表定义和传值_如何在CUDA中为Transformer编写一个PyTorch自定义层...
  5. bae 3.0 mysql_bae3.0 mysql 有时报错?报错-问答-阿里云开发者社区-阿里云
  6. jieba分词_自然语言NLP必备(1),jieba工具 5 行代码对整篇文章分词
  7. 【 MATLAB 】信号处理工具箱之fft简介及案例分析
  8. Virtex-6系列FPGA的CLB
  9. 《代码整洁之道》(Clean Code)- 读书笔记
  10. nodejs npm常用命令