目录
- 1. Dubbo ⽀持哪些协议,每种协议的应⽤场景,优缺点?
- 2. Dubbo 超时时间怎样设置?
- 3. Dubbo 有些哪些注册中⼼?
- 4. Dubbo 集群的负载均衡有哪些策略?
- 5. Dubbo 是什么?
- 6. Dubbo 的主要应⽤场景?
- 7. Dubbo 的核⼼功能?
- 8. Dubbo 服务注册与发现的流程?
- 9. Dubbo 的架构设计
- 10. Dubbo 的服务调⽤流程?
- 11. Dubbo 的核⼼组件?
- 12. Dubbo ⽀持哪些协议,每种协议的应⽤场景,优缺点?
- 13. dubbo 推荐⽤什么协议?
- 14. Dubbo 有些哪些注册中⼼?
- 15. Dubbo 默认采⽤注册中⼼?
- 16. 为什么需要服务治理?
- 17. Dubbo 的注册中⼼集群挂掉,发布者和订阅者之间还能通信么?
- 18. Dubbo 与 Spring 的关系?
- 19. Dubbo 使⽤的是什么通信框架?
- 20. Dubbo 集群提供了哪些负载均衡策略?
- 21. Dubbo 的集群容错⽅案有哪些?
- 22. Dubbo 的默认集群容错⽅案?
- 23. Dubbo ⽀持哪些序列化⽅式?
- 24. Dubbo 超时时间怎样设置?
- 25. 服务调⽤超时问题怎么解决?
- 26. Dubbo 在安全机制⽅⾯是如何解决?
- 27. Dubbo 和 Dubbox 之间的区别?
- 28. Dubbo 和 Spring Cloud 的关系?
- 29. Dubbo 和 Spring Cloud 的区别?
1. Dubbo ⽀持哪些协议,每种协议的应⽤场景,优缺点?
• dubbo: 单⼀⻓连接和 NIO 异步通讯,适合⼤并发⼩数据量的服务调
⽤,以及消费者远⼤于提供者。传输协议 TCP,异步, Hessian 序列
化;
• rmi: 采⽤ JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要
实现 Serializable 接⼝,使⽤ java 标准序列化机制,使⽤阻塞式短连
接,传输数据包⼤⼩混合,消费者和提供者个数差不多,可传⽂件,传
输协议 TCP。多个短连接, TCP 协议传输,同步传输,适⽤常规的远程
服务调⽤和 rmi 互操作。在依赖低版本的 Common-Collections 包,
java 序列化存在安全漏洞;
• http: 基于 Http 表单提交的远程调⽤协议,使⽤ Spring 的
HttpInvoke 实现。多个短连接,传输协议 HTTP,传⼊参数⼤⼩混合,
提供者个数多于消费者,需要给应⽤程序和浏览器 JS 调⽤;
• webservice: 基于 WebService 的远程调⽤协议,集成 CXF 实现,提供
和原⽣ WebService 的互操作。多个短连接,基于 HTTP 传输,同步传
输,适⽤系统集成和跨语⾔调⽤;
• ** hessian**: 集成 Hessian 服务,基于 HTTP 通讯,采⽤ Servlet 暴
露服务,Dubbo 内嵌 Jetty 作为服务器时默认实现,提供与 Hession 服
务互操作。多个短连接,同步 HTTP 传输, Hessian 序列化,传⼊参数
较⼤,提供者⼤于消费者,提供者压⼒较⼤,可传⽂件;
• Redis: 基于 Redis 实现的 RPC 协议
2. Dubbo 超时时间怎样设置?
Dubbo 超时时间设置有两种⽅式:
• 服务提供者端设置超时时间,在 Dubbo 的⽤户⽂档中,推荐如果能服务
端多配置就尽量多配置,因为服务提供者⽐消费者更清楚⾃⼰提供的服
务特性。
• 服务消费者端设置超时时间,如果在消费者端设置了超时时间,以消费
者端为主,即优先级更⾼。因为服务调⽤⽅设置超时时间控制性更灵活。
如果消费⽅超时,服务端线程不会定制,会产⽣警 R 告。
3. Dubbo 有些哪些注册中⼼?
• Multicast 注册中⼼: Multicast 注册中⼼不需要任何中⼼节点,只要⼴
播地址,就能进⾏服务注册和发现。基于⽹络中组播传输实现;
• Zookeeper 注册中⼼: 基于分布式协调系统 Zookeeper 实现,采⽤
Zookeeper 的 watch 机制实现数据变更;
• redis 注册中⼼: 基于 redis 实现,采⽤ key/Map 存储,住 key 存储
服务名和类型, Map 中 key 存储服务 URL, value 服务过期时间。基
于 redis 的发布/订阅模式通知数据变更;
• Simple 注册中⼼
4. Dubbo 集群的负载均衡有哪些策略?
Dubbo 提供了常⻅的集群策略实现,并预扩展点予以⾃⾏实现。
• Random LoadBalance: 随机选取提供者策略,有利于动态调整提供者权
重。截⾯碰撞率⾼,调⽤次数越多,分布越均匀;
• RoundRobin LoadBalance: 轮循选取提供者策略,平均分布,但是存在请
求累积的问题;
• LeastActive LoadBalance: 最少活跃调⽤策略,解决慢提供者接收更少的
请求;
• ConstantHash LoadBalance: ⼀致性 Hash 策略,使相同参数请求总是发
到同⼀提供者,⼀台机器宕机,可以基于虚拟节点,分摊⾄其他提供
者,避免引起提供者的剧烈变动;
5. Dubbo 是什么?
Dubbo 是⼀个分布式、⾼性能、透明化的 RPC 服务框架,提供服务⾃动注册、
⾃动发现等⾼效服务治理⽅案, 可以和 Spring 框架⽆缝集成