Kafka的知识点

编程

Kafka

Borker

1.kafka服务节点,一般使用奇数个数,配合zk做高可用。

2.broker存放消息,磁盘存储,使用分区+顺序寻址+零拷贝,实现快速存储。

3.topic ->partition ->segement=.index+.log;其中index存储索引文件,log存储具体消息。当通过offset查询message的时候,首先通过二分法找到具体的.index,然后顺序查找找到具体的偏移量,指向的message。

4.replica 备份 【如果保证消息的不丢失】:1、replica备份,分不到不同的broker。2、ISR(in-synch-replica)同步备份列表,leader+foller 3、生产者的acks配置【0,1,-1】其中-1的时候有可能造成数据重复。

5.partition的**HW(Hight Water Mark 高水位)**和LEO(最后一个offset),保证消费者消费消息的一致性,HW位置之前的数据是Consumer可见的。

Producer

1.send()生产消息是异步的

2.生产者的acks配置 保证消息不丢失

3.发送消息的过程:send()->过滤器->序列化组件->partition 分区组件,到一个线程共享变量 RecordAccumulator,sender线程不断从RecordAccumulatro中拉取消息到Kafak Broker

Consumer

1.Consumer组 消费者组保证消息的一致性,维护offset。可以存放在zk也可以存储磁盘(G+T+P) consumerGroup+Topic+Partition

2.消费者的分区分配策略:一个consumer group 中有多个consumer,一个topic有多个partition,所有必然会涉及到partition的分配问题,即那个partition由那个consumer来消费。其中有RoundRobin和Range两种方式,

其中默认为Range。 RoundRobin是按照消费者分配:只要一个消费者组中有一个消费者订阅了消息,就认为整个消费者组订阅消息。Range是按照 主题分配,具体到那个消费者组中的某一个消费者。

以上是 Kafka的知识点 的全部内容, 来源链接: utcz.com/z/512821.html

回到顶部