1 超时机制是一种保护机制。
假设A服务调用B服务,而B服务出现了问题,响应迟缓,这个时候如果没有超时机制,那么A服务会消耗大量的线程去调用B服务,最终可能导致A服务资源耗尽,从而服务A宕机,如果还有其他服务C调用了A服务,则会出现连锁反应,出现服务雪崩的效应。
2 集群容错机制
是指当A服务调用B服务超时后,Dubbo默认会执行重试的机制,尝试去调用集群的其他机器,默认是重试两次,即加上第一次调用,总共是三次。
3 配置
超时机制+容错机制的配置:支持以服务为单位和以方法为单位进行配置,方法的优先级高于服务
也支持在服务提供方和服务消费方配置,服务消费方优先级高于服务提供方
服务消费方配置
@Reference(timeout = 2000)
private IProductApi productApi;
//配置文件的方式
dubbo
consumer:
timeout: 3000
retries: 6 //重试次数
服务提供方配置
@Service(timeout = 2000)
//配置文件的方式
dubbo
provider:
timeout: 1000
集群容错的模式
1,Failover Cluster 默认的模式,失败自动切换,当出现失败,重试其他服务器。
通常用于读操作,但重试会带来更长延迟。可设置retries属性,规定重试的次数。
2,Failfast Cluster 快速失败,只发起一次调用,失败立即报错。
通常用于非幂等性的写操作,避免造成重复的数据。