kafka和mqtt的区别是什么?
两者都是从传统的Pub/Sub消息系统演化出来的,但是进化方向不一样,比较如下:
Kafka是为了数据集成的场景,
与以往Pub/Sub消息总线不一样,
通过分布式架构提供了海量消息处理、高容错的方式存储海量数据流、保证数据流的顺序等特性。
MQTT是为了物联网场景而优化,
不但提供多个QoS选项(exact once、at least once、at most once),
而且还有层级主题、遗嘱等等特性。
两者都是传统消息中间件与不同的业务场景结合的产物。
两者却可以结合起来使用,
比如用MQTT接受物联网设备上传的数据,然后接入Kafka,最后可以同时分发到HDFS归档、数据仓库做OLAP分析、Elasticsearch做全文检索,
这样的架构非常适合大型物联网项目,不但能够处理海量数据同时也具有很好的扩展性。
作者:张琪
链接:https://www.zhihu.com/question/30343125/answer/81954454
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
kafka和mqtt的区别是什么?的更多相关文章
- MQTT初始篇笔记整理
MQTT简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),基于TCP/IP 协议栈而构建,虽然叫消息队列遥测传输,但是她与消息队列毫无关系,她 ...
- kafka学习指南(总结版)
版本介绍 从使用上来看,以0.9为分界线,0.9开始不再区分高级/低级消费者API. 从兼容性上来看,以0.8.x为分界线,0.8.x不兼容以前的版本. 总体拓扑架构 从上可知: 1.生产者不需要访问 ...
- Kafka实战:如何把Kafka消息时延秒降10倍
背景 国内某大型税务系统,业务应用分布式上云改造. 业务难题 如上图所示是模拟客户的业务网页构建的一个并发访问模型.用户在页面点击从而产生一个HTTP请求,这个请求发送到业务生产进程,就会启动一个投递 ...
- kafka docker-composer.yml
使用Docker快速搭建Kafka开发环境 表现力 关注 0.5 2018.05.04 03:00* 字数 740 阅读 25240评论 1喜欢 11 Docker在很多时候都可以帮助我们快速搭建想 ...
- TICK技术栈(二)Telegraf安装及使用
1.什么是Telegraf? Telegraf是一个用Go语言开发的代理程序,可用于收集和报告指标.Telegraf插件直接从其运行的系统中获取各种指标,从第三方API中提取指标,甚至通过StatsD ...
- TICK技术栈(一)TICK技术栈介绍
1.什么是TICK技术栈? 1.1 简介 TICK 是由 InfluxData开发的一套开源工具栈,由 Telegraf, InfluxDB, Chronograf, Kapacitor 四个工具的首 ...
- Tapdata 实时数据中台在智慧教育中的实践
摘要:随着教育信息化的推进,智慧校园建设兴起,但在实施过程中面临数据孤岛.应用繁多.数据再利用等方面挑战,而 Tapdata 的实时数据中台解决方案,能够高效地解决智慧校园实施中的基础数据问题. ...
- Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 构建监控平台
完成一套精准,漂亮图形化监控系统从这里开始第一步 Telegraf是收集和报告指标和数据的代理 它是TICK堆栈的一部分,是一个用于收集和报告指标的插件驱动的服务器代理.Telegraf拥有插件或集成 ...
- Telegraf安装与介绍
Telegraf 是什么? Telegraf 是一个用 Go 编写的代理程序,是收集和报告指标和数据的代理.可收集系统和服务的统计数据,并写入到 InfluxDB 数据库.Telegraf 具有内存占 ...
随机推荐
- EasyNetQ WithTopic过滤失效的解决方案
RabbitMQ原理及教程:http://www.cnblogs.com/AlvinLee/p/6141834.html EasyNetQ是什么以及常见用法这里都不做讲解.可以参考这篇博文:http: ...
- 你真的了解interface和内部类么
java 访问控制符 private : 只能被当前类访问 protected : 可以被同包的类和任何子类访问(包内,包外) default : 可以被包内的任何内访问 public ...
- java线程学习第一天__低配版的卖面包机
package Thread;import javax.xml.bind.ValidationEvent;class snacks{ private int SaledSnacks=0; ...
- Javascript 基础知识2017-03-17
JavaScript语法 1.单行注释:// 多行注释:*/ 2.基本数据类型: int 整数型 (不等于四舍五入,把小数舍去) string 字符型 ...
- VS,连接到oracle 报要升级到8.多少版本的错
1:确定服务器的oracle版本 2:本地的客户端版本要和服务器一致 3:操作系统位数要一致
- 【Python】 发邮件用 smtplib & email
smtplib & email ■ 概述 发邮件主要用到smtplib以及email模块.stmplib用于邮箱和服务器间的连接,发送的步骤.email模块主要用于处理编码,邮件内容等等.主要 ...
- 【Python】 http客户端库requests & urllib2 以及ip地址处理IPy
requests requests是个HTTPClient库,相比于urllib,urllib2等模块比更加简洁易用 ■ get请求 作为示例,讲一下关于requests如何发起并处理一个get请求 ...
- [git 实践篇]如何创建公钥
如何创建公钥 首先启动一个Git Bash窗口(非Windows用户直接打开终端) 执行: cd ~/.ssh 如果返回"- No such file or directory", ...
- scrapy---callback 传递自定义参数
在scrapy提交一个链接请求是用 Request(url,callback=func) 这种形式的,而parse只有一个response参数,如果自定义一个有多参数的parse可以考虑用下面的方法实 ...
- webSocket通讯
1.使用facebook第三方SRWebSocket进行websocket通讯. pod 'SocketRocket' 2.通讯地址: ws://192.168.1.128:18882/ws 注意:s ...