1.Dubbo Cluster 集群的作用是什么?
简单来说:集群模块是服务提供者和服务消费者的中间层,为服务消费者屏蔽了服务提供者的情况,这样服务消费者就可以专心处理远程调用相关事宜。
比如发请求,接受服务提供者返回的数据等。
这就是 Dubbo Cluster 集群的作用。
2.Dubbo Cluster的10个实现类你能说出来几个,其中哪几个是集群容错的方法实现?
根据配置可以知道 Dubbo 集群接口 Cluster 有10种实现方法如下:
其中 failover、failfast、failsafe、failback、forking、broadcast 这 6 种才属于集群容错的范畴。
另外的实现均有其他的应用场景。
3.默认的集群实现类是什么呢?
失败自动切换:org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker
4.Failover Cluster 调用失败之后,会自动切换 Invoker 进行几次重试呢?
自动进行 2 次重试,共计调用 3 次。
5.什么是 Dubbo 的粘滞连接?
粘滞连接用于有状态服务,尽可能让客户端总是向同一提供者发起调用,除非该提供者挂了,再连另一台。粘滞连接将自动开启延迟连接,以减少长连接数。
6.粘滞连接在 Cluster 中是怎么应用的?
参照 AbstractClusterInvoker select 源码解析。
select 方法的主要逻辑集中在了对粘滞连接特性的支持上。
7.Cluster 选择出一个可用的 Invoker 最多要进行几次选择?
最多进行三次选择。
8.请问几次选择分别是什么?
①:通过负载均衡组件选择 Invoker。
②:如果选出来的 Invoker 不稳定,或不可用,此时需要调用 reselect 方法进行重选。
③:reselect 选出来的 Invoker 为空,此时定位 invoker 在 invokers 列表中的位置 index,然后获取 index+1 处的 invoker。