kafka知识点整理之概述
所属分类 kafka
浏览量 1306
消息中间件 消息队列
生产者 消费者 kafka集群 broker zk
producer consumer
结构化消息格式 二进制 传输协议
队列
发布/订阅
topic 发布者(publisher) 订阅者(subscriber)
消息组 consumer group
设计要点
吞吐量/延时、消息持久化、负载均衡和故障转移、伸缩性。
高吞吐量低延时实现要点
页缓存和采用追加写入消息的方式。
页缓存在内存中分配,消息写入速度快, 避免与文件系统直接交互
追加写入,避免随机写,磁盘顺序读写性能高
sendfile 零拷贝 提升网络传输效率
读取消息,页缓存中读取(避免直接穿透到硬盘),命中的话直接发送到网络,零拷贝(zero copy)
传统 IO 数据拷贝 多次拷贝 内核态用户态切换
持久化消息 方便 消息重放
负载均衡和故障转移
partition leader选举算法
故障转移 zk 会话机制
伸缩性
尽量无状态 zk 统一管理元数据
消息由消息头部、key和value组成。
CRC 版本号 属性 时间戳 key长度 key value长度 value
使用紧凑的二进制字节数组 ByteBuffer
broker进程崩溃时 ,页缓存数据仍然存在
topic-partition-message
定位一条消息 topic, partition,offset
replica副本、leader、follower
leader 负责客户端读写, follower只是从leader 同步数据,保持与leader的同步 ,最为leader的候补
ISR in sync replica
只有这个集合中的replica才能被选举为leader
只有该集合中所有replica都接收到了同一条消息,才会将该消息置于“已提交”状态,即认为这条消息发送成功。
消息不丢失的两个要点
ISR中至少有一个replica
消息已提交
动态维护 ISR 列表
上一篇
下一篇
spring配置bean的三种方式
linux日志文件介绍
网站SEO robots文件写法
2019年杭州的独角兽和准独角兽们
springboot常用注解和配置整理
大数据日知录第一章数据分片与路由读书笔记