MST

星途 面试题库

面试题:ElasticSearch API通用选项之高级难度

阐述 ElasticSearch API 通用选项 `timeout` 和 `master_timeout` 的区别。如果在集群环境下,主节点负载较高,这两个参数如何设置来保证数据写入的稳定性和及时性,并说明理由。
49.1万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

区别

  1. timeout
    • 含义:这个参数定义了整个请求等待响应的超时时间。它涵盖了从客户端发送请求开始,到接收到完整响应的整个过程。例如,当执行一个复杂的搜索请求或者批量写入请求时,timeout 会限制这个操作的最长等待时间。如果在这个时间内没有收到响应,客户端会抛出超时异常。
    • 作用范围:作用于整个请求与响应交互的过程,涉及到请求在集群内的传播、处理以及响应返回客户端等所有环节。
  2. master_timeout
    • 含义:此参数专门针对涉及主节点操作的请求设置超时时间。在 Elasticsearch 集群中,主节点负责一些关键操作,如创建索引、分配分片等。master_timeout 用于限制等待主节点完成这些操作的时间。
    • 作用范围:仅作用于与主节点交互的那部分操作,主要涉及需要主节点决策和协调的任务,不涵盖数据层面的读写操作(除了那些依赖主节点先完成相关配置的操作)。

集群主节点负载较高时的设置

  1. timeout 设置
    • 设置建议:适当增大 timeout 值。例如,将其从默认的 1 分钟延长到 2 - 5 分钟,具体时间取决于集群处理负载的能力和业务可接受的等待时长。
    • 理由:主节点负载高时,处理请求会变慢。增加 timeout 可以避免因请求处理时间稍长就被客户端判定为超时。这样能保证客户端有足够时间等待集群处理完请求,特别是对于一些复杂的写入操作,如批量索引创建等,确保数据写入不会因为过早的超时判定而失败。
  2. master_timeout 设置
    • 设置建议:同样适当增大 master_timeout 值,比如从默认的 30 秒延长到 1 - 2 分钟。
    • 理由:主节点负载高,其处理涉及主节点的操作(如索引创建、分片分配等)也会变慢。增大 master_timeout 可以确保主节点有足够时间完成这些关键操作,避免因为超时导致主节点相关操作失败,从而影响数据写入的稳定性。例如,如果在创建索引时,主节点因负载高未能在默认的 30 秒内完成索引元数据的更新等操作,增大 master_timeout 可防止索引创建失败,进而保证后续数据能正常写入到该索引中。