【Java面试】面试八股文之Dubbo

面试八股文之Dubbo

什么是Dubbo?

问:为什么使用Dubbo,不用thrift和gRpc等框架

答:Dubbo提供了服务治理和自定义序列化方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SmzEexuo-1645604216850)(/Users/didi/Library/Application Support/typora-user-images/image-20220223150725293.png)]

问:能讲讲Dubbo的架构设计吗?

答:Dubbo主要有服务提供方(Provider)、注册中心(Registry)、还有服务消费方(Consumer);以及服务调用监控(Monitor)和服务运行容器(Container);Provider向Registry注册并暴露服务,Consumer向注册中心进行服务发现,然后invoke调用Provider;

问:说一说服务暴露的问题?

答:服务的暴露起始于 Spring IOC 容器刷新完毕之后,会根据配置参数组装成 URL, 然后根据 URL 的参数来进行本地或者远程调用。

会通过 proxyFactory.getInvoker,利用 javassist 来进行动态代理,封装真的实现类,然后再通过 URL 参数选择对应的协议来进行 protocol.export,默认是 Dubbo 协议。

在第一次暴露的时候会调用 createServer 来创建 Server,默认是 NettyServer。

然后将 export 得到的 exporter 存入一个 Map 中,供之后的远程调用查找,然后会向注册中心注册提供者的信息。

问:说一说Dubbo的服务发现以及均衡策略?

答:Dubbo里面有注册中心,Provider会把自己的服务向注册中心进行注册。Provider如果是集群的部署方式,那么集群里面的服务都会注册到注册中心,那么Consumer就可以通过注册中心发现可用的服务Provider;常用的均衡策略有顺序、轮询、最少活跃、一致性Hash

  • 随机:随机的选择一个。是Dubbo的默认负载均衡策略。
  • 轮询:轮询选择一个
  • 最少活跃:选择响应较快的服务进行调用
  • 一致性Hash:同样的请求总是请求同一台Provider

(Ps:Dubbo还有很多细节,待补充)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值