在微服务架构中,当服务提供者的应用实例出现异常,而服务消费者无法感知时会影响服务的正常调用,并影响消费者的服务性能甚至可用性。离群实例摘除功能会检测应用实例的可用性并进行动态调整,以保证服务成功调用,从而提升业务的稳定性和服务质量。
背景信息
在下图的示例场景中,某个系统包含4个应用,A、B、C和D,其中应用A会分别调用应用B、C和D。当应用B、C或D的某些实例异常时(如图中红色圆圈所示,应用B有一个异常实例,C和D有2个异常实例),如果应用A无法感知,会导致部分调用失败;如果B、C、D的异常实例较多,有可能影响应用A的性能甚至服务可用性。
为了保护应用A的服务性能和可用性,可以为应用A配置离群实例摘除。配置后,即可监控B、C、D应用的实例状态并进行动态调整(摘除或添加),以保证服务成功调用。

离群实例摘除流程如下:
- 当应用B、C或D的某个实例异常时,系统能够检测到,并根据配置的摘除实例比例上限判断是否将对应的实例从应用中摘除。
- 摘除实例后,A的调用请求不再被分发到B、C、D的异常实例上。
- 按配置的恢复检测单位时间开始检测异常实例是否恢复。
- 检测间隔随检测次数按恢复检测单位时间(默认为0.5分钟)线性增加,当达到设置的未恢复累计次数上限后,会按最长时间间隔持续检测异常实例是否恢复。
- 当检测到实例恢复后,将实例重新添加到应用的实例列表中,处理调用请求。同时,将检测间隔重置为恢复检测单位时间,例如0.5分钟。
说明
- 当提供者应用的异常实例数量过多(超过摘除实例比例上限)时,仅按照设置的比例摘除。
- 当提供者应用中仅剩最后一个可用实例时,即使错误率超过配置的阈值,也不会摘除该实例。
创建离群实例摘除策略
结果验证
离群实例摘除策略配置并创建后,即开启了离群实例摘除。您可以进入配置了离群实例摘除的应用详情页面,查看该应用的监控信息,例如通过拓扑图观察调用请求是否还会转发到异常实例,应用调用的错误率/每分钟是否高于配置的错误率下限等,以便判断离群实例摘除策略是否生效。
相关操作
您可以在离群实例摘除列表单击编辑或删除,可以编辑或删除该离群实例摘除策略。