Kafka producer有三种ack机制 初始化producer时在config中进行配置
设置为 0(丢)
意味着producer不等待broker同步完成的确认,继续发送下一条(批)信息
设置为1(丢)
意味着producer要等待leader成功收到数据并得到确认,才发送下一条message。此选项提供了较好的持久性较低的延迟性。
Partition的Leader死亡,follwer尚未复制,数据就会丢失
设置为-1(不丢)
意味着producer得到follwer确认,才发送下一条数据,持久性最好,延时性最差。
Kafka 高效文件存储设计特点:
(1).Kafka 把 topic 中一个 parition 大文件分成多个小文件段,通过多个小文件段,就容易定
期清除或删除已经消费完文件,减少磁盘占用。
(2).通过索引信息可以快速定位 message 和确定 response 的最大大小。
(3).通过 index 元数据全部映射到 memory,可以避免 segment file 的 IO 磁盘操作。
(4).通过索引文件稀疏存储,可以大幅降低 index 文件元数据占用空间大小。
partition 的数据如何保存到硬盘
topic 中的多个 partition 以文件夹的形式保存到 broker,每个分区序号从 0 递增,
且消息有序
Partition 文件下有多个 segment(xxx.index,xxx.log)
segment 文件里的 大小和配置文件大小一致可以根据要求修改 默认为 1g
如果大小大于 1g 时,会滚动一个新的 segment 并且以上一个 segment 最后一条消息的偏移
kafka 重复消费
kafka broker发生变化时候会出现 在均衡现象会导致偏移量,上一波offset没提交,就会产生重复消费。
Kafka 性能高
采用操作系统内存,批量存储 ,顺序存储,多范围读取,一个topic 多个partition -- broker。
Kafka zookeeper
zookeeper里面没有生产者的信息 只有消费者的信息。
Kafka partition分区数
partition分区数 不大于集群服务器个数
G1来代替CMS作为垃圾回收器
Kafka中的ISR、AR又代表什么 、ISR的伸缩又指什么
ISR:In-Sync Replicas 副本同步队列
AR:Assigned Replicas 所有副本
ISR是由leader维护,follower从leader同步数据有一些延迟(包括延迟时间replica.lag.time.max.ms和延迟条数replica.lag.max.messages两个维度, 当前最新的版本0.10.x中只支持replica.lag.time.max.ms这个维度),任意一个超过阈值都会把follower剔除出ISR, 存入OSR(Outof-Sync Replicas)列表,新加入的follower也会先存放在OSR中。AR=ISR+OSR。
Kafka角色
broker: 每个正在运行的kafka节点
producer:消息生产者
consumer:消息的消费者
consumer group:消费者组,同一个消费者组只能有一个consumer能消费消息
kafka server :也叫作broker, 已部署kafka的服务器, 以broker.id来区分不同的服务器
topic:主题, 主题中的每条消息包括key-value和timestamp。可以定义多个topic,每个topic又可以划分为多个分区
partition:topic下的消息分区,通过key取哈希后把消息映射分发到一个指定的分区,每个分区都映射到broker上的一个目录。一般每个分区存储在一个broker上
replica:副本, 每个分区按照生产者的消息到达顺序存放。分区的多个副本中有且只有一个leader角色的副本.
leader replica:leader角色的分区副本,leader角色的分区处理消息的读写请求. Leader和follower位于不同的broker.
follower replica:follower角色的分区副本,负责从Leader拉取数据到本地,实现分区副本的创建
zookeeper:严格来说这不是kafka的组件。但是在Kafka集群中, 很有必要通过Zookeeper管理kafka集群的配置、选举leader,以及在Consumer Group发生变化时进行rebalance。下面说一下kafka的哪些组件需要注册到zookeeper——