Dubbo作为一个分布式高性能、透明化的RPC服务框架,提供了服务自动注册与发现、负载均衡与容错、以及高度的可扩展性,其支持多种协议,并且每种协议都有其特定的应用场景和优缺点。在进行面试时,回答关于Dubbo的问题,通常需要深入理解其各个方面的知识。以下就根据文件中提供的部分Dubbo相关的内容知识点进行展开。 Dubbo支持以下几种协议: 1. dubbo协议:使用单一长连接和NIO异步通讯模型,适合高并发且数据量小的服务调用,尤其在消费者数量远大于提供者时更为适用。它采用TCP传输协议,异步通信方式,利用Hessian序列化机制。这种协议的优点是性能好,适合于大量客户端与少量服务端的场景;缺点是只支持点对点通信。 2. rmi协议:基于JDK标准的远程方法调用协议实现,要求传递的参数和返回值必须实现Serializable接口。这种协议使用Java标准的序列化机制,基于阻塞式短连接通信,适用于参数和返回值数据量不大,且消费者和提供者数量大致相等的场景。但是需要注意的是,老版本的Common-Collections包存在安全漏洞,可能会对rmi协议造成安全威胁。 3. webservice协议:基于WebService协议实现远程调用,通过集成Apache CXF框架提供了和原生WebService的互操作性。适用于系统集成和跨语言调用。这种协议使用HTTP协议传输,支持同步通信,能够与其他使用标准WebService接口的服务进行交互。 4. http协议:使用基于Http表单提交的远程调用协议,通过Spring的HttpInvoke实现。它支持HTTP协议,适用于提供者数量多于消费者,需要支持应用程序和浏览器JS调用的场景。 5. hessian协议:基于Hessian服务,采用Servlet暴露服务,并默认在Dubbo内嵌Jetty作为服务器时实现。适用于传入参数较大,提供者数量大于消费者,且提供者压力较大的场景。这种协议同样支持文件传输。 6. memcache和redis协议:这两个协议是基于各自键值存储系统的RPC协议实现,用于不同的分布式系统环境。使用这些协议可以利用对应系统的特点来进行通信。 在面试中被问到如何设置Dubbo的超时时间时,需要知道有以下两种设置方式: 1. 服务提供者端设置超时时间:这是推荐的方式,因为服务提供者更清楚自身服务的特性。 2. 服务消费者端设置超时时间:这种方式的优先级更高,因为服务调用方可以更灵活地控制超时时间。 对于Dubbo的注册中心,常见的有: 1. Multicast注册中心:无需中心节点,基于组播地址实现服务注册和发现。 2. Zookeeper注册中心:基于Zookeeper分布式协调系统实现,采用watch机制通知数据变更。 3. Redis注册中心:基于Redis实现,采用key/Map存储结构,并利用发布/订阅模式来通知数据变更。 至于Dubbo的集群负载均衡策略,包括了: 1. RandomLoadBalance:随机选取提供者策略,适应动态调整权重。 2. RoundRobinLoadBalance:轮循选取提供者策略,平均分配请求,但可能会遇到请求累积的问题。 3. LeastActiveLoadBalance:最少活跃调用策略,倾向于选择调用次数较少的提供者,避免慢调用提供者。 4. ConstantHashLoadBalance:一致性Hash策略,保证相同参数的请求总是发送到同一提供者。 关于Dubbo的核心功能和核心组件,面试中可能需要回答以下几点: - Remoting模块:负责网络通信,提供了对多种NIO框架的抽象封装,支持同步和异步通信模式。 - Cluster模块:提供服务框架,支持透明的远程过程调用,包括多协议支持、软负载均衡、失败容错、地址路由和动态配置。 - Registry模块:提供服务注册与发现机制,注册中心负责服务信息的存储和服务地址的查询,使得服务消费方可以动态地查找服务提供方。 Dubbo服务注册与发现的流程是这样的:Provider绑定指定端口并启动服务,之后连接注册中心并发送本机IP、端口等信息。注册中心将服务信息存储起来,Consumer(消费者)应用会缓存这些信息。当需要调用服务时,Consumer通过注册中心查询并调用相应的Provider。 以上就是文件中关于Dubbo面试资料的重要知识点。掌握这些知识点对在面试中回答有关Dubbo的问题至关重要,并且有助于深入理解Dubbo框架的内部机制和应用场景。
剩余14页未读,继续阅读
- 粉丝: 931
- 资源: 130
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助