apache / brpc

brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means "better RPC".
https://brpc.apache.org
Apache License 2.0
16.36k stars 3.96k forks source link

EINVAL返回码触发熔断问题 #728

Open cfz opened 5 years ago

cfz commented 5 years ago

在熔断文档中提到, 服务端返回EINVAL会导致熔断判定.

但按照我的理解, EINVAL是一个比较常见的返回码, 导致EINVAL的原因可能在客户端, 也可能在服务端, 错误可能是暂时的, 也可能是长期的. 不知道在设计之初, 是基于什么考虑, 将EINVAL也包括在触发熔断的错误类别中?

多谢~

zyearn commented 5 years ago

The current implementation considers all the error as feedback to circuit breaker, which may not be a reasonable way. I have opened a new issue to discuss which error should be ignored.

hiberabyss commented 2 years ago

这里能有办法把 EINVAL 的错误忽略掉么?或者能有办法禁用默认的熔断机制么?

我的使用场景:

当某个模型的请求存在问题时,tfserving 会返回 EINVAL,导致 tfserving 被熔断,所有的下游服务都被认为是不可访问的。这不是预期内的,期望其它模型的访问应该也能正常 serve 。

hiberabyss commented 2 years ago

我目前是使用的 k8s 的 service 进行连接的,这里对 brpc 而言是只有一个节点;在这种场景下是否可以不触发熔断逻辑?

zyearn commented 2 years ago

这个场景下不打开熔断功能是不是就好了

hiberabyss commented 2 years ago

文档里说默认的熔断没法关闭?

cdjingit commented 2 years ago

是没法关闭,看起来是需要提供一个配置化的开关