欢迎点击主页查看更多内容....
零拷贝有两种方式:mmap/sendfile,而直接内存的方式跟Netty也是如出一辙。
关于压缩类型snappy,他是Java提供的实现,在maven以来中可在kafka中看到
源码阅读
org.apache.kafka.clients.producer.ProducerRecord
可指定主题
private final String topic;
分区
private final Integer partition;
头信息
private final Headers headers;
key
private final K key;
value
private final V value;
linger.ms
private final Long timestamp;
构造器有几种,对于发送消息就有几种类型,consumerRecord同理,key和value需要指定序列化类。
所有的配置项存放在ProducerConfig中,本来想看几个代表性参数就可以了,但是后续的调优参数有很多配置是用的到的,还是要仔细看看。
比如每个batchsize批次内存大小默认是
.define(BATCH_SIZE_CONFIG, Type.INT, 16384, atLeast(0), Importance.MEDIUM, BATCH_SIZE_DOC)
16384/1024=16k
比如linger.ms默认为0ms
.define(LINGER_MS_CONFIG, Type.LONG, 0, atLeast(0), Importance.MEDIUM, LINGER_MS_DOC)
key指定的序列化类为
Serializer class for key that implements the <code>org.apache.kafka.common.serialization.Serializer</code> interface.
如果在配置文件中指定则需要全限定类名
zookeeper中存放的信息
broker启动后在zookeeper中注册
controller将节点信息记录到zookeeper中,推荐使用工具链接prettyzoo,存放brokerid,topic,消费者信息等。
Linux新增知识点
kafka 搭配 xcall jps ,查看集群下机器节点
kafka服务器挂了怎么办?
1.先尝试重启,重启成功直接解决
2.增加内存,CPU,宽带
3.如果副本数大于等于2,可以按照服役新节点方法执行,并配置负载均衡
Broker中的重要参数
参数名称 | Description |
---|---|
replica.lag.time.max.ms | ISR 中,如果 Follower 长时间未向 Leader 发送通信请求或同步数据,则该 Follower 将被踢出 ISR。该时间阈值,默认30s 。 |
auto.leader.rebalance.enable | 默认是 true。 自动 Leader Partition 平衡。 |
leader.imbalance.per.broker.percentage | 默认是 10%。每个 broker 允许的不平衡的 leader的比率。如果每个 broker 超过了这个值,控制器会触发 leader 的平衡。 |
leader.imbalance.check.interval.seconds | 认值 300 秒 。检查 leader 负载是否平衡的间隔时间。 |
log.segment.bytes | Kafka 中 log 日志是分成一块块存储的,此配置是指 log 日志划分 成块的大小,默认值 1G。 |
log.index.interval.bytes | 默认 4kb,kafka 里面每当写入了 4kb 大小的日志(.log),然后就往 index 文件里面记录一个索引 |
log.retention.hours | Kafka 中数据保存的时间,默认7天。 |
log.retention.minutes | Kafka 中数据保存的时间,分钟级别,默认关闭。 |
文件清理策略
Kafka 中默认的日志保存时间为7天。
日志删除策略