ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 传输 原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-transport.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-transport.html) 译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10027225](http://www.apache.wiki/pages/viewpage.action?pageId=10027225) 贡献者 :  [@琴剑蓝天](http://www.apache.wiki/users/viewuserprofile.action?username=xujie),[ApacheCN](/display/~apachecn),[Apache中文网](/display/~apachechina) 传输模块用于集群内节点之间的内部通信。 从一个节点到另一个节点的每个呼叫都使用传输模块(例如,当 **HTTP GET** 请求由一个节点处理,并且实际上应该由保存数据的另一个节点处理时)。 传输机制本质上是完全异步的,这意味着没有阻塞线程等待响应。 使用异步通信的好处是首先解决了 **C10k** 问题,同时也是分散(广播)/收集操作(如 **ElasticSearch** 中的搜索)的理想解决方案。  ## TCP传输 **TCP** 传输是使用 **TCP** 的传输模块的实现。 它允许以下设置: | 设置 | 描述 | | --- | --- | | _`transport.tcp.port`_ | 绑定端口范围。 默认为9300-9400。 | | _`transport.publish_port`_ | 群集中其他节点在与此节点通信时应使用的端口。 当集群节点位于代理或防火墙后面,并且 _transport.tcp.port_ 不能从外部直接寻址时,此功能很有用。 默认为通过 _transport.tcp.port_ 分配的实际端口。 | | _`transport.bind_host`_ | 绑定传输服务的主机地址。 默认为 _transport.host_(如果设置)或 _network.bind_host_。 | | _`transport.publish_host`_ | 要发布的集群中要连接的节点的主机地址。 默认为 _transport.host_(如果设置)或 _network.publish_host_ 。 | | _`transport.host`_ | 用于设置 _transport.bind_host_ 和 _transport.publish_host_ 默认设置为 _transport.host_ 或 _network.host_。 | | _`transport.tcp.connect_timeout`_ | 套接字连接超时设置(时间设置格式)。 默认为30秒。 | | _`transport.tcp.compress`_ | 设置为true以在所有节点之间启用压缩(LZF)。 默认为 **false**。 | | _`transport.ping_schedule`_ | 发送固定的 ping 消息,以确保连接保持活动。 传输客户端默认为5s,其他地方为-1(禁用)。 | 它还使用[通用网络设置](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-network.html)。 ## TCP传输配置文件 **Elasticsearch** 允许您通过使用传输配置文件绑定到不同接口上的多个端口。请参阅此示例配置: ``` transport.profiles.default.port:9300-9400 transport.profiles.default.bind_host:10.0.0.1 transport.profiles.client.port:9500-9600 transport.profiles.client.bind_host:192.168.0.1 transport.profiles.dmz.port:9700-9800 transport.profiles.dmz.bind_host:172.16.1.2 ``` 默认配置文件是一个特例。如果没有设置特定的配置设置,它将被用作任何其他配置文件的备用。请注意,默认配置文件是群集中其他节点通常连接到此节点的方式。将来,此功能将允许通过多个接口启用节点到节点的通信。 可以配置以下参数: * _port_:要绑定的端口  * _bind___host_:要绑定的主机 * _publish_host_:在信息API中发布的主机 * _tcp_no_delay_:为此套接字配置 _TCP_NO_DELAY_ 选项 * _tcp_keep_alive_:为此套接字配置 _SO_KEEPALIVE_ 选项 * _reuse_address_:配置此套接字的 _SO_REUSEADDR_ 选项 * _tcp_send_buffer_size_:配置套接字的发送缓冲区大小 * _tcp_receive_buffer_size_:配置套接字的接收缓冲区大小 ## 传输跟踪器 传输模块有一个专用的跟踪记录器,当它被激活时,会记录进出的请求。 可以通过将 _org.elasticsearch.transport.TransportService.tracer_ 记录器的级别设置为 _TRACE_ 来动态激活日志: ``` PUT _cluster/settings { "transient" : { "logger.org.elasticsearch.transport.TransportService.tracer" : "TRACE" } } ``` 您还可以使用一组包含和排除通配符模式来控制哪些操作将被跟踪。 默认情况下,每个请求都将被跟踪,除了故障检测 _ping_ : ``` PUT _cluster/settings { "transient" : { "transport.tracer.include" : "*", "transport.tracer.exclude" : "internal:discovery/zen/fd*" } } ```