功能简介
Flowcontrol流量控制插件是天翼云搜索引擎团队自研的插件,可以帮助提高实例的高可用性和稳定性。该插件可以实时监控实例的Search请求情况,将实例的请求流量控制在一个合理的范围内。由于OpenSearch和Elasticsearch搜索引擎本身并不聚焦于流量管控方面建设,因此,Flowcontrol插件可以在搜索引擎内部,不引入额外组件,实现流量管控功能。
使用限制
仅限OpenSearch实例使用。
操作示例
在 OpenSearch组件的config/opensearch.yml配置文件中已默认设置了集群的QPS值为100,假如希望设置实例QPS为1000,可以调用Rest API来配置:
PUT _cluster/settings
{
"transient": {
"flowcontrol.search.qps":"1000"
}
}
因为依赖插件机制实现,所以,需要对原来的endponit进行简单改写,将_search替换为_search_flowcontrol即可,其他所有查询等均无需改动。
- 作为参照,记录一次正常的search请求:
- 当实例压力很小的时候,替换流量控制endpoint以后,进行查询,会得到一模一样的返回结果,论证了替换endpoint对于搜索结果是完全无影响的。如下图所示:
- 通过一个多线程的脚本,模拟高通量查询,压测使得集群的QPS超过阈值。再进行同样的请求:
可以看到,请求返回了http_code=429的异常,提示了实例负载过高的异常提示。
不仅如此,Flowcontrol流量控制插件,可以有效减少高负载情况下,实例内对索引的查询、聚合等操作,可以一定程度上避免实例过高负载带来的OOM等问题,从而有效提升稳定性和可靠性。