美文网首页
Elasticsearch节点间通信基础--Transport源

Elasticsearch节点间通信基础--Transport源

作者: Ombres | 来源:发表于2019-06-26 20:20 被阅读0次

简介

源码说明

TransportService 负责总的业务处理
Transport 是一个接口,定义了一个transport需要做哪些操作
TcpTransport 是实现了Transport接口的抽象类,定义了transport的一些基本操作
具体的实现有两种Netty和nio实现的,默认是netty的,nio则是插件形式提供。
public class Netty4Transport extends TcpTransport
ES的官方扩展x-park对原有的协议进行了加密封装
SecurityNetty4ServerTransport
SecurityNetty4Transport

Transport配置类,基础类

image.png
     /**
     * 注册一个请求操作
     */
    <Request extends TransportRequest> void registerRequestHandler(RequestHandlerRegistry<Request> reg);

    /**
     * 根据action名称返回已注册的handler
     */
    RequestHandlerRegistry<? extends TransportRequest> getRequestHandler(String action);
    /**
     * 添加消息监听器
     */
    void addMessageListener(TransportMessageListener listener);
    /**
     * 移除消息监听器
     */
    boolean removeMessageListener(TransportMessageListener listener);

    /**
     * transport绑定地址
     */
    BoundTransportAddress boundAddress();

    /**
     *  profile的绑定地址
     */
    Map<String, BoundTransportAddress> profileBoundAddresses();

    /**
     * 字符串形式的返回一个transport地址
     */
    TransportAddress[] addressesFromString(String address, int perAddressLimit) throws UnknownHostException;
    /**
     * 根据给定的节点打开一个新的连接,连接可用时会调用listener,返回的是一个可用的Releasable连接
     */
     Releasable openConnection(DiscoveryNode node, ConnectionProfile profile, ActionListener<Transport.Connection> listener);

客户端TransportService

这个服务是用来进行Transport的一些事务处理的。

封装的内容

  1. transport transport的基本配置
  2. connectionManager transport连接的管理器,维护所有的连接。
  3. threadPool 线程池,服务基本上都会用到连接池,所以这里维护一份
  4. clusterName 集群名称
  5. taskManager 任务管理器,ES中所有的操作都会作为一个task注册到这里
  6. TransportInterceptor.AsyncSender asyncSender 异步发送tranport请求的客户端
  7. Function<BoundTransportAddress, DiscoveryNode> localNodeFactory 维护所有的可用来连接的DiscoveryNode
  8. Transport.ResponseHandlers responseHandlers 注册了所有的响应操作
  9. TransportInterceptor 发送和接受信息的拦截器。
  10. timeoutInfoHandlers 超时操作
  11. tracerLog 追踪日志及相应上一篇说到的配置的信息维护
  12. remoteClusterService 远程集群服务 这个是新功能
  13. localNode localNodeConnection 本地连接的配置。。

服务端 Netty4Transport(继承自TcpTransport(Transport的实现))

包括四种连接类型low/med/high/ping

  1. low面向批处理的请求,比如恢复或者批量索引等操作
  2. med用于搜索或者单文档索引
  3. high用于集群状态通信等
  4. ping用于与集群中其他节点进行ping请求。

相关文章

网友评论

      本文标题:Elasticsearch节点间通信基础--Transport源

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