kafka服务端

kafka集群中会有一个或者多个broker,其中只有一个broker会被选为控制器(kafka controller),其负责管理整个集群中所有分区和副本的状态。当某个分区的leader副本出现故障时,由控制器负责为该分区选举新的leader副本。当检测到某个分区的ISR集合发生变化,控制器将通知所有的broker更新其元数据信息。

​ 控制器的选择时通过向zookeeper中写入临时节点/controller进行实现的,创建成功的broker将会成为控制器。zookeeper另一个与控制器有关的节点是:/controller_epoch节点,用来记录控制发生变更的次数,每产生一个新的控制器这个值就i会增加一。kafka也是通过controller_epoch来保证控制器的唯一性。

leader副本选举

分区副本的选举是由控制器负责具体实施,基本的思路是:按照AR集合所有副本的顺序进行查找第一个存活的副本,并且这个副本在ISR集合中。一个分区中的AR集合在分配的时候就被指定了,只要不发生重分配,那么集合内部的副本的顺序是保持不变的,而分区中ISR集合中副本的顺序是有可能发生改变的。

服务端参数

  • broker.id是broker启动前必须设定的参数,kafka集群就是使用它进行唯一标识的。如果meta.properties文件中broker.id与server.properties中broker.id不一致时候,将会抛InconsistentBrokerIdException

    ​ kafka服务端重要参数

    参数名称默认值参数释义
    zookeeper.connectlocalhost:2181kafka使用的zookeeper集群地址,多个采用","分隔
    auto.create.topics.enabletrue是否开启自动创建主题的功能
    auto.leader.rebalance.enabletrue是否自动leader再均衡功能
    compression.typeproducer消息压缩类型。默认值标识跟生产者使用相同的类型
    log.retention.hours168(7天)日志文件的留存时间,单位为小时
    log.roll.hours168(7天)经过多长时间后会强制新建一个日志分段
    log.roll.msnull同上,单位为ms,但是优先级比上面的要高
    log.segment.bytes1G日志分段文件的最大值,超过这个值后会强制创建一个新的日志分段。
    num.partitions1主题中默认的分区数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值