赞
踩
这些参数会影响topic的性能和行为。
一开始就要设置好partition的个数,不要在后面动态的增加partition,否则会破坏key和partition配置的对应关系。
粗略统计,每增加一个partition会给系统增加10MB/sec的吞吐量。
更多的partition意味着;
建议个数:
增加replication factor个数,会消耗更多的磁盘空间,也会对集群造成很大的压力。
更多的RF意味着;
建议个数:3个broker
单个partition是由segment组成的,每个segment都对应一个文件。每个segment都有一个开始和结束的位置(字节为单位的offset),对于同一个partition来说,同一时间只有唯一一个active segment,也就是说数据会被追加到active segment里面。
log.segment.bytes: the max size of a single segment in bytes
log.segment.ms: the Kafka will wait before committing the segment if not full
以上图为例,每一个segment的大小是958字节,当数据写满958个字节后,对应的segment就会关闭,再创建一个新的segment。
对于每一个segment来说,都有两个index(文件):
an offset to position index(空间):通过位置去定位信息
a timestamp to offset index(时间):通过时间戳定位信息
这两个索引文件是伴随着segment存储在kafka中的
默认情况下log.segment.bytes = 1GB,设置过小会有什么影响
实际开发中需要关心一下吞吐量,如果是3GB,就可以使用默认参数。
默认情况下log.segment.ms = 1 week,设置过小会有什么影响
可以删除不需要的数据,维护kafka cluster的成本更低,同时有更高的性能。
log cleanup发生在partitions segment上面!
每当partition创建一个segment后,都会触发一个潜在的log cleanup需求,因此,如果segment比较小,就会有更多的log cleanup需求。
默认情况下,segment是1GB。
policy 1 :log.cleanup.policy = delete
policy 2 :log.cleanup.policy = compact
相当于是快照数据。
max.message.bytes
默认1MB,可以发送给topic的单个message的大小,如果修改需要同步修改consumer侧的参数值。
min.isync.replicas
默认是1,最少的需要的replica的响应数量。
unclean.leader.election
默认是true, 是否允许位做完数据同步的replica作为leader broker。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。