-
Kafka核心技术与实战——21 | Java消费者是如何管理TCP连接的?
- 何时创建TCP连接?
- TCP连接是在调用KafkaConsumer.poll方法时被创造的。再细粒度较小,在poll方法内部有3个时机可以创建TCP连接
- 1. 发起FindCoordinator请求时。
- 消费者端有个组件叫协调者(Coordinator)
- 它驻留在 Broker 端的内存中,负责消费者组的组成员管理和各个消费者的位移提交管理
- 当消费者程序首次启动调用 poll 方法时,它需要向 Kafka 集群发送一个名为 FindCoordinator 的请求,希望 Kafka 集群告诉它哪个 Broker 是管理它的协调者
- 消费者程序会向集群中当前负载最小的那台 Broker 发送请求
- 2.连接协调者时
- Broker 处理完上一步发送的 FindCoordinator 请求之后,会返还对应的响应结果(Response),显式地告诉消费者哪个 Broker 是真正的协调者
- 因此在这一步,消费者知晓了真正的协调者后,会创建连向该 Broker 的 Socket 连接
- 只有成功连入协调者,协调者才能开启正常的组协调操作,比如加入组、等待组分配方案、心跳请求处理、位移获取、位移提交等
- 3.消费数据时。
- 消费者会为每个要消费的分区创建与该分区领导者副本所在 Broker 连接的 TCP
- 举个例子,假设消费者要消费 5 个分区的数据,这 5 个分区各自的领导者副本分布在 4 台 Broker 上,那么该消费者在消费时会创建与这 4 台 Broker 的 Socket 连接
- 创建多少个 TCP 连接?
- 消费者程序会创建 3 类 TCP 连接:
- 1、确定协调者和获取集群元数据。
- 2、连接协调者,令其执行组成员管理操作。
- 3、执行实际的消息获取。
- 何时关闭 TCP 连接?
- 消费者关闭 Socket 也分为主动关闭和 Kafka 自动关闭
- 主动关闭是指你显式地调用消费者 API 的方法去关闭消费者,具体方式就是手动调用 KafkaConsumer.close() 方法,或者是执行 Kill 命令,不论是 Kill -2 还是 Kill -9
- 而 Kafka 自动关闭是由消费者端参数 connection.max.idle.ms控制的,该参数现在的默认值是 9 分钟,即如果某个 Socket 连接上连续 9 分钟都没有任何请求“过境”的话,那么消费者会强行“杀掉”这个 Socket 连接
- 不过,和生产者有些不同的是,如果在编写消费者程序时,你使用了循环的方式来调用 poll 方法消费消息,那么上面提到的所有请求都会被定期发送到 Broker
- 因此这些 Socket 连接上总是能保证有请求在发送,从而也就实现了“长连接”的效果
- 小结
-
相关阅读:
Eclipse之注释操作
Eclipse之查找、替换操作
思维游戏(4)之有问题的楼房
第七层 应用层
第三章 进程
第一章 导论
软件开发流程
单元测试
Google Chrome浏览器调试
python安装完毕后,提示找不到ssl模块的解决步骤
-
原文地址:https://www.cnblogs.com/minimalist/p/12965306.html
Copyright © 2020-2023
润新知