论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
大数据
›
数据仓库与分析
›
一文详解kafka知识点
一文详解kafka知识点
海哥
金牌会员
|
2024-12-7 19:43:14
|
显示全部楼层
|
阅读模式
楼主
主题
826
|
帖子
826
|
积分
2478
目录
1、kafka定义
2、消息队列
2.1、产品选择
2.2、应用场景
2.3、消息队列的两种模式
3、kafka架构
4、kafka生产者
4.1、kafka生产者原理
4.2、kafka生产者异步发送
4.3、同步发送
4.4、分区
4.4.1、kafka分区利益
4.4.2、分区策略
4.4.3、自定义分区
4.5、天生吞吐量
4.6、数据可靠性
4.7、数据重复分析
4.7.1、幂等性
4.7.2、事务原理
4.8、数据有序
4.9、数据乱序
5、kafka-broker
5.1、zk存储
5.2、broker-工作原理
5.3、节点服役和退役
5.4、kafka-副本
5.5、Leader选举
5.6、Follower故障
5.7、Leader故障
5.8、分区副本分配
5.9、Leader Partition自动均衡
5.10、文件存储机制
5.10.1、Log文件和Index文件详解
5.11、文件清除策略
5.12、高效读写数据
6、kafka消费者
6.1、kafka消费方式
6.2、kafka消费者总体工作流程
6.3、消费者组
6.3.1、消费者组初始化流程
6.3.2、消费者组详细消费流程
6.4、kafka分区分配策略
6.4.1、Range
6.4.2、RoundRobin
6.4.3、Sticky
6.5、offset
6.5.1、自动提交offset
6.5.2、手动提交offset
6.5.3、指定offset消费
6.6、指定时间消费
6.7、漏消费与重复消费
6.8、消费者事务
6.9、数据积压
1、kafka定义
传统定义:kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),重要应用于大数据实时处理领域。
发布/订阅:消息的发布者不会将消息直接发生给特定的订阅者。而是将发布的消息分为不同的种别,订阅者只接收感兴趣的消息。
新定义:kafka是一个开源的分布式变乱流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务。
2、消息队列
2.1、产品选择
目前企业中比较常见的消息队列产品重要有kafka、ActiveMQ、RabbitMQ、RoketMQ等
ActiveMQ
RabbitMQ
RocketMQ
kafka
Pulsar
单机吞吐量
较低(万级)
一般(万级)
高(十万级)
高(十万级)
高(十万级)
开发语言
Java
Erlang
Java
Java/Scala
Java
维护者
Apache
Spring
Apache(Alibaba)
Apache(Confluent)
Apache(StreamNative)
Star数量
2.1K
10.4K
18.8K
24.3K
12.4K
Contributor
126
246
438
991
600
社区活跃度
低
高
较高
高
高
消费模式
P2P、Pub-Sub
direct、topic、Headers、fanout
基于Topic和MessageTag的的Pub-Sub
基于Topic的Pub-Sub
基于Topic的Pub-Sub,支持独占(exclusive)、共享(shared)、灾备(failover)、key共享(key_shared)4种模式
持久化
支持(小)
支持(小)
支持(大)
支持(大)
支持(大)
次序消息
不支持
不支持
支持
支持
支持
性能稳固性
好
好
一般
较差
一般
集群支持
主备模式
复制模式
主备模式
Leader-Slave每台既是master也是slave,集群可扩展性强
集群模式,broker无状态,易迁徙,支持跨数据中心
管理界面
一般
较好
一般
无
无
计算和存储分离
不支持
不支持
不支持
不支持
支持
AMQP支持
支持
支持
支持
不完全支持
不完全支持
2.2、应用场景
传统的消息队列的重要应用场景包罗:
缓存/消峰、解耦和异步通信。
(1)缓存/消峰:
有助于控制和优化数据流经过系统的速率,办理生产消息和消费消息的处理速率不一致的环境。
(2)解耦:
答应你独立的扩展或修改两边的处理过程,只确保他们遵循同样的接口束缚
(3) 异步通信
:答应用户把一个消息放入队列,但并不立即处理它,然后在必要的时候再行止理它们。
2.3、消息队列的两种模式
(1)点对点
消费者主动拉取数据,消息收到后清除消息
(2)发布/订阅模式
可以有多个topic主题(欣赏、点赞、收藏、品评等)
消费者消费数据之后,不删除数据
每个消费者相互独立、都可以消费到数据
思考:那么什么时候删呢?
3、kafka架构
1、为方便扩展,并进步吞吐量,一个topic分为多个partition
2、配合分区的计划,提出消费者组的概念,组内每个消费者并行消费,一个分区partition只能由一个消费者来消费。
3、为了进步可用性,为每个partition增加若干副本,范例NameNode HA。分区挂掉之后follow可以成为leader。
4、ZK中记录谁是leader,kafka2.8以后也可以不配置不接纳ZK。
4、kafka生产者
4.1、kafka生产者原理
(1)主线程:
kafka producer生产者send(ProduceRecord)、可选的拦截器Interceptor、序列化器、分区器。
创建多个分配,都是在内存内里完成的,(RecordAccumulator)总大小默认32M,(ProducerBatch)一批次16k。
(2)sender线程:NetWorkClient 汽车、各个哀求。
以每个broker为key,把数据放到一个队列内里,发送给broker应答,每个队列最多缓存5个哀求。
selector
:高速公路,链路。
什么时候拉数据发生?
batch.size:只有数据积聚到batch.size之后,sender才会发生数据。默认16k
linger.ms:如果数据迟迟未达到batch.size,sender等候linger.ms设置的时间到了之后就会发送数据。单元ms,默认值是0ms,表示没有耽误。
(3)kafka集群:
分为多个broker、拥有备份的能力,收到数据之后,发送acks应答。
0:生产者发送过来的数据,不必要等候数据落盘应答;
1:生产者发送过来的数据,Leader收到数据后应答;
-1(all):生产者发送过来的数据,Leader和ISR队列内里的全部节点收齐数据后应答。-1和all等价。
什么是ISR?
AR(Assigned Repllicas):一个partition的全部副本(就是replica,不区分leader或follower)
ISR(In-Sync Replicas)能够和 leader 保持同步的 follower + leader自己 组成的聚集。
OSR(Out-Sync Relipcas)不能和 leader 保持同步的 follower 聚集
公式:AR = ISR + OSR
应答机制-乐成:
清理掉每个分区的数据。
应答机制-失败:
默认是不停重试,可以修改retries重试次数。
4.2、kafka生产者异步发送
异步发送:
外部的数据发送到队列内里的,kafka回调异步发送。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
海哥
金牌会员
这个人很懒什么都没写!
楼主热帖
CMOS图像传感器——黑电平校正 ...
makefile简单脚本编写和Linux调试器gdb ...
【第90题】JAVA高级技术-网络编程9(简 ...
什么是精准卫星授时?什么是NTP网络时 ...
如何使用 FlowUs 、Notion 等笔记软件 ...
Linux【实操篇】—— 日志管理 ...
gRPC入门
姚凯大学生创业导论课后答案2022 ...
读SQL学习指南(第3版)笔记04_查询入 ...
vue 的常用事件
标签云
挺好的
服务器
快速回复
返回顶部
返回列表