本文主要是介绍elasticsearch源码分析之Transport(五),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、基本介绍
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的上限来避免太多线程给系统产生压力。
这篇关于elasticsearch源码分析之Transport(五)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!