
Kafka
文章平均质量分 68
Kafka 原理梳理
cjh-Java
不积跬步,无以至千里
展开
-
14、Kafka 请求是怎么被处理的
无论是 Kafka 客户端还是 Broker 端,它们之间的交互都是通过 “请求 / 响应” 的方式完成的。比如,客户端会通过网络发送消息生产请求给 Broker,而 Broker 处理完成后,会发送对应的响应给到客户端。Apache Kafka 自己定义了一组请求协议,用于实现各种各样的交互操作。比如常见的 PRODUCE 请求是用于生产消息的,FETCH 请求是用于消费消息的,METADATA 请求是用于请求 Kafka 集群元数据信息的。原创 2023-12-18 20:00:00 · 2230 阅读 · 0 评论 -
13、Kafka副本机制详解
Kafka 是有主题概念的,而每个主题又进一步划分成若干个分区。副本的概念实际上是在分区层级下定义的,每个分区配置有若干个副本。所谓副本(Replica),本质就是一个只能追加写消息的提交日志。根据 Kafka 副本机制的定义,同一个分区下的所有副本保存有相同的消息序列,这些副本分散保存在不同的 Broker 上,从而能够对抗部分 Broker 宕机带来的数据不可用。原创 2023-12-17 17:10:52 · 273 阅读 · 0 评论 -
12、Kafka中位移提交那些事儿
Consumer 端有个位移的概念,它和消息在分区中的位移不是一回事儿,虽然它们的英文都是 Offset。今天我们要聊的位移是 Consumer 的消费位移,它记录了 Consumer 要消费的下一条消息的位移。这可能和你以前了解的有些出入,不过切记是下一条消息的位移,而不是目前最新消费消息的位移。举个例子。假设一个分区中有10条消息,位移分别是0到9。原创 2023-12-17 15:49:34 · 219 阅读 · 0 评论 -
11、避免消费者组非必要重平衡的方法
重平衡就是让一个 Consumer Group 下所有的 Consumer 实例就如何消费订阅主题的所有分区达成共识的过程。原创 2023-12-17 15:08:26 · 114 阅读 · 0 评论 -
10、神秘的“位移主题”
Consumer 的位移管理机制其实就是将 Consumer 的位移数据作为一条条普通的 Kafka 消息,提交到 __consumer_offsets 中。可以这么说,__consumer_offsets 的主要作用是保存 Kafka 消费者的位移信息。它要求这个提交过程不仅要实现高持久性,还要支持高频的写操作。显然,Kafka 的主题设计天然就满足这两个条件,因此,使用 Kafka 主题来保存位移这件事情,实际上就是一个水到渠成的想法了。原创 2023-12-16 07:15:00 · 101 阅读 · 0 评论 -
9、消费者组到底是什么?(高扩展性)
重平衡是 Consumer Group 端的功能,也就是所谓的 Rebalance 过程。Rebalance 本质上是一种协议,规定了一个 Consumer Group 下的所有 Consumer 如何达成一致,来分配订阅 Topic 的每个分区。比如某个 Group 下有 20 个 Consumer 实例,它订阅了一个具有 100 个分区的 Topic。正常情况下,Kafka 平均会为每个 Consumer 分配 5 个分区。这个分配的过程就叫 Rebalance。原创 2023-12-15 07:45:00 · 80 阅读 · 0 评论 -
8、Kafka 消息交付可靠性保障(幂等生产者和事务生产者是一回事吗?)
幂等性指若一个子程序是幂等的,那它必然不能修改系统状态。这样不管运行这个子程序多少次,与该子程序关联的那部分系统状态保持不变。幂等性有很多好处,其最大的优势在于我们可以安全地重试任何幂等性操作,反正它们也不会破坏我们的系统状态。如果是非幂等性操作,我们还需要担心某些操作执行多次对状态的影响,但对于幂等性操作而言,我们根本无需担心此事。kafka 自 0.11 版本开始也提供了对事务的支持,目前主要是在 read committed 隔离级别上做事情。原创 2023-12-15 06:45:00 · 239 阅读 · 0 评论 -
7、无消息丢失配置怎么实现?
就像前面说过的,Kafka 不认为消息是已提交的,因此也就没有 Kafka 丢失消息这一说了。如果这两步的顺序颠倒了,就可能出现这样的场景:当前的书签页是第 90 页,我先将书签放到第 100 页上,之后开始读书。目前 Kafka Producer 是异步发送消息的,也就是说如果你调用的是 producer.send (msg) 这个 API,那么它通常会立即返回,但此时你不能认为消息发送已成功完成。当然,这种处理方式可能带来的问题是消息的重复处理,类似于同一页书被读了很多遍,但这不属于消息丢失的情形。原创 2023-12-14 07:15:00 · 79 阅读 · 0 评论 -
6、生产者压缩算法面面观
压缩的思想,实际就是用时间去换空间的经典 trade-off 思想,在 Kafka 中,就是用 CPU 时间去换磁盘空间或网络 I/O 传输量,希望以较小的 CPU 开销带来更少的磁盘占用或更少的网络 I/O 传输。原创 2023-12-14 06:45:00 · 89 阅读 · 0 评论 -
5、生产者消息分区机制原理剖析
如果要自定义分区策略,你需要显式地配置生产者端的参数 partitioner.class。这个参数该怎么设定呢?方法很简单,在编写生产者程序时,你可以编写一个具体的类实现 org.apache.kafka.clients.producer.Partitioner 接口。这个接口也很简单,只定义了两个方法:partition() 和 close(),通常你只需要实现最重要的 partition 方法。原创 2023-12-13 07:30:00 · 88 阅读 · 0 评论 -
4、Kafka 核心常用配置项
以下参数都是那些要修改默认值的参数,因为它们的默认值不适合一般的生产环境。原创 2023-12-13 07:15:00 · 881 阅读 · 0 评论 -
3、Kafka 线上集群部署方案怎么做?
带宽是 1Gbps,即每秒处理 1Gb 的数据,假设每台 Kafka 服务器都是安装在专属的机器上,也就是说每台 Kafka 机器上没有混布其他服务,毕竟真实环境中不建议这么做。超过 70% 的阈值就有网络丢包的可能性了,故 70% 的设定是一个比较合理的值,也就是说单台 Kafka 服务器最多也就能使用大约 700Mb 的带宽资源。普通的以太网络,带宽主要有两种:1Gbps的千兆网络和10Gbps的万兆网络,特别是千兆网络应该是一般公司网络的标准配置了 以千兆网络为例,说明带宽资源规划。原创 2023-12-12 08:48:18 · 994 阅读 · 0 评论 -
2、快速搞定Kafka术语
副本是在分区层级下的,即每个分区可配置多个副本实现高可用。消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。Rebalance是Kafka消费者端实现高可用的重要手段。多个消费者实例共同组成的一个组,同时消费多个分区以实现高吞吐。表征消费者消费进度,每个消费者都有自己的消费者位移。消息:Record。Kafka是消息引擎,这里的消息就是指Kafka处理的主要对象。表示分区中每条消息的位置信息,是一个单调递增且不变的值。主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。原创 2023-12-11 17:20:17 · 349 阅读 · 0 评论 -
1、概述消息引擎系统
概述消息引擎系统原创 2023-12-11 14:02:51 · 182 阅读 · 0 评论 -
Kafka 之高并发
原创 2023-10-23 21:28:20 · 82 阅读 · 0 评论 -
Kafka 之高可用
原创 2023-10-23 21:27:39 · 58 阅读 · 0 评论 -
Kafka 之高性能
原创 2023-10-23 21:26:36 · 49 阅读 · 0 评论 -
Kafka 基本实现原理
原创 2023-10-23 21:25:41 · 55 阅读 · 0 评论 -
Kafka 相关背景
原创 2023-10-23 21:24:33 · 57 阅读 · 0 评论