笔记源自:《深入理解kafka:核心设计与实现》
内容比较松散,涉及Kafka基本概念、后台设计、运营优化等方面。
<分区,Deque<ProducerBatch>>
的保存形式转变成<Node,List< ProducerBatch>
的形式,其中Node表示Kafka集群的broker节点。
某个版本之后开始的优化,方便kafka后端存储优化max.in.flight.requests.per.connection
配置为1,而不是把acks配置为0,不过这样也会影响整体的吞吐。enable.auto.commit
配置,默认值为 true。auto.commit.interval.ms
配置,默认值为5秒,此参数生效的前提是enable.auto.commit
参数为true。.
改成下画线_
。假设遇到一个名称为topic.1_2
的主题,还有一个名称为topic_1.2
的主题,那么最后的metrics的名称都会为topic_1_2
,这样就发生了名称冲突。__
开头,因为以双下画线开头的主题一般看作Kafka的内部主题,比如__consumer_offsets
和__transaction_state
。主题的名称必须由大小写字母、数字、点号.
、连接线-
、下画线_
组成,不能为空,不能只有点号.
,也不能只有双点号..
,且长度不能超过249。__consumer_offsets
和__transaction_state
。kafka.admin.AdminClient
和kafka.admin.AdminUtils
来实现部分Kafka的管理功能,但它们都已经过时了,在未来的版本中会被删除。org.apache.kafka.clients.admin.KafkaAdminClient
来作为替代方案。KafkaAdminClient不仅可以用来管理broker、配置和ACL(Access Control List),还可以用来管理主题。
不建议再维护0.11.0.0之前的kafka版本auto.leader.rebalance.enable
设置为默认的true,因为这可能引起负面的性能问题,也有可能引起客户端一定时间的阻塞。kafka-perferred-replica-election.sh
脚本提供了对分区leader副本进行重新平衡的功能。/admin/preferred_replica_election
节点,如果这些数据超过了ZooKeeper节点所允许的大小,那么选举就会失败。默认情况下ZooKeeper所允许的节点数据大小为1MB。kafka-reassign-partitions.sh
脚本来执行分区重分配的工作,它可以在集群扩容、broker节点失效的场景下对分区进行迁移。.txnindex
为后缀的事务索引文件) activeSegment
,即表示当前活跃的日志分段sendfile()
方法实现。对应于 Java 语言,FileChannal.transferTo()
方法的底层实现就是sendfile()方法。System.currentTimeMillis()
,而是调用了Time.SYSTEM.hiResClockMs
,这是因为 currentTimeMillis()方法的时间精度依赖于操作系统的具体实现,有些操作系统下并不能达到毫秒级的精度,而Time.SYSTEM.hiResClockMs实质上采用了System.nanoTime()/1_000_000来将精度调整到毫秒级。auto.leader.rebalance.enable
设置为 true)partition.assignment.strategy
来设置消费者与订阅主题之间的分区分配策略。默认情况下,此参数的值为org.apache.kafka.clients.consumer.RangeAssignor,即采用RangeAssignor分配策略。enable.auto.commit
参数的默认值为 true,即开启自动位移提交的功能,虽然这种方式非常简便,但它会带来重复消费和消息丢失的问题,对于高可靠性要求的应用来说显然不可取,所以需要将 enable.auto.commit 参数设置为 false 来执行手动位移提交。HighWatermark:简称HW,代表消费端所能“观察”到的Partition的最高日志位移.LogEndOffset:简称LEO, 代表Partition的最高日志位移,其值对消费者不可见。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。