Kafka随笔

消息:key[可选]  value,,批量发送

Topic

Partition(顺序写)---offerset

Consumer根据offerset来消费

 

Key作为路由,可以重写partition改变路由策略

 

 

 

Kafka高吞吐的因素

 

顺序写的方式存储数据,问题,频繁的io,网络,磁盘io

 

--》批量发送  batch.size/linger.ms   满足多大,或者多久发送一次,之前都缓存再批量发送的topic

 

 

零拷贝

直接吧数据从磁盘读取到缓存区,到socket  buffer然后在发送出去

 

Linux,有个FIleChannel.transferTo  kafka  底层调用,直接吧数据读到socket buffer供消费者调用

 

日志策略

 

日志保留策略

时间或大小

日志压缩策略

 

消息可靠性

消息发送可靠性

生产者发送消息到broker,有三种确认方式

Ack = 0

Ack =1

Ack =-1

消息存储可靠性

Partition规则  实现消息的水平扩展

Partition 是单点,有数据丢失的风险,可以高可靠性副本

-replication-factor 表示副本数2

sh kafka-topics.sh --create --zookeeper 192.168.72.128:2181 --replication-factor 1 --partitions 2 --topic one

Partition副本

Leader选举

ISRreplica集合)

维护有资格的follower

满足条件:副本的所有节点都要zookeeper保持连接状态

副本的最后一条信息的offsetleader副本节点的最后一条信息的offset差值在阈值范围内,阈值可设置

采用ISR好处,如果有的follower节点延迟严重,ISR会直接剔除该follower

Hw&leo   log  end offset

 

副本同步细节,副卡数多影响性能,涉及到数据同步

Followerleader都同步完数据后,hw增加,同时可以消费该信息,

Leo是副卡同步中的标志

 

ISR存储位置?

 

如果keynull,就会放在同一个分区

 

如何在原有的topic,设置副本和分区

 

 

Kafka-log下面对应的topic有日志

 

00.index

00.log

集群下日志是一样的吗

 

Kafka消息已日志形式顺序存在日志文件中的

 

 

 

 

消息的消费原理

 

老版本的kafka 0.8   offset所有的进度都维护在zk上,频繁和zk交互影响zk性能

 

新版本kafkaoffset都维护在kafkatopic

 

posted on 2017-12-21 16:31  huangjj369  阅读(319)  评论(0)    收藏  举报