Java SpringCloud-Dubbo面试题
- 前言
- 1、谈谈你对Dubbo的理解?
- 2、Dubbo 与 Spring Cloud 的区别:
- 3、默认使用的是什么通信框架,还有别的选择吗?
- 4、服务调用是阻塞的吗?
- 5、默认使用什么序列化框架,你知道的还有哪些?
- 6、说说dubbo核心的配置有哪些?
- 7、服务上线怎么不影响旧版本?
- 8、Dubbo 集群容错有几种方案?
- 9、Dubbo 服务降级怎么做?
- 10、Dubbo 使用过程中都遇到了些什么问题?
- 11、幂等性常见解决方法?
- 12、Dubbo SPI 和 Java SPI 区别?
- 13、Dubbo 支持分布式事务吗?
- 14、Dubbo 如何优雅停机?
- 15、Dubbo是如何动态感知服务下线的?
- 16、Dubbo支持什么协议?
- 总结
前言
最新的 Java 面试题,技术栈涉及 Java 基础、集合、多线程、Mysql、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…等等,会持续更新。
如果对老铁有帮助,帮忙免费点个赞,谢谢你的发财手!
1、谈谈你对Dubbo的理解?
Dubbo 是alibaba开源的一款高性能、轻量级的RPC 框架,由10层模式构成,
其中包括接口服务层、服务注册层、配置层、监控层、远程调用层等。
Dubbo 的工作原理是这样的:
- 1、服务启动的时候,服务提供者和消费者根据配置信息,连接到注册中心,分别向注册中心注册和订阅服务;
- 2、注册中心根据服务订阅关系,返回提供者的地址列表给消费者,然后消费者把地址列表缓存到本地。如果地址列表有变更,注册中心会通过异步的方式通知消费者;
- 3、消费者生成代理对象(@reference),同时根据负载均衡策略选择一台服务,调用具体的接口实现;
- 4、服务提供者和消费者都会定时发送统计数据到监控中心。
2、Dubbo 与 Spring Cloud 的区别:
- 1、Dubbo是一个RPC 框架,它注重于服务的调用。
Spring Cloud是一套技术解决方案,它提供了快速构建分布式系统的常用的一些组件。 - 2、两者最大的区别是 Dubbo是基于TCP协议,加上Netty,再配合 Hession 序列化实现 RPC 通信;
- SpringCloud 是基于Http协议加上Rest接口实现远程调用通信;
总的来说,Http请求会有更大的报文,占用更多的带宽。但是REST相比RPC更为灵活,而且代码耦合度更低。
3、默认使用的是什么通信框架,还有别的选择吗?
默认也推荐使用 netty 框架,还有 mina。
4、服务调用是阻塞的吗?
在Java程序中默认是阻塞的,没有返回值的时候可以异步调用。
Dubbo是基于NIO非阻塞实现并行调用,客户端不需要启动多线程,即可完成并行调用多个远程服务,相对多线程开销较