Kafka进阶技术

文章目录

  • 一、架构细节
  • 一些比较重要的监控指标
  • 更强的Kafka
  • 合体技

作为消息中间件的扛把子, 无论是在企业的业务系统,还是大数据系统中, 都有着活跃的身影. 虽然近来出现了 RocketMQ Pulsar这样的后期之秀, 短期内 kafka的"大哥"地位依然不容撼动. 今年 ,kafka的最大"后台" confluent公司上市,
市值百亿美金. Kafka 及 基于Kafka的云技术是Confluent的核心产品. 如果有小伙伴担心Kafka 过时, 那我可以不负责任地说: 不会的, 没有的, 别瞎说.

由于工作需要笔者需要经常和 Kafka 打交道, 也常查阅Kafka文献. 但CSDN在内的N多博客 对于Kafka的介绍,其实大都并不深入, 误导人的文章更是多如牛毛. 所以,笔者在此写个小专栏,专门用来记录一些核心却不算特别常见的配置\概念\用法, 以及部分核心源码等.

需要指出的是, 本专栏并不会从零开始去介绍Kafka , 需要读者有一定的Kafka使用经验.

写得不对,欢迎留言探讨!

一、架构细节

  1. 消息过大,发送失败怎么办?
  2. [聊一聊,Kafka的复制机制]
    (https://blog.csdn.net/qq_30118563/article/details/119836340)
    kafka 是如何保证leader follower 数据一致的?
  3. 说一说,Kafka的压缩机制
  4. Kafka 的语义保证: 我就是想"不重不漏" ,能做到吗?
  5. 吞吐王者 Kafka: 为啥Kafka 这么能扛?

一些比较重要的监控指标

  1. kafka.Network.UnderReplicatedPartitions
    如果只能选择一个指标来监控kafka集群状态, 那么非这个指标莫属了.
    来看下confluent kafka的doc:

kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions
Number of under-replicated partitions (| ISR | < | current replicas |). Replicas that are added as part of a reassignment will not count toward this value. Alert if value is greater than 0.

翻译一下就是: 这个指标反映了集群中 under-replicated 的分区数量. kafka follower 会 从 leader pull数据,但当 currentTimeMs - lastCaughtUpTimeMs > replica.lag.time.max.ms , follower 会被移除出 ISR (“掉队了”).

再看下代码指出了 follower 卡住 以及 follower 拉数据慢两种常见导致"掉队"的场景

/**
If the follower already has the same leo as the leader, it will not be 
considered as out-of-sync, otherwise there are two cases that will be 
handled here - 

1 Stuck followers: If the leo of the replica hasn't been updated for 
maxLagMs ms, the follower is stuck and should be removed from the ISR 

2 Slow followers: If the replica has not read up to the leo within the last 
maxLagMs ms, then the follower is lagging and should be removed from the ISR 
Both these cases are handled by checking the lastCaughtUpTimeMs which 
represents the last time when the replica was fully caught up.

If either of the above conditions is violated, that replica is considered to 
be out of sync If an ISR update is in-flight, we will return an empty set 
here
*/
def getOutOfSyncReplicas(maxLagMs: Long){
}
  1. kafka.controller:type=KafkaController,name=OfflinePartitionsCount

Number of partitions that don’t have an active leader and are hence not writable or readable. Alert if value is greater than 0.

这个指标表征了当前 controller 记录的没有 leader 的分区数量. 如果该指标 >0 , 那么可能存在leader切换 ,broker宕机等异常情况了.

这里要注意下,它是controller记录的,所以从falcon之类的监控上看, 对应到非controller节点上,这个指标一直保持为0

  1. kafka.server:type=ReplicaFetcherManager,name=MaxLag,clientId=Replica
    follower落后 leader的消息数量

更强的Kafka

合体技

  1. Kafka + Flink

  1. Kafka未来发展, 社区在做什么

你可能感兴趣的:(KafkaZK,kafka)