使用kafka中,Java生产者是如何管理TCP连接的?

Kafka Java生产者在启动时会创建与bootstrap.servers配置的Broker的TCP连接。TCP连接的创建主要在Producer实例初始化、元数据更新和发送消息时。当connections.max.idle.ms达到一定阈值,无活动的连接会被关闭。存在资源浪费问题,特别是在大型集群中。
摘要由CSDN通过智能技术生成

为何采用 TCP?

1.在开发客户端时,人们能够利用 TCP 本身提供的一些高级功能,比如多路复用请求以及同时轮询多个连接的能力。

所谓的多路复用请求,即 multiplexing request,是指将两个或多个数据流合并到底层单一物理连接中的过程。TCP 的多路复用请求会在一条物理连接上创建若干个虚拟连接,每个虚拟连接负责流转各自对应的数据流。其实严格来说,TCP 并不能多路复用,它只是提供可靠的消息交付语义保证,比如自动重传丢失的报文。

更严谨地说,作为一个基于报文的协议,TCP 能够被用于多路复用连接场景的前提是,上层的应用协议(比如 HTTP)允许发送多条消息。

2.目前已知的 HTTP 库在很多编程语言中都略显简陋。

基于这两个原因,Kafka 社区决定采用 TCP 协议作为所有请求通信的底层协议。

何时创建 TCP 连接?

在创建 KafkaProducer 实例时,生产者应用会在后台创建并启动一个名为 Sender 的线程,该 Sender 线程开始运行时首先会创建与 Broker 的连接。

此时还没有调用 send 方法,这个 Producer 都不知道给哪个主题发消息,它会连接 bootstrap.servers 参数指定的所有 Broker 。

bootstrap.servers 是 Producer 的核心参数之一,指定了这个 Producer 启动时要连接的 Broker 地址。

如果你为这个参数指定了 1000 个 Broker 连接信息,那么你的 Producer 启动时会首先创建与这 1000 个 Broker 的 TCP 连接。

在实际使用过程中,我并

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值