栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Dubbo常见面试题

Dubbo常见面试题

Dubbo的服务注册和暴露过程
  • 首先了解一下Dubbo是什么
    • 1.Dubbo的工作流程
    • Dubbo服务暴露过程
    • Dubbo服务引入过程
    • Dubbo服务调用过程
    • Dubbo支持的负载均衡策略
    • Dubbo支持的序列化方式
    • Dubbo支持的

首先了解一下Dubbo是什么

Dubbo是阿里开源的一款分布式微服务开发框架,它提供了RPC通信和微服务治理两大能力,使用Dubbo开发的微服务,具备远程发现与通信能力,同时Dubbo提供了服务发现、负载均衡、流量调度能力。

1.Dubbo的工作流程

  1. 启动spring容器时,自动启动Dubbo的Provider
  2. Provider启动后会到注册中心注册内容,包括ip、端口、接口列表、版本、协议等信息
  3. Consumer启动时,自动去注册中心获取已注册的服务信息
  4. 当provider的信息发生变化时,自动向注册中心推送通知,注册中心再通知Comsumer
Dubbo服务暴露过程

Dubbo采用url的方式约定参数类型

1.基于spring的事件回调机制,监听ContextRefresh事件,在springIOC容器刷新完成后,出发服务暴露。根据dubbo的配置得到url,再根据url选择对应实现类,实现扩展。
2.通过javassit动态代理封装服务实现类,统一暴露出Invoker使得调用方便、屏蔽底层细节,然后封装成exporter存储起来,等待消费者调用,然后将url注册到注册中心,使消费者可以获取到服务提供者的信息。

面试题:dubbo的服务暴露过程
1、服务启动时根据dubbo的配置,组装成url
2、根据URL进行服务暴露、创建代理Invoker、根据URL的协议,通过SPI机制选择对应的实现类实现Exporter
3、如果只是本地暴露,将Exporter存入本地ServiceConfig缓存
4、远程暴露,将URL转换成Exporter,然后获取注册中心配置,将URL注册到注册中心,启动netty服务器,监听注册中心

Dubbo服务引入过程

1、获取注册中心实例,向注册中心注册消费者,订阅provider,订阅生产者注册协议、接口、ip和端口信息,cluster将多个invoker进行封装,返回一个invoker
2、根据注册中心的配置构建URL,再根据URL获取对应的Dubbo协议实现类构建Invoker。然后构建代理,封装Invoker返回服务引用,之后消费者调用代理类调用接口。

Dubbo服务调用过程

1、客户端调用某个接口的方法会调用服务引入过程生成的代理类,然后从cluster层经过过滤和负载均衡选择一个invoker进行远程调用,记录请求和请求的ID等待服务端的响应
2、服务端接受到请求后根据参数找到之前存储的map,找到exporter,通过exporter调用invoker找到真正的实现类,接口的具体实现类处理完请求后,组装结果返回,这个响应带有之前的请求ID
3、客户端收到响应以后根据ID找到之前记录的请求,把响应放到对应的future中,唤醒等待的线程,最后消费端得到响应

Dubbo支持的负载均衡策略

1、RandomLoadBalance随机负载均衡
2、LeastActive最小活跃数负载均衡
3、ConsistentHash一致性Hash负载均衡
4、RandomRobinLoadBalance加权轮询负载均衡

Dubbo支持的序列化方式

1、Java标准序列化,json序列化、Hession、KryO、FST

Dubbo支持的

1、dubbo协议(默认),适合小数据量、并发量大的服务调用
2、rmi协议,java标准的rmi协议,适用于并发量小、数据量也小的使用场景
3、hession协议,适用于大数据包,可传文件
4、http 协议,
5、webservice协议
6、thrift协议
7、memcached协议

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336313.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号