美文网首页
关于kafka中的tcp连接

关于kafka中的tcp连接

作者: kar_joe | 来源:发表于2020-01-11 18:48 被阅读0次

生产者

建立连接时机

  1. 启动
    在创建 KafkaProducer 实例时,生产者应用会在后台创建并启动一个名为 Sender 的线程,该 Sender 线程开始运行时首先会创建与 Broker 的连接。
  • 创建KafkaProducer 实例时,根据配置节点数,建立所有链接
  • 选负载最小的一个节点获取元数据信息
  • 根据元数据信息与所有节点建立连接
  • 除了发送消息有往来的节点,其他节点都没数据交互,过一段时间超时,节点主动断开空闲链接
  1. 元数据变动
    当 Producer 更新了集群的元数据信息之后,如果发现与某些 Broker 当前没有连接,那么它就会创建一个 TCP 连接,有两个场景更新元数据:
  • 当 Producer 尝试给一个不存在的主题发送消息时,Broker 会告诉 Producer 说这个主题不存在。
  • Producer 通过 metadata.max.age.ms 参数定期地去更新元数据信息。
  1. 发送消息时发现与broker无连接时会建立

关闭连接时机

  1. 客户端自己调close
  2. broker自动断开
    这与 Producer 端参数 connections.max.idle.ms 的值有关。默认情况下该参数值是 9 分钟,即如果在 9 分钟内没有任何请求“流过”某个 TCP 连接,那么 Kafka 会主动帮你把该 TCP 连接关闭。用户可以在 Producer 端设置 connections.max.idle.ms=-1 禁掉这种机制。一旦被设置成 -1,TCP 连接将成为永久长连接。
    一旦broker自动断开,连接变成close-wait状态。

消费者

建立连接时机

TCP 连接是在调用 KafkaConsumer.poll 方法时被创建的。再细粒度地说,在 poll 方法内部有 3 个时机可以创建 TCP 连接。

  1. .发起 FindCoordinator 请求时
    消费者程序首次启动调用 poll 方法时,它需要向 Kafka 集群(负载最小的节点)发送一个名为FindCoordinator 的请求,希望 Kafka 集群告诉它哪个 Broker 是管理它的协调者。
    但当第三类连接建立起来之后,这个连接会被关闭。

  2. 连接协调者时
    消费者知晓了真正的协调者后,会创建连向该 Broker 的 Socket 连接,并保持心跳上报。只有成功连入协调者,协调者才能开启正常的组协调操作,比如加入组、等待组分配方案、心跳请求处理、位移获取、位移提交等。

  3. 消费数据时
    消费者会为每个要消费的分区创建与该分区领导者副本所在 Broker 连接的 TCP。

  4. 示例


    image.png
    image.png
    image.png

相关文章

  • 关于kafka中的tcp连接

    生产者 建立连接时机 启动在创建 KafkaProducer 实例时,生产者应用会在后台创建并启动一个名为 Sen...

  • 小记TCP keepalive

    前几天在调查一个Kafka服务器tcp连接数过大的问题。具体情况是单台Kafka的tcp连接数超过了3万,都是ES...

  • Kafka实战之生产者实践

    本文分享一下我了解关于Kafka的一些最佳实践。 合理配置参数减少KafkaProducer初始化时候的TCP连接...

  • 全连接和半连接

    [TOC] 参考 关于TCP 半连接队列和全连接队列 深入浅出TCP中的SYN-Cookies ss命令和Recv...

  • 网络学习三

    关于TCP握手和挥手告别 tcp协议格式 三次握手 在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用...

  • php-fpm配置优化说明

    关于fastcgi的2种连接方式:tcp和unix socket tcp连接方式1、使用TCP层网络协议通信2、可...

  • TCP 的三次握手和四次挥手,了解泛洪攻击么

    引言 TCP 建立连接与断开连接的过程 TCP 泛洪攻击(TCP 建立连接过程中的攻击手段)与防护 TCP 建立连...

  • [头参数]07 - Connection

    目录 观察百度首页的tcp连接 测试chrome并行的tcp连接数量 连接相关的头参数 http2中的tcp连接 ...

  • Kafka Network层解析,还是有人把它说清楚了

    我们知道kafka是基于TCP连接的。其并没有像很多中间件使用netty作为TCP服务器。而是自己基于Java N...

  • Kafka Network层解析

    我们知道kafka是基于TCP连接的。其并没有像很多中间件使用netty作为TCP服务器。而是自己基于Java N...

网友评论

      本文标题:关于kafka中的tcp连接

      本文链接:https://www.haomeiwen.com/subject/lpkbactx.html