首页  

dubbo面试题     所属分类 dubbo 浏览量 1207
dubbo是什么
分布式RPC框架
基于接口方法的透明远程过程调用
自动服务发现,多协议支持,软负载均衡,失败容错,地址路由,动态配置

默认使用的通信框架 netty

服务调用  默认是阻塞的 ,支持异步调用,没有返回值的可以这么做


一般使用什么注册中心
推荐使用 zookeeper 
还有 Multicast注册中心, Redis注册中心, Simple注册中心

默认使用的序列化框架 Hessian
其他的序列化协议 Duddo FastJson Java自带序列化

服务提供者失效踢除的原理
基于 zookeeper 的临时节点

服务上线如何不影响旧版本 
多版本 ,配置 version


如何解决服务调用链过长
可以结合 zipkin 实现分布式服务链路追踪


核心配置
dubbo:service
dubbo:reference
dubbo:protocol
dubbo:registry
dubbo:application
dubbo:provider
dubbo:consumer
dubbo:method

默认使用 dubbo 协议

直连配置

<dubbo:reference id="helloService" url="dubbo://localhost:20882" interface="dubbo.test.helloService" />



安全机制

通过 token 防止绕过注册中心直连 , 在注册中心管理授权 ,提供黑白名单,控制服务允许的调用方


集群容错 建议使用 Failover 失败自动切换 , 认重试两次其他服务器 写操作建议使用 Failfast 快速失败,一次调用失败就立即报错 Failover Cluster 失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。 Failfast Cluster 快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。 Failsafe Cluster 失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。 Failback Cluster 失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。 Forking Cluster 并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。 Broadcast Cluster 广播调用所有提供者,逐个调用,任意一台报错则报错 。通常用于通知所有提供者更新缓存或日志等本地资源信息。
使用过程中都遇到的问题及解决方案 同时配置了 XML 和 properties ,则 properties 中的配置无效 check 默认为 true , 会在启动时检查依赖是否可用 服务端 dubbo:registry register 设置为 false 不注册服务 ,客户端可直连 spring 2.x 初始化死锁 不要在服务实现类中使用 applicationContext.getBean dubbo:provider deplay 设置为 -1 ,在容器初始化完成后再暴露服务 服务注册不上 检查 dubbo jar 包 是否在 classpath 中, 是否重复 暴露服务 配置是否加载 服务提供者机器与注册中心的网络是否OK RpcException: No provider available for remote service 检查连接的注册中心是否OK 注册中心相应的服务提供者是否存在 服务提供者是否正常运行 出现” 消息发送失败” 异常 检查接口方法入参数 是否 实现 Serializable 接口
dubbo 和 dubbox 之间的区别 dubbox 是当当网基于 dubbo 做了一些扩展 如加了服务可 restful 调用,更新了开源组件等 其他RPC框架 spring cloud facebook 的 thrift twitter 的 finagle gRPC
Dubbo 支持哪些协议 dubbo协议 单一长连接 NIO 异步,适合大并发小数据量的服务调用,以及消费者远大于提供者。TCP,异步,Hessian 序列化 rmi 阻塞式短连接 java标准序列化 webservice 短连接,基于 HTTP 传输,同步 http 基于Spring HttpInvoke , 短连接 hessian 集成 Hessian 服务,基于 HTTP 通讯,采用 Servlet 暴露服务 memcache 基于 memcached 实现的 RPC 协议 redis 基于 redis 实现的 RPC 协议
负载均衡策略  Random 随机 默认 RoundRobin 轮循 LeastActive 最少活跃调用 ConsistentHash
服务调用超时如何解决 服务调用失败,默认重试两次 不重试,设置合理的超时时间 <dubbo:provider delay="-1" timeout="6000" retries="0"/> delay 5000 延迟5秒暴露服务 -1 spring初始化完成后,再暴露服务
服务调用流程 dubbo服务调用流程
dubbo常用配置 dubbo实例 dubbo知识点

上一篇     下一篇
spring构造注入优缺点

springboot 构造注入实例

zookeeper配置参数

ZooKeeper面试题

springboot 读取中文配置乱码

jmx_prometheus_javaagent 使用