
Kafka
文章平均质量分 79
后端进阶
作者张乘辉,擅长消息中间件技能,负责公司百万 TPS 级别 Kafka 集群的维护,微信公众号「后端进阶」不定期分享 Kafka、RocketMQ 系列不讲概念直接真刀真枪的实战总结以及细节上的源码分析;同时作者也是阿里开源分布式事务框架 Seata Contributor,因此也会不定期分享关于 Seata 的相关知识;当然公号也会不定期发表 WEB 相关知识比如 Spring 全家桶等。不一定面面俱到,但一定让你感受到作者对于技术的追求是认真的!
展开
-
记一次 Kafka 集群线上扩容
前段时间收到某个 Kafka 集群的生产客户端反馈发送消息耗时很高,于是花了一段时间去排查这个问题,最后该集群进行扩容,由于某些主题的当前数据量实在太大,在对这些主题迁移...原创 2019-10-26 18:44:49 · 5557 阅读 · 0 评论 -
中通消息平台 Kafka 顺序消费线程模型的实践与优化
各类消息中间件对顺序消息实现的做法是将具有顺序性的一类消息发往相同的主题分区中,只需要将这类消息设置相同的 Key 即可,而 Kafka 会在任意时刻保证一个消费组同时只能有一个消费者监听消费,因此可在消费时按分区进行顺序消费,保证每个分区的消息具备局部顺序性。由于需要确保分区消息的顺序性,并不能并发地消费消费,对消费的吞吐量会造成一定的影响。那么,如何在保证消息顺序性的前提下,最大限度的提高消费者的消费能力?本文将会对 Kafka 消费者拉取消息流程进行深度分析之后,对 Kafka 消费者顺序消费线程模原创 2020-12-01 11:55:30 · 6070 阅读 · 5 评论 -
Kafka Producer 异步发送消息居然也会阻塞?
Kafka 一直以来都以高吞吐量的特性而家喻户晓,就在上周,在一个性能监控项目中,需要使用到 Kafka 传输海量消息,在这过程中遇到了一个 Kafka Producer 异步发送消息会被阻塞的问题,导致生产端发送耗时很大。是的,你没听错,Kafka Producer 异步发送消息也会发生阻塞现象,那究竟是怎么回事呢?在新版的 Kafka Producer 中,设计了一个消息缓冲池,客户端发送的消息都会被存储到缓冲池中,同时 Producer 启动后还会开启一个 Sender 线程,不断地从缓冲池获取消原创 2020-09-13 18:13:46 · 2605 阅读 · 2 评论 -
彻底搞懂 Kafka 消息大小相关参数设置的规则
前段时间接到用户要求,调整某个主题在 Kafka 集群消息大小为 4M。根据 Kafka 消息大小规则设定,生产端自行将 max.request.size 调整为 4M 大小,Kafka 集群为该主题设置主题级别参数 max.message.bytes 的大小为 4M。以上是针对 Kafka 2.2.x 版本的设置,需要注意的是,在某些旧版本当中,还需要调整相关关联参数,比如 replica.fetch.max.bytes 等。从上面例子可看出,Kafka 消息大小的设置还是挺复杂的一件事,而且还分版原创 2020-05-21 13:33:13 · 11248 阅读 · 6 评论 -
深度剖析 Kafka/RocketMQ 顺序消息的一些坑
我不记得有多少人问过以下这个问题了:我觉得这个问题问得很频繁,而且非常经典,在这里我就以 Kafka 为例子,说说我对 Kafka 顺序消息的一些理解吧,如有理解不对的地方麻烦留言指点一下。通常我们在说顺序消费指的是生产者按照顺序发送,消费者按照顺序进行消费,听起来简单,但做起来却非常困难。我们都知道无论是 Kafka 还是 RocketMQ,每个主题下面都有若干分区(RocketMQ 叫队列),如果消息被分配到不同的分区中,那么 Kafka 是不能保证消息的消费顺序的,因为每个分区都分配到一个消费原创 2020-05-13 16:35:12 · 1045 阅读 · 0 评论 -
当 Kafka 分区不可用且 leader 副本被损坏时,如何尽量减少数据的丢失?
经过上次 Kafka 日志集群某节点重启失败导致某个主题分区不可用的事故之后,这篇文章专门对分区不可用进行故障重现,并给出我的一些骚操作来尽量减少数据的丢失。故障重现下面我用一个例子重现现分区不可用且 leader 副本被损坏的例子:使用 unclean.leader.election.enable = false 参数启动 broker0;使用 unclean.leader.elect...原创 2020-03-29 20:26:55 · 1645 阅读 · 0 评论 -
从源码和日志文件结构中分析 Kafka 重启失败事件
上次的 Kafka 重启失败事件,对为什么重启失败的原因似乎并没有解释清楚,那么我就在这里按照我对 Kafka 的认识,从源码和日志文件结构去尝试寻找原因。从源码中定位到问题的根源首先把导致 Kafka 进程退出的异常栈贴出来:注:以下源码基于 kafka 0.11.0.2 版本。我们直接从 index 文件损坏警告日志的位置开始:kafka.log.Log#loadSegmentFi...原创 2020-03-22 15:39:23 · 560 阅读 · 0 评论 -
一次 kafka 消息堆积问题排查
收到某业务组的小伙伴发来的反馈,具体问题如下:项目中某 kafka 消息组消费特别慢,有时候在 kafka-manager 控制台看到有些消费者已被踢出消费组。从服务端日志看到如下信息:该消费组在短时间内重平衡了 600 多次。从 cat 查看得知,每条消息处理都会有 4 次数据库的交互,经过一番沟通之后,发现每条消息的处理耗时大概率保持在 200ms 以上。Kafka 发生重平衡的有...原创 2020-01-07 09:40:05 · 8400 阅读 · 3 评论 -
图解 Kafka 水印备份机制
高可用是很多分布式系统中必备的特征之一,Kafka 日志的高可用是通过基于 leader-follower 的多副本同步实现的,每个分区下有多个副本,其中只有一个是 leader 副本,提供发送和消费消息,其余都是 follower 副本,不断地发送 fetch 请求给 leader 副本以同步消息,如果 leader 在整个集群运行过程中不发生故障,follower 副本不会起到任何作用,问题就...原创 2019-12-27 11:11:56 · 5854 阅读 · 0 评论 -
记一次 Kafka 集群线上扩容
前段时间收到某个 Kafka 集群的生产客户端反馈发送消息耗时很高,于是花了一段时间去排查这个问题,最后该集群进行扩容,由于某些主题的当前数据量实在太大,在对这些主题迁移过程中话费了很长一段时间,不过这个过程还算顺利,因为在迁移过程中也做足了各方面的调研,包括分区重平衡过程中对客户端的影响,以及对整个集群的性能影响等,特此将这个过程总结一下,也为双十一打了一剂强心剂。排查问题与分析接到...原创 2019-12-19 20:41:44 · 14756 阅读 · 1 评论 -
关于 Kafka 的一些面试题目
上周客串了一下面试官,在这里就简单记录一下期间我问到的一些关于 Kafka 的面试题目,这些都是我平时在学习 Kafka 的一些总结要点。谈谈你对 kafka 的整体认识?问这个问题主要是想知道面试者对 Kafka 的整体认识如何,能够大致了解清楚面试者对 Kafka 的相关概念的熟悉程度,比如消息、topic、partition、replica、offset、重平衡、lead...原创 2019-12-17 20:33:33 · 5353 阅读 · 0 评论 -
记一次 Kafka 重启失败问题排查
背景在 2 月10 号下午大概 1 点半左右,收到用户方反馈,发现日志 kafka 集群 A 主题 的 34 分区选举不了 leader,导致某些消息发送到该分区时,会报如下 no leader 的错误信息:In the middle of a leadership election, there is currently no leader for this partition and he...原创 2020-03-16 14:22:20 · 1593 阅读 · 0 评论