gpt4 book ai didi

elasticsearch - elasticsearch 是如何处理不同任务的优先级的?

转载 作者:行者123 更新时间:2023-12-05 04:05:45 27 4
gpt4 key购买 nike

假设一个 elasticsearch 服务器在很短的时间内接收到 100 个任务。有些任务很短,有些任务很耗时,有些任务是删除任务,有些是插入和搜索查询。 elasticsearch 是如何决定先运行哪个,并发执行多少任务的。

elasticsearch端是否有任务执行策略,或者它只是处理一个FIFO队列中的所有任务,并允许一些固定数量的任务同时运行?

我希望 ES 有一些任务顺序优化功能。否则,我们必须手动检查任务的状态,设置一些超时并进行一些重试,这有些不方便。

最佳答案

很好的问题,因为关于任务执行优先级的文档还不够多,我们可以查看 Elasticsearch 的源代码来了解它是如何工作的。

首先,Elasticsearch 清楚地解释说他们维护不同的线程池来执行不同类型的任务,如他们的 official documentation 中所解释的那样。 .

使用上面的文档,以下事情很清楚:

  1. 它们有不同的线程池和队列(具有不同的容量)来执行不同类型的任务,如管理任务、搜索任务、索引任务等
  2. 不同的线程池使 Elasticsearch 能够并行执行任务并避免饥饿,并且有助于安排任务/确定任务的优先级。

现在开始调度/优先级/优化任务的执行,这在文档中没有很好地解释,我查看了 Elasticsearch 源代码并找到了 Priority java class在 Elasticsearch 代码的多个地方使用,定义任务的优先级,引用 FrozenCacheService code使用 LOW 优先级作为更新此缓存的优先级不是太高,另一方面 slowclusterStateProcessing在 Elasticsearch 中使用称为 IMMEDIATE 的最高优先级。

您还可以看到这个 Priority 枚举也用于 PrioritizedEsThreadPoolExecutor这再次用于创建在我的帖子开头解释的不同线程池。

简而言之,Elasticsearch确实有根据任务类型对任务进行排序,以优化任务的执行。

编辑:与优先搜索查询相关的问题 https://github.com/elastic/elasticsearch/issues/37867并在这个方向上做了一些工作https://github.com/elastic/elasticsearch/pull/57936

关于elasticsearch - elasticsearch 是如何处理不同任务的优先级的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50807069/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com