Dubbo常见面试题总结
- 问题1: Dubbo只能从注册中心获取服务吗?
- 问题2: Dubbo服务提供者一定要需要开启,消费者才可以开启吗?
- 问题3:Dubbo默认调用服务超时的时长是多少?
- 问题4:Dubbo 集群容错模式有哪些?默认容错模式是什么?
- 问题5:Dubbo注册中心有哪些?
- 问题6:Dubbo注册中心zookeeper挂掉了,消费者还能正常调用微服务吗?
- 问题7:Dubbo可以对调用结果进行缓存么?
- 问题8:Dubbo屏蔽与容错是什么?
- 问题9:Dubbo可以整合Hystrix吗?
- 问题10:Dubbo负载均衡策略有哪些,默认负载均衡策略是什么?
- 问题11:Dubbo注册中心zookeeper挂掉,负载均衡还有效吗?
- 问题12:Dubbo项目如何对服务升级?
问题1: Dubbo只能从注册中心获取服务吗?
不是,也可以使用直连,直连方式是不需要从注册中心是不需要从注册中心获取服务。在开发环境与测试环境下,经常需要绕过注册中心,只测试指定服务的提供者,这时可能需要点对点直连方式。
注意:直连方式会失去负载均衡的能力,所以不适合生产环境。
问题2: Dubbo服务提供者一定要需要开启,消费者才可以开启吗?
服务提供者不一定需要开启,因为dubbo有启动时检查机制,我们可以把check=false,这样子服务提供者就不需要开启也可以启动消费者
@RestController
public class UserController {
// check=false: 消费者在启动时不进行检查。
@Reference(check = false)
private UserService userService;
@GetMapping("/hello")
public String hello(String name){
// 发起远程调用(RPC)
return userService.hello(name);
}
}
问题3:Dubbo默认调用服务超时的时长是多少?
服务超时时长为:1000毫秒(1秒)
问题4:Dubbo 集群容错模式有哪些?默认容错模式是什么?
Dubbo集群容错模式有6种:Failover、Failfast 、Falisafe、Faillback、Forking、Broadcast
默认的容错模式是: Failover(失败自动切换)
问题5:Dubbo注册中心有哪些?
Dubbo默认支持五种注册中心:
1.Multicast
2.Zookeeper(推荐)
3.Nacos
4.Redis
5.Simple
问题6:Dubbo注册中心zookeeper挂掉了,消费者还能正常调用微服务吗?
可以正常调用,因为消费者从注册中心拉取服务后会在本地进行缓存。
问题7:Dubbo可以对调用结果进行缓存么?
可以对调用的结果进行缓存,不过默认是不可以的,需要通过cache属性配置结果缓存(lru, threadlocal, jcache)
配置文件:
<!-- 第一种方式 -->
<dubbo:reference interface="com.foo.BarService" cache="lru" />
<!-- 第二种方式 -->
<dubbo:reference interface="com.foo.BarService">
<dubbo:method name="findBar" cache="lru" />
</dubbo:reference>
注解@Reference:
@RestController
public class UserController {
// check=false: 消费者在启动时不进行检查。
// cache="lru": 配置结果缓存(lru, threadlocal, jcache)
// methods: 指定具体方法加结果缓存
@Reference(check = false, cache = "lru",
methods = {@Method(name = "hello", cache = "lru")})
private UserService userService;
@GetMapping("/hello")
public String hello(String name){
// 发起远程调用(RPC)
return userService.hello(name);
}
}
问题8:Dubbo屏蔽与容错是什么?
屏蔽:相当于熔断,不断发起远程调用
mock=force:return null
容错:相当于降级,在远程调用失败时,放回null值,不抛出异常,对消费者不产生调用影响。
mock=fail:return null
问题9:Dubbo可以整合Hystrix吗?
可以,用Hystrix框架来提供服务降级方法。
问题10:Dubbo负载均衡策略有哪些,默认负载均衡策略是什么?
负载均和策略有4种:
1.random 随机
2.roundrobin 轮训
3.leastactive 最少活跃数
4.consistanthash 一致性hash
默认负载均衡策略是: random 随机
问题11:Dubbo注册中心zookeeper挂掉,负载均衡还有效吗?
有效。因为消费者从zookeeper注册中心获取服务地址后会在做本地缓存。
问题12:Dubbo项目如何对服务升级?
使用服务提供者的版本号进行隔离,对服务进行灰度发布。