wwbmmm commented on PR #2177: URL: https://github.com/apache/brpc/pull/2177#issuecomment-2764946349
> bRPC的恐慌策略可以这样设计:**保持LB屏蔽策略不变**,当LB选不出实例的时候,不返回E112,而是使用第一次选到实例的信息构造出一个备用Socket用于通信。在E112期间,负载均衡也是生效的,开销也比较小,只是多一次创建Socket的开销,这个Socket在恐慌周期内是可以复用的,完全可接受。 这样是不是得修改所有的LB?除了框架自带的LB,有些用户还会自定义LB。 备用Socket这里还有个问题,采用什么连接策略?比如原来是单连接,那么备用Socket也是单连接,还是说退化成一个临时的短连接?如果备用Socket也是单连接,管理起来比较复杂,如果退化成短连接,可能会导致性能下降或给后端带来太大压力? > 跟Envoy的可调整的恐慌阈值不同,bRPC的恐慌阈值为100%,是这样考虑的:虽然Envoy区分连接状态和屏蔽状态,但是在LB处只看到屏蔽状态。触发恐慌的时候(阈值小于100%),会跟一些完全不可用的实例通信(连接错误码是ECONNREFUSED、ENETUNREACH、EHOSTUNREACH),这是没有意义,会浪费一次通信机会。 怎么判断实例是完全不可用呢?比如某一次连接ECONNREFUSED,后面再连有可能就成功了 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org For additional commands, e-mail: dev-h...@brpc.apache.org