一文读懂:Kafka(分布式消息队列)的基础概念,教程
[提前声明]
文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章
写作不易,转载请注明,谢谢!
代码案例地址: ?https://github.com/Mydreamandreality/sparkResearch
一文读懂系列:Kafka基本概念
- 我们一般学习一个新的技能,都会经历如下这么一个阶段:
这是个什么玩意啊,它能做什么啊,怎么做啊,为什么它就能做啊,哦这样啊.好厉害啊~
- 我就按照这个顺序把kafka和spark,es给你们讲明白咯
什么是kafka?
- Kafka准确的说是
分布式消息系统
- 要理解什么是
分布式消息系统
,我们要先了解它的应用场景何在
kafka的应用场景
可以这么说,我们生活在一个数据大爆炸的时代,各行各业的数据大量的增长,给我们的业务带来了很大的压力,但是同时,巨大的数据也给我们带来了巨大的隐形财富
那么这个时候我们就面临一个巨大的挑战
- 如何把巨大的业务数据接入到我们的大数据分析平台,
- 其次就是如何分析收集到的信息
欸,这个时候kafka就应运而生啦
kafka是专为分布式高吞吐量系统设计的
它的主要特性如下:
- 应用解耦,异步消息,流量削峰,高性能,高可用,高容错,内置分区等等
目前主流的分布式消息队列还有很多,比如:
- ActiveMQ
- RabbitMQ
- ZeroMQ
- 等等
- [目前各方面综合性能最好的理论上讲是RabbitMQ]
如上不同的分布式消息队列各自的适用场景都不同,它们之间详细的比较可以查看其它博主的文章
- 我在这里举一个kafka的生产应用场景
- 日志处理 [逻辑如下图]
- 首先我们有一个日志采集客户端,负责采集我们服务器的日志,每天定时的写入kafka队列中
- kafka则负责日志数据的接受,存储,转发
- 我们的大数据分析平台负责 订阅并且消费kafka队列中的日志数据
分布式消息系统
那么我们知道kafka的应用场景后,就很好理解分布式消息系统了
- 分布式消息系统就是把数据从一个应用传递到另一个应用中,这样我们的程序就可以专注于数据,而不用额外的关注数据是如何共享的
- 我们的消息[
也就是数据
]在应用程序和消息系统之间是异步队列
消息模式
- 在kafka中,我们有两种类型的消费模式
- 一:点对点模式
- 二:发布:订阅[
PUB-SUB
]模式
点对点模式
消息生产者把消息存到队列中,然后消费者从队列中消息消息,
但是此处要注意的是:
- 消息被消费后,队列中就不再存储这条被消费的消息
点对点支持存在多个消费者,但是对一个
消息
而言,只会有一个消费者可以消费举个简单的例子:比如在淘宝的订单系统中:
- 商家是消息生产者:它告诉消息队列还有多少个库存
- 我们就是消息消费者,我们去购买商家的商品
- 这个时候一个商家订单会对应到我们每个消费者
- 我们都可以消费这条消息,但是我消费完后你就无法再重复消费了
点对点如下图所示:
发布-订阅[pub-sub]
- 消息发布者把消息发布到主题[topic]中,同时可以有多个,订阅该主题的消费者进行消费,和点对点不同的是,发布订阅一个消息可以有多个消费者一起消费
发布-订阅如下图所示
kafka的优势
- 如下是几个kafka的优势,[当然还不止这些]
- 可靠性:Kafka是分布式,分区,复制和容错的
- 高可用:Kafka使用分布式提交日志,这意味着消息会尽可能快地保留在磁盘上,因此它是持久的
- 性能:Kafka对于发布和订阅消息都具有高吞吐量,就算我们是TB级别数据,它也保持稳定的性能,Kafka非常快,并保证零停机和零数据丢失
后续更新下kafka在java中的应用 以及和spark大数据框架整合的代码案例
一文读懂:Kafka(分布式消息队列)的基础概念,教程相关推荐
- 腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面面
1.引言 我们常常会听说,某个互联网应用的服务器端系统多么牛逼,比如QQ.微信.淘宝.那么,一个大型互联网应用的服务器端系统,到底牛逼在什么地方?为什么海量的用户访问,会让一个服务器端系统变得更复杂? ...
- Kafka 分布式消息队列介绍
Kafka 分布式消息队列 类似产品有JBoss.MQ 一.由Linkedln 开源,使用scala开发,有如下几个特点: (1)高吞吐 (2)分布式 (3)支持多语言客户端 (C++.Java) 二 ...
- 一文读懂kafka(附加52道常见面试题)
1.Kafka基本概念 1.什么是kafka Kafka是一个分布式消息中间件,支持分区,多副本,多订阅者,基于zookeeper协调的消息系统,它提供了类似于JMS的特性,但是在设计实现上完全不同, ...
- 消息队列:基础概念篇
文章目录 前言 Who|什么是消息队列(MQ) Why|为什么用MQ 应用解耦 异步处理 流量削峰 MQ有什么优缺点 How|怎么用MQ 前言 接下来我在写一些技术类科普的文章,大致会以who(它是谁 ...
- 独家 | 一文读懂Corda分布式记账技术
作者:Dan Newton 翻译:申利彬 校对:丁楠雅 本文约2600字,建议阅读10分钟. 本文为你介绍借鉴了区块链的部分特性的分布式记账技术,并分析其背后的原因. 什么是Corda? 最近我开始了 ...
- 一文读懂 Kafka 事务机制
这篇文章主要讲述 Kafka 事务性相关原理,从 Kafka EOS 语义.幂等性.事务性等几个方面阐述. Kafka EOS 语义 EOS(Exactly Once Semantics,精确一次处理 ...
- 一文读懂 SuperEdge 分布式健康检查 (边端)
作者:杜杨浩,腾讯云高级工程师,热衷于开源.容器和Kubernetes.目前主要从事镜像仓库.Kubernetes集群高可用&备份还原,以及边缘计算相关研发工作. 前言 SuperEdge 是 ...
- 分布式消息队列基础知识
本文主要整理消息队列的一些基本概念,为后面的Rocketmq消息队列组件深入学习打下基础. 一.什么是消息队列? 维基百科介绍:消息队列(Message Queue)是一种进程间通信或同一进程的不同线 ...
- 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?
本文引用了"蔷薇Nina"的"Nginx 相关介绍(Nginx是什么?能干嘛?)"一文部分内容,感谢作者的无私分享. 1.引言 Nginx(及其衍生产品)是目前 ...
最新文章
- 来吧,用设计模式来干掉 if-else
- SnapKit 源码解读(五):Models
- c语言随机产生四位数,习题:随机产生N个四位正整数,将其中的素数选出,并升序排列之输…...
- 官宣预热iQOO 7强悍配置:“性能铁三角”加持 给你强悍全感
- OpenVZ,Xen,KVM等:虚拟化解决方案
- 力扣98. 验证二叉搜索树(JavaScript)
- springcloud 服务调用的两种方式
- 高数竞赛、数学建模、算法、计算机专业书籍等亲情大甩卖
- 评论:中国网络游戏虚拟物品交易的前景
- linux按目录名查找目录_如何在Linux中查找目录?
- 十七 SQL ALTER 与 AUTO INCREMENT
- 用excel对2000年-2015年游戏行业分析
- Google GMS认证测试几个名词
- MFC+opencv实现摄像头的打开与关闭
- 多元线性回归中的公式推导
- Golang-channel实现
- 对文本进行分类方法python_pytorch实现用CNN和LSTM对文本进行分类方式
- 扫雷• 规则: (1)随机产生 8*8 的雷分布图;• (2)用户“y”表示游戏,“q”退出游戏;• (3)让用户输入行列号,用键盘“m”标雷,“k”打开;• (4)打开区域为雷或者全部区
- @linux文件处理
- Mysql基础(入门)
热门文章
- 苹果在第二批22个国家推出iPhone 4S预订
- 计算机组装涉及哪些硬件,组装一台电脑需要哪些配件_电脑硬件组装一台电脑需要什么零件...
- “侵入”住宅的北京农夫世家餐饮管理有限公司青蛇
- 中科大计算机复试提交材料,中科大计算机复试经验分享(范文).docx
- 计算机程序设计论文2万字,计算机程序设计论文范文分享
- 中鑫吉鼎|13个理财小知识好懂实用,大人小孩都该知道
- 过去几轮熊市是怎么牛回来的?这轮熊市的出路又在那里?
- 批量提取、修改excel文件名称
- 英雄联盟日服务器修复好了吗,lol客户端bug遍地, 服务器瘫痪达一天! 官方修复后毫无补偿引不满...
- 企业微信pc机器人开源项目