Kafka学习之路
Kafka必知必会
kafka核心原理
go操作kafka
消息队列之-Kafka
Kafka 分区分配策略 或(https://blog.csdn.net/u013256816/article/details/81123625)
kafka怎么保证消息顺序?
StickyAssignor:0.11.x版本引入,消费者尽量不离开分区.即BalanceStrategySticky:重平衡策略,适用于同一个group下多个topic
RoundRobin面向消费者组.Range优先topic(订阅了的).
同一个消费者组中的消费者可以订阅不同的主题,只是轮询更适合主题相同的情况
java版序列化器必须,拦截器和分区器可选
选举:controller, leader
服务器scale,客户端java
kafka-eagle监控
perf性能测试
0. 基础
kafka机器数量:(峰值生产速度*副本数/100)*2+1
基于日志log的存储(.log文件即data)
Kafka topic 分区可以在线增加,不可以减少
Topic副本数不能超过Kafka Broker的节点数
分区数等于消费者数时,效率最高. 分区好处:方便在集群中扩展,可以提高并发(可以以分区为单位读写)
高效读写数据(为什么快):分区读写,顺序写,应用pagecache(0.11后,消费和生产速度相当时,会通过内存直接把消息读走),零复制
Kafka的topic逻辑上包含了若干个partition,每个partition对应磁盘上一个目录;写数据的时候就是以append-only的方式在partition目录写log文件。
为了防止文件过大不利于搜索和管理,又按照大小(默认1G)进行滚动,生成多个文件,每个文件称为一个segment。segment的文件名就是该文件里面第1个offset的值。
为了高效的根据offset进行消费,给每个segment文件生成了一个索引文件,索引里面记录了该segment里面每个offset对应的实际偏移量
消息在不同的 Partition 是不能保证有序的,只有一个 Partition 内的消息是有序的
consumer group, topic,分区 三元组确定offset
- Exactly Once
At Least Once(all) + 幂等性(0.11) = Exactly Once
要启用幂等性,只需要将 Producer 的参数中 enable.idompotence 设置为 true 即可。Kafka
的幂等性实现其实就是将原来下游需要做的去重放在了数据上游。开启幂等性的 Producer 在
初始化的时候会被分配一个 PID,发往同一 Partition 的消息会附带 Sequence Number。而
Broker 端会对