Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

流控功能默认将health接口排除流控范围 #4606

Open
JedrekWang opened this issue Nov 27, 2024 · 7 comments
Open

流控功能默认将health接口排除流控范围 #4606

JedrekWang opened this issue Nov 27, 2024 · 7 comments

Comments

@JedrekWang
Copy link

背景

servicecomb的qps-flowcontrol-provider提供了针对于服务粒度和接口粒度的流控配置,当超过流控阈值后,接口会调度失败,servicecomb默认的health接口一般用于检测服务当前状态

问题

当health接口触发流控后,可能导致误判将对应服务实例下线导致流量受损等情况

诉求

服务开启流控功能后,health接口默认不参与全局流控值的计算,此时health流控不会对当前高负载场景有所缓解,且触发实例下线后会加剧流量承载压力

@liubao68
Copy link
Contributor

https://servicecomb.apache.org/references/java-chassis/zh_CN/references-handlers/ratelimit.html 可以参考这个给health接口配置独立的限流策略。

@JedrekWang
Copy link
Author

我的意思是当health不配置独立限流策略时,能否不参与全局流控值的计算?之前遇到过业务配置health独立限流,但是流控阈值配置不合理导致的问题,所以想能不能默认不参与全局流控值的计算,这样业务不需要考虑给health接口配置多大的流控范围也不会有风险

@chengyouling
Copy link
Contributor

目前没有主动在path匹配中剔除health的逻辑,这个能力咱们业务系统用的很多吗?

@JedrekWang
Copy link
Author

是的,我们之前版本如果业务未配置OLC会触发告警,所以很多业务都上了流控能力,才发现了当前这个问题

@JedrekWang
Copy link
Author

这个能支持吗?

@chengyouling
Copy link
Contributor

我们看看怎么优化下

@liubao68
Copy link
Contributor

liubao68 commented Dec 4, 2024

这个感觉是具体产品性需求,不适合在框架讨论和考虑。 1. health并不是框架强制必须的接口; 2. 框架已经提供了对特殊接口设置流控的能力;3. health是否需要做全局流控,这个也是需要结合业务实际情况确定的,并不是总是要排除。

从整体情况看, 健康检查工具也是可以自行做些优化,比如对应流控的场景,不视为不健康。 但可能有些系统就是要作为不健康来处理, 这个取决于系统自身的设计考量。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants