一.容错方式
服务调用总会出现,服务不可用的问题,需要短时间内去重试,还是要直接中断在不通的场景下选择。
1.非幂等性操作
每一次操作都对数据产生不同的影响。比支付功能,不允许重复提交。
Failfast Cluster
快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。
2.不重要操作,一次失败保留日志
失败就失败了,不重要,比如日志服务,忽略就好。
Failsafe Cluster
失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
3.需要实时性很高的操作
比如刷票,需要并发发送请求,谁先回来用谁的。
Forking Cluster
并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。
4.通知类消息
不着急,但是要保证发送到,所以保存日志,然后定时发送。
Failback Cluster
失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
5.广播类的通知
配置更新,逐一通知每台机器
Broadcast Cluster
广播调用所有提供者,逐个调用,任意一台报错则报错 .通常用于通知所有提供者更新缓存或日志等本地资源信息。
6.普通读操作(重试)
### Failover Cluster
失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。可通过 `retries="2"` 来设置重试次数(不含第一次)。
二、配置方式
1.Failover
<dubbo:service retries="2" />
2.Failsafe
<dubbo:service cluster="failsafe" />
其他类似
网友评论