面试-Dubbo常见问题

面试-Dubbo 常见问题

1. 什么是Dubbo?

Dubbo 是一个RPC框架,包含注册中心,服务提供方,服务消费方,控制台,监控中心。

2. Dubbo启动时依赖服务不可用,会怎么样?

Dubbo 启动时会从注册中心拉取消费者需要的提供方信息,如果依赖的服务提供方不可用,Dubbo消费方会启动失败,并且不停的向注册中心请求提供方信息,抛出异常找不到对应的提供方。可以通过check="false"关闭检查,只有在调用时才检查是否有提供方。

3. Dubbo 线程模型

Dubbo 提供了以下几种线程模型

all: 所有的请求一律进工作线程池(默认)
direct: 一律使用IO线程池
message: 除了请求和响应走线程池,其他都是IO线程池(推荐)
execution: 除了请求,其他都走IO线程池
connection: 连接和断连进队列,其他都走工作线程池

4. Dubbo有哪些负载均衡策略?

轮询,随机,最少活跃调用,一致性hash

5. 当同一个服务注册多个时,如何指定到某一个服务?

可以通过绕开注册中心,直接做点对点的请求,指定某一个服务提供方的地址

6. Dubbo 与SpringCloud 区别?

定位不同: Dubbo 是一个高性能的RPC 框架,SpringCloud 是微服务一站式解决方案
调用方式: Dubbo 是采用Dubbo 协议,SpringCloud 是采用Http协议
组件差异: SpringCloud 有较好的生态环境,丰富的组件,Dubbo 组件较少,但是灵活性强,可自由拓展。

7. Dubbo的配置纬度有哪些?

Application 应用纬度(如服务名等)
Service 服务纬度 (如超时时间;)
Method 方法纬度
Provider 提供者纬度
Consumer 消费者纬度

8. Dubbo 服务降级

当提供方服务出现异常时,注册中心会向提供方的消费者发送广播,通知消费方服务,消费方更新本地缓存,在执行调用提供方的代码时,就会抛出异常,可以封装统一的RPC返回体,当发生RPC异常时,return null,消费方只需要判断返回的内容是否为空,就不会因为异常导致业务中断。

9.限流方案

单机的熔弹方案
1:限制某一个接口的一段时间内的并发次数,可以在接口请求时,采用切面方式,获取内存中的阈值,并记录次数,如开始时配置了阈值为10 ,一个请求进来后,记录加1,判断当记录值大于阈值时,拒绝请求,否则放行请求,当请求操作完成后再将记录值减1。
2:采用令牌桶的方式,如初始化令牌桶的数量为10,每次请求进入后,都获取1个令牌,令牌桶数量减1,判断令牌桶减1后的数值,小于0,拒绝请求,否则放行请求,再通过外部程序或者线程,每隔一段时间就重置令牌桶的数量。从而达到限流目的。

如果是集群部署的情况下,可以通过分布式限流系统,进行限流,业务系统接收到请求后,统一向分布式限流系统获取一定数量的令牌桶,业务系统拿到令牌桶后,再自己内存中进行限流,当令牌消耗完后,再次向分布式限流系统获取。这样就可以达到限流的目的。

10.熔断及熔断恢复

当请求调用的服务链路较长时,其中某个服务出现异常,导致线程阻塞,引起上游服务甚至整个链路的崩坏,所以要加入熔断机制,设定链路服务之间请求的超时时间,当超过超时时间后,释放线程,返回上游服务RPC超时,当短时间内这样的异常达到一定的比例或者次数后,可以认为这个下游服务出现了异常,这条RPC链路先断开,不在请求,过一段时间后,尝试回复部分请求,当部分请求都成功后,可以继续扩大恢复请求比例,或者全部恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值