ElasticSearch由Transport
负责通信,基于TCP通信采用Netty实现,采用Plugin构建,具体可参考Netty4Plugin
类。
1 Netty Bootstrap
和ServerBootstrap
的创建
TCP通信实现类为TcpTransport
,采用Netty的具体实现类则为Netty4Transport
。我们知道基于Netty的通信编码中需要为客户端创建Bootstrap
,为服务端创建ServerBootstrap
,TcpTransport
实现了AbstractLifecycleComponent
,Bootstrap
和ServerBootstrap
的创建是在AbstractLifecycleComponent.doStart
中创建的。
因为ElasticSearch每个节点都既是服务端(处理请求),也是客户端(发起请求),所有每个节点都会既创建服务端,也创建客户端。
//Netty4Transport
@Override
protected void doStart() {
boolean success = false;
try {
//创建客户端Bootstrap
clientBootstrap = createClientBootstrap();
if (NetworkService.NETWORK_SERVER.get(settings)) {
for (ProfileSettings profileSe