Dubbo全网最全面试题

在这里插入图片描述
在这里插入图片描述

💟💟前言

友友们大家好,我是你们的小王同学😗😗
今天给大家打来的是 Dubbo全网最全面试题
希望能给大家带来有用的知识
觉得小王写的不错的话麻烦动动小手 点赞👍 收藏⭐ 评论📄
小王的主页:小王同学🚗
小王的gitee:小王同学🏩🏩
小王的github:小王同学💦

1、 说说一次 Dubbo 服务请求流程?

基本工作流程:

  • 服务调用:客户端发起服务请求,调用指定的服务接口。
  • 请求序列化:客户端将请求参数序列化为字节流,以便通过网络传输。
  • 负载均衡:客户端根据负载均衡策略选择一个服务提供者。
  • 请求发送:将序列化后的请求发送到选定的服务提供者。
  • 服务提供者接收请求:服务提供者接收到请求后,进行反序列化,将字节流转换为可处理的对象
  • 业务逻辑处理:服务提供者执行具体的业务逻辑,处理请求。
  • 响应序列化:将处理结果序列化为字节流。
  • 响应发送:将序列化后的响应结果发送回客户端。
  • 响应接收:客户端接收到响应后,进行反序列化,获取最终的结果。
  • 结果处理:客户端处理返回的结果,完成请求流程。

在这里插入图片描述

在这里插入图片描述

说说 Dubbo 工作原理

工作原理分 10 层:
第一层:service 层,接口层,给服务提供者和消费者来实现的(留给开发人员来实现);
第二层:config 层,配置层,主要是对 Dubbo 进行各种配置的,Dubbo 相关配置;
第三层:proxy 层,服务代理层,透明生成客户端的 stub 和服务单的 skeleton,调用的是接
口,实现类没有,所以得生成代理,代理之间再进行网络通讯、负责均衡等;
第四层:registry 层,服务注册层,负责服务的注册与发现;
第五层:cluster 层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一
个服务;
第六层:monitor 层,监控层,对 rpc 接口的调用次数和调用时间进行监控;
第七层:protocol 层,远程调用层,封装 rpc 调用;
第八层:exchange 层,信息交换层,封装请求响应模式,同步转异步;
第九层:transport 层,网络传输层,抽象 mina 和 netty 为统一接口;
第十层:serialize 层,数据序列化层。

场景题

如果让你设计一个 RPC 框架,你会怎么做?

  1. 架构设计
    客户端-服务器模型:明确客户端和服务器的角色。
    服务注册与发现:实现服务注册中心,支持动态服务发现。
  2. 通信协议
    选择协议:支持 HTTP/2、gRPC 或自定义协议。
    消息格式:使用高效的序列化格式,如 Protocol Buffers 或 Thrift。
  3. 负载均衡
    负载均衡策略:实现轮询、随机、最少连接等策略。
    健康检查:定期检查服务实例的健康状态。
  4. 错误处理
    重试机制:支持请求失败后的重试策略。
    超时设置:设定请求超时时间,避免长时间等待。
  5. 安全性
    认证与授权:支持 OAuth、JWT 等认证方式。
    数据加密:使用 TLS 加密传输数据。
  6. 性能优化
    连接池:复用连接,减少连接建立的开销。
    异步处理:支持异步调用,提高并发性能。
  7. 监控与日志
    监控系统:集成监控工具,实时监控服务状态。
    日志记录:记录请求和响应日志,便于调试和分析。
  8. 文档与示例
    API 文档:自动生成 API 文档,方便用户使用。
    示例代码:提供简单的使用示例,降低学习成本。
  9. 扩展性
    插件机制:支持用户自定义插件,扩展框架功能。
    版本管理:支持服务版本管理,兼容旧版服务。
  10. 社区与生态
    开源与社区支持:鼓励社区参与,提供良好的文档和支持。

说说 Dubbo 与 Spring Cloud 的区别?

通信方式
Dubbo 使用的是 RPC 通信;Spring Cloud 使用的是 HTTP RestFul 方式。
注册中心
Dubbo 使用 ZooKeeper(官方推荐),还有 Redis、Multicast、Simple 注册中心,但不推荐。;
Spring Cloud 使用的是 Spring Cloud Netflix Eureka。
监控
Dubbo 使用的是 Dubbo-monitor;Spring Cloud 使用的是 Spring Boot admin。
断路器
Dubbo 在断路器这方面还不完善,Spring Cloud 使用的是 Spring Cloud Netflix Hystrix。
分布式配置、网关服务、服务跟踪、消息总线、批量任务等。
Dubbo 目前可以说还是空白,而 Spring Cloud 都有相应的组件来支撑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王同学要变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值