yhs0092 opened a new issue, #4427: URL: https://github.com/apache/servicecomb-java-chassis/issues/4427
## 背景 前期 Java-Chassis 做了一个优化 #4127 , 这个 issue 可以确保本 AZ 的provider实例数太少时, 本 AZ 的consumer端自动关闭AZ亲和能力, 这个 issue 确实能保护本 AZ 剩余的 provider 实例不被过大的流量压垮了. 但还有一种其他 AZ 的 consumer 端关闭 AZ 亲和能力造成本 AZ 的 provider 压力过大的场景没有考虑到: 假设有两个 AZ 分别是 AZ1 和 AZ2, 他们的provider端实例数均为 50, 假设正常情况下每个 provider 实例承载的流量均为`1`. 如果AZ2出现故障, 仅剩 10 个 provider 实例在线, 则 AZ2 的consumer端会关闭 AZ亲和, 将流量平摊到AZ1和AZ2的实例中. 此时从 AZ2 的consumer端路由每个provider实例均为 `50 / ( 50 + 10 ) = 5/6`; 但 AZ1 的consumer端仍在进行 AZ 亲和, 导致每个 AZ1 的 provider 还要承载来自 AZ1 的流量 `1`. 最终每一个 AZ1 的 provider 实例承载的流量为 `11/6`, 而每个 AZ2 的 provider 实例承载的流量仅为 `5/6`, 两边负载极不平衡. ## 建议 不同AZ的consumer端应该同步开启或关闭 AZ 亲和能力, 确保下游的 provider 实例承载的流量是平衡的. -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
