最好的方式肯定是合理化分区数量,但是一般用户都会存在不合理使用的情况。
linkin 有一个侵入式的工具CC可以实现按需负载均衡,也可以从broker拉jmx指标,手动实现根据紧缺的资源(我们一般是网络出口流量)进行reblance的操作。
如果针对isr
的话,影响的是以下2个配置参数:
我们让节点满足这2个“同步”条件,以区分“活着”还是“故障”。leader跟踪“同步”节点。如果一个follower死掉,卡住,或落后,leader将从同步副本列表中移除它。落后是通过
replica.lag.max.messages
配置控制,卡住是通过replica.lag.time.max.ms
配置控制的。
具体文章:kafka副本和leader选举
但是我依然会聚焦“超时”这个错误,而引起这个错误的我能想到的就是上面说的。
反正已经挂了
直接格式化这块盘,启动时会自动恢复的
如果是资源有问题的话,理论上至少同一磁盘下所有leader 都会存在大量的reblance,而且我还迁移的是普通副本应该不影响。去看coordinator的日志reblance 基本上局限在这个topic partition。请问一下消费客户端有什么参数是能敏感察觉到isr信息的吗
推测是建立在你本来集群一切正常的前提下。
我觉得是因为迁移导致你的资源被占满了,而影响了客户端。
建议你关注一下资源的占用情况,必要时对迁移进行限流。
参见:kafka在数据迁移期间限制带宽的使用
zk是一个分布式文件系统,采用了类raft协议进行选举。很多多主式的分布式程序采用抢占zk节点的方式进行选举,这样就不必自己做raft这一部分了。有的程序也会在zk上注册节点存放一些元数据。
kafka 之前也是采用zk存放元数据,节点发现和进行选举等,这样各个节点间可以一定程度解耦。随着版本的更新,kafka逐渐将元数据放在broker中,以达到轻依赖的目的。2.8版本开放了kraft的试用模式,实现了类似es的raft选举方式,后续版本会逐步脱离zk的束缚。
但是这也会带来新的问题,后期kafka 扩容升级时涉及到主节点可能会变得麻烦,监控方案也是一个考验。