Dubbo全网最全面试题

举报
王同学要努力 发表于 2025/09/09 15:15:50 2025/09/09
【摘要】 1、 说说一次 Dubbo 服务请求流程?基本工作流程:​服务调用:客户端发起服务请求,调用指定的服务接口。请求序列化:客户端将请求参数序列化为字节流,以便通过网络传输。负载均衡:客户端根据负载均衡策略选择一个服务提供者。请求发送:将序列化后的请求发送到选定的服务提供者。服务提供者接收请求:服务提供者接收到请求后,进行反序列化,将字节流转换为可处理的对象业务逻辑处理:服务提供者执行具体的业...

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 都有相应的组件来支撑。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。