Kafka的灵魂伴侣Logi-KafkaManger(6)之专家服务(分区热点分区不足)

简介: Kafka的灵魂伴侣Logi-KafkaManger(6)之专家服务(分区热点分区不足)

文章目录

技术交流

专家服务

Topic分区热点

KM解决分区热点问题

Topic分区不足

Topic资源治理

异常诊断

项目地址: didi/Logi-KafkaManager: 一站式Apache Kafka集群指标监控与运维管控平台


专家服务

直观的展示和分析当前被管理的集群中出现的问题; 以及可视化运维


Topic分区热点

看到这个词,我们可以先想一想 什么是分区热点,什么情况下会出现分区热点情况;

按照我的理解,我将其罗列为以下几点


什么是分区热点


Topic分区上数据分配不均衡

造成的原因: 当生产者指定了分区数 或者key的时候, 有可能造成某个分区的消息生产速率远远大于其他分区

分区Leader在多个集群中分配不均

造成的原因:多个Broker宕机,导致宕机的Broker上的分区Leader转移到其他Broker上,恢复之后也没有触发 Leader Rebalance, 就会导致,某些Topic的分区Leader分配不均匀;

还有就是新增了很多Broker,某些原因造成新的Broker没有分配到Leader, 又或者把其他分区迁移到了别的 分区等等都会造成这样的问题;

上面的第一种,属于业务逻辑上的热点,我们没法控制,

但是第二种情况可以算作是集群异常点了, 需要我们重新去重新做一下 Leader Rebalance

那么意思是不是只要做一下 Leader Rebalance就解决了?像其他问题导致优先副本本身就不均衡,你再LR也没有用

所以更好的解决办法就是做一下数据迁移;


KM解决分区热点问题


image.png

image.png

KM判断分区热点逻辑


平台配置

KEY:REGION_HOT_TOPIC_CONFIG

VALUE:

minTopicBytesInUnitB: Topic最近一分钟的每秒评价流量 的阈值 默认3M=310241024

maxDisPartitionNum: Broker直接最大的分区数差值

ignoreClusterIdList: 忽略的物理集群ID

image.png

判断逻辑

image.png

还有一个判断逻辑是 maxDisPartitionNum: Broker直接最大的分区数差值 ;

image.png

像下面的这种分配情况,2-0=2; 如果你的配置 maxDisPartitionNum=1 那么肯定就满足了条件了

image.png

KM 解决分区热点–数据迁移

image.png

image.png

这里的迁移任务跟 Kafka的灵魂伴侣Logi-KafkaManger(4)之运维管控–集群运维(数据迁移和集群在线升级) 是一样的; 这里就不讲解了,不过这里选择的目标BrokerID是默认当前Topic所归属的所有Region下的所有Broker; (相当于把分区在选择的Broker中重新分配了一下)


Topic分区不足

按照一定的规则,来判断是否分区不足, 主要就是计算一下 Topic最近一分钟的平均流量值 / 分区数 是否超过某个阈值(阈值可以自定义);


自定义阈值


首先可以在平台配置那里自定义 判断的条件限定值; (不设置也可以,有默认值)

KEY: TOPIC_INSUFFICIENT_PARTITION_CONFIG

VALUE:

{
  "maxBytesInPerPartitionUnitB": 3145728,//每个分区近一分钟的(btyesIn B/s)的最大值  默认是  3M = 3*1024*1024
  "minTopicBytesInUnitB": 3145728,//Topic的近一分钟的(btyesIn B/s)值 要大于这个值; 默认是  3M = 3*1024*1024
  "ignoreClusterIdList": [  //忽略指定的物理集群; 默认空
    0,
    1
  ]
}

image.png

判定逻辑伪代码

for(遍历所有Topic){
//(BytesInPerSecOneMinuteRate 表示最近一分钟Topic流入的byteIn(KB/s)值;)
  if(ignoreClusterIdList){
    忽略
  }
  if(BytesInPerSecOneMinuteRate <= minTopicBytesInUnitB){
    忽略
  }
  if(BytesInPerSecOneMinuteRate / topic的总分区数 < maxBytesInPerPartitionUnitB){
    忽略
  }
    return  topic分区热点;
}

Topic资源治理

功能不全,待开发

异常诊断

功能不全,待开发

相关文章
|
1月前
|
消息中间件 分布式计算 算法
大数据-63 Kafka 高级特性 分区 副本机制 宕机恢复 Leader选举
大数据-63 Kafka 高级特性 分区 副本机制 宕机恢复 Leader选举
49 5
大数据-63 Kafka 高级特性 分区 副本机制 宕机恢复 Leader选举
|
1月前
|
消息中间件 SQL 分布式计算
大数据-64 Kafka 高级特性 分区Partition 分区重新分配 实机实测重分配
大数据-64 Kafka 高级特性 分区Partition 分区重新分配 实机实测重分配
79 7
|
15天前
|
消息中间件 负载均衡 Kafka
【赵渝强老师】Kafka的主题与分区
Kafka 中的消息按主题分类,生产者发送消息到特定主题,消费者订阅主题消费。主题可分多个分区,每个分区仅属一个主题。消息追加到分区时,Broker 分配唯一偏移量地址,确保消息在分区内的顺序性。Kafka 保证分区有序而非主题有序。示例中,Topic A 有 3 个分区,分区可分布于不同 Broker 上,支持负载均衡和容错。视频讲解及图示详见原文。
|
1月前
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
82 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
24天前
|
消息中间件 监控 负载均衡
在Kafka中,如何进行主题的分区和复制?
在Kafka中,如何进行主题的分区和复制?
|
1月前
|
消息中间件 监控 负载均衡
在Kafka中,如何进行主题的分区和复制?
在Kafka中,如何进行主题的分区和复制?
|
15天前
|
消息中间件 Kafka
【赵渝强老师】Kafka分区的副本机制
在Kafka中,每个主题可有多个分区,每个分区有多个副本。其中仅有一个副本为Leader,负责对外服务,其余为Follower。当Leader所在Broker宕机时,Follower可被选为新的Leader,实现高可用。文中附有示意图及视频讲解。
|
1月前
|
消息中间件 JSON 大数据
大数据-65 Kafka 高级特性 分区 Broker自动再平衡 ISR 副本 宕机恢复再重平衡 实测
大数据-65 Kafka 高级特性 分区 Broker自动再平衡 ISR 副本 宕机恢复再重平衡 实测
68 4
|
3月前
|
消息中间件 负载均衡 Kafka
Kafka分区分配策略大揭秘:RoundRobin、Range、Sticky,你真的了解它们吗?
【8月更文挑战第24天】Kafka是一款突出高吞吐量、可扩展性和数据持久性的分布式流处理平台。其核心特性之一是分区分配策略,对于实现系统的负载均衡和高可用性至关重要。Kafka支持三种主要的分区分配策略:RoundRobin(轮询)、Range(范围)和Sticky(粘性)。RoundRobin策略通过轮询方式均衡分配分区;Range策略根据主题分区数和消费者数量分配;而Sticky策略则在保持原有分配的基础上动态调整,以确保各消费者负载均衡。理解这些策略有助于优化Kafka性能并满足不同业务场景需求。
291 59
|
1月前
|
消息中间件 分布式计算 算法
大数据-67 Kafka 高级特性 分区 分配策略 Ranger、RoundRobin、Sticky、自定义分区器
大数据-67 Kafka 高级特性 分区 分配策略 Ranger、RoundRobin、Sticky、自定义分区器
50 3
下一篇
无影云桌面