节点说明:
Invoker:封装了provider地址和service接口信息
Directory:相当于是Invoker的集合,它的值是可变化的,比如注册中心推送的变更数据。
Cluster:将Directory里的多个Invoker伪装成一个Invoker,伪装过程包含了容错逻辑,默认是Failover,调用失败立即调用另一个。
Router:从多个Invoker中按照路由规则选出子集,比如读写分离,应用隔离等。
LoadBalance:从多个Invoker中选出具体的一个用于本次调用,选的过程中包含了负载均衡算法,调用失败,重新选取。
集群容错配置:
<dubbo:service cluster=“failsafe” />或<dubbo:reference cluster=“failsafe” />
集群容错模式:
Failover:失败自动切换,可以配合retries来使用,默认值2
示例:
<dubbo:service retries="2" />
<dubbo:reference retries="2" />
<dubbo:method name="findFoo" retries="2" />
Failfast:快速失败,只调用一次,调用失败,立即抛出异常
Failsafe:失败安全,调用失败,忽略异常。
Failback:失败自动恢复,后台维护了一个定时服务的线程池,每5秒定时重新调用。
Forking:并行调用多个请求,只要一个成功即返回,如果设置了forks,后台会根据负载均衡选举出forks的Invoker,并行调用,如果没有设置forks,则并发执行所有的Invoker,并发是通过线程池来实现的
Broadcast:广播调用所有提供者,逐个调用,任意一台报错则报错。