赞
踩
- <!--服务端配置-->
- <dubbo:service cluster="failover"/>
- <!--消费端配置-->
- <dubbo:reference cluster="failover"/>
- <!--
- retries:重试次数,不包括第一次,默认2次
- -->
- <dubbo:service cluster="failover" retries="3"/>
- <!--
- retries:重试次数,不包括第一次,默认3次
- failbacktasks:定时器中最大挂起任务数,默认100
- -->
- <dubbo:service cluster="failback" retries="5" failbacktasks="200"/>
代码实现逻辑
根据负载均衡策略选出需要调用的服务实例
执行选出的实例
执行实例成功即返回
执行异常则创建延时5秒的定时任务,并加入时间轮定时器,第一次需要进行定时器初始化,分为32个时间片,每1秒滚动一次,最大挂起任务默认100个,超出最大任务数时抛出RejectedExecutionException异常。
重试执行定时任务,次数超出最大执行次数停止,并输出error日志,默认为3次。
<dubbo:service cluster="failfast"/>
代码实现逻辑
根据负载均衡策略选出需要调用的服务实例
执行选出的实例
执行实例成功即返回,失败抛出RpcException异常
<dubbo:service cluster="failsafe"/>
代码实现逻辑
根据负载均衡策略选出需要调用的服务实例
执行选出的实例
执行实例成功即返回,失败输出error日志,并返RpcResult,视为忽略。
场景:并发调用指定数量的服务,一个成功则返回,对实时性要求交高的场景,要求快速返回,需要使用更多服务器资源。
- <!--
- forks:最大并发数,默认2
- timeout:并发返回超时时间,默认1000ms
- -->
- <dubbo:service cluster="forking" forks="3" timeout="500"/>
代码实现逻辑
根据负载均衡策略选出几个不同的服务实例
并发执行选出的几个实例,并将返回结果放入堵塞队列中
返回堵塞队列中的第一个值,如规定时间内未获取到队列中的值或获取到异常值则返回RPC异常。
场景:广播方式逐个调用服务提供者,有一个报错则返回错误,多用于通知服务提供者更新本地资源信息,如缓存,日志等。
<dubbo:service cluster="broadcast"/>
代码实现逻辑
循环逐个执行所有服务实例信息
保存一份返回结果和异常信息
执行完全部实例后,如异常信息不为空,则抛出异常信息,否则返回最后一个实例的结果。
场景:调用第一个可用服务
<dubbo:service cluster="available"/>
代码实现逻辑
循环所有服务实例信息
执行第一个可用的实例,并返回结果
如无可用实例则返回RpcException异常
场景:返回合并果或叠加处理结果
- <!--
- merger:合并发放名
- timeout:调用服务超时时间,默认1000ms
- -->
- <dubbo:service cluster="mergeable" merger="true" timeout="500"/>
代码实现逻辑
判断merger,为空、null、0、false、N/A是执行第一个可用服务并返回结果,无可用则执行第一个实例,并返回结果。
获取方法实例的返回类型
异步调用所有实例,并将异步结果Result存储到结果集中,返回异常输出error日志
结果集为空返回RpcException,大小为1时返回第一个Result
当merger的第一个字符为“.”时,判断当merger实例返回类型不为void,且返回类型必须是结果集中第一个返回类型的父类型或相同类型时,循环执行merger实例,每一次都传入上一次的返回结果,最终返回获取最后一次结果,非上述情况时循环执行merger实例,返回结果集中的第一个结果。
当merger为true或default时使用Dubbo默认合并器,否则使用自定义merger合并器,合并后返回
场景:调用注册默认标识的服务
- <!--
- default:默认标识
- -->
- <dubbo:registry address="zookeeper://xxx..." default="true"/>
- <dubbo:service cluster="registryaware"/>
代码实现逻辑
循环所有服务实例信息
执行第一个可用的实例且default为true的实例
无默认实例则执行第一个可用的实例
无可用的实例则抛出RpcException异常
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。