elasticsearch源码分析之Transport(五)

本文深入剖析Elasticsearch的Transport模块,涵盖概念介绍、连接创建、数据发送与接收,探讨workerCount配置、连接数初始化及接收数据的处理流程。通过对NettyTransport的工作原理解析,揭示节点间通信的关键细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本介绍

1.1概念介绍

transport模块是es通信的基础模块,在elasticsearch中用的很广泛,比如集群node之间的通信、数据的传输、transport client方式的数据发送等等,只要数和通信、数据传输相关的都离不开transport模块的作用。

transport模块分为LocalTransport和NettyTransport两种,在TransportModule中注册中可以通过node是local还是network的来判别使用哪一种transport,可以通过配置node.mode来决定,bind逻辑如下:

 

默认而且通常我们使用的实现类是NettyTransport,描述信息如下:


NettyTransport分为四种类型的连接,分别是:

  • recovery:做数据恢复recovery,默认个数2个;
  • bulk:用于bulk请求,默认个数3个;
  • med/reg:典型的搜索和单doc索引,默认个数6个;
  • high:如集群state的发送等,默认个数1个;
  • ping:就是node之间的ping咯。默认个数1个;

其中recovery和bulk之前版本是同一个的,叫做low,表示大数据量的传输,它们可能会导致通常的请求(如search或是单数据索引)耗时加长;

1.2配置信息

1.2.1workerCount

workerCount表示transport的总共的worker数目,由transport.netty.worker_count来配置,默认值是32和Runtime.getRuntime().availableProcessors()中的最小值,也就是不能超过32,为什么会有这个限制呢?是因为在elasticsearch的github上有人提了个issues/3478,当使用core很多的机器的时候(比如48core),会创建太多的内存从而导致OOM,所以设置了32的上限来避免太多线程给系统产生压力。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值