亚马逊云科技精选博客
我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
通过 Amazon OpenSearch Service 的集群管理器任务限制提高弹性
我们为集群管理器节点引入了限制机制,以防范大量待处理任务。它在向领导节点提交任务时起作用。此功能适用于亚马逊 OpenSearch Service 中的亚马逊 OpenSearch 引擎 1.3 及更高版本。
集群管理器任务限制
集群管理器任务限制是一种保护群集管理器免受其他节点提交过多资源密集型群集状态更新任务的机制。对于诸如 put-map
ping之类的任务 ,数据节点现有的集群状态任务限制机制有助于避免集群管理器过载。例如,如果集群管理器可以处理 10K 个请求,并且域有 10 个数据节点,则每个数据节点将获得 1,000 个放置映射请求的限制。如果域增长到 100 个数据节点,则每个数据节点必须限制为 100 个请求。为了避免在群集更改数据节点数量时必须修改这些限制并支持更多任务类型,我们在集群管理器节点上引入了限制以进行自我保护。
集群状态更新任务属于不同的类型( 创建索引
、 放置映射
等) ,这种限制机制会根据任务的类型拒绝任务。对于任何传入任务,集群管理器都会评估待处理任务队列中相同类型的任务总数。如果此数字超过任务类型的阈值,则集群管理器会拒绝传入的任务。
Amazon OpenSearch Service 为不同的任务类型配置不同的限制阈值,并且限制对每种任务类型分别起作用。拒绝特定任务不会影响其他不同类型的任务。例如,如果集群管理器拒绝了
放置映射
任务,它仍然可以接受并发 的创建索引任务。
_mapping/ 、
等)生成的所有任务均已上线以进行限制, 并在此处列出。
_set
ting/
当群集管理器拒绝任务时,数据节点会以指数回退方式执行重试,将任务重新提交给集群管理器,直到成功提交。如果在超时时间内重试失败,则 Amazon OpenSearch 会返回集群超时错误。
错误示例
处理超时错误
限制异常由数据节点处理;它们对受限制的任务执行重试。如果 API 在限制期内超时,你会得到 pro cess_cluster_event_timeout_exception,这是 50
3 错误。这与之前在集群管理器节点队列中的任务超时时时引发的错误相同。你可以重试出现超时错误的 API 调用。
此
监控节流
你可以使用 _n
odes/stats API 来监控详细的限制统计信息。
你可以使用 _
来跟踪哪些任务受到限制以及有多少任务被限制。 nodes/stats 响应 中的 cluster_manager_
throttling 部分
示例响应
结论
在这篇文章中,我们向您展示了向集群管理器节点提交任务的限制机制如何使其更具弹性地抵御Amazon OpenSearch Service中的大量待处理任务,我们在该服务中微调了每个集群的阈值。
作者简介
Dhwanil Patel 是一名软件开发工程师,在亚马逊 OpenSearch Service 上工作。他喜欢为开源软件开发做出贡献,并且对分布式系统充满热情。
Shweta Tharej a 是亚马逊 OpenSearch 服务的首席工程师。她对构建分布式和自主系统感兴趣。她是一名维护者,也是 OpenSearch 的积极贡献者。
乔恩·汉德勒 是总部位于加利福尼亚州帕洛阿尔托的亚马逊网络服务的高级首席解决方案架构师。Jon 与 OpenSearch 和亚马逊 OpenSearch Service 紧密合作,为想要迁移到 亚马逊云科技 云的搜索和日志分析工作负载的众多客户提供帮助和指导。在加入 亚马逊云科技 之前,Jon 的软件开发生涯包括 4 年编写大型电子商务搜索引擎。Jon 拥有宾夕法尼亚大学的文学学士学位以及西北大学的计算机科学和人工智能理学硕士和博士学位。