首页天道酬勤dubbo常见面试题,dubbo和zkeper的面试题

dubbo常见面试题,dubbo和zkeper的面试题

张世龙 05-04 00:13 117次浏览

【译文】面试蚂蚁挂在Dubbo上,悲夜匪整理了这个Dubbo的面试问题,邀请了自己!

前言:月初,前一位同事去找蚂蚁,结果患了杜伯勃; 回来后我分享了几个蚂蚁面试的真题; 于是我得到了机会,他整理的这个Dubbo面试的主题也来了; 添加答案,分享给大家!

Dubbo面试专集1. Dubbo区别于du bbox du bbox和Dubbo本质上没有区别,只是名字的意义扩展了Dubbo。 以下扩展功能也是选择DubboX的重要考察点。

rest风格的远程呼叫支持(HTTP JSON/XML; 支持基于Kryo和FST的Java的高效序列化实现; 支持刚玩完的马里奥的JSON序列化; 支持基于嵌入式Tomcat的HTTP remoting体系; 将Spring升级到3.x; 升级ZooKeeper客户端; 完全支持基于Java代码的Dubbo配置; Zookeeper在2. Dubbo上创建了注册中心,如果注册中心的所有集群都挂起,发行人和订阅者之间是否可以进行通信? 是的,启动Dubbo后,消费者会从zk中提取注册的生产者地址接口等数据,并本地缓存。 每次调用时,都会根据本地存储的地址进行调用

注册中心对等群集,如果发生任何宕机,将自动切换到其他注册中心并全部宕机。 通过本地缓存通信服务提供者,服务提供者和消费者可以保持无状态。 如果发生任何停机,所有服务提供商都将停机,而不影响使用,服务消费者将无法使用。 您可以多次等待服务提供者的恢复。 3. Dubbo有什么作用?. Registry

注册中心是发布和订阅服务的平台,用于代替SOA体系结构框架中的ESB服务总线。

发布:服务端代码开发完成后,发布服务信息。 实现服务的公开。 订阅:从注册中心下载服务内容的客户端程序是订阅。 订阅服务时,请一次将已发布服务的所有信息下载到客户端。

客户端还可以定制和修改某些服务配置信息,包括:超时时间和调用重试次数。

. Consumer

服务的消费者是服务的客户端

消费者必须使用Dubbo技术开发部分代码。 基本上是轮廓定义。

. Provider

服务的提供者是服务端

服务端必须使用Dubbo技术开发部分代码。 以轮廓为主。

. Container

容器. Dubbo技术的服务端(Provider )在启动执行时必须依赖容器才能正常启动。

缺省情况下,它依赖于spring容器。 此外,Dubbo技术不能脱离spring框架。

缺省情况下,2.5.3版的Dubbo依赖于spring 2.5版技术。 可以选择spring 4.5或更低版本。

缺省情况下,2.5.7版Dubbo依赖于spring4.3. 10版技术。 可以选择任何Spring版本。

. Monitor

由监视中心. Dubbo提供的jar项目。

主要功能是监控服务端(Provider )和消费端)的使用数据。 例如,什么是:服务端、接口有几个、方法有几个、呼叫次数、压力信息等。 客户端有多少个、呼叫了哪个服务端、呼叫了多少次等。

4. Dubbo在安全机制方面是如何解决的Dubbo通过令牌防止用户绕过注册中心直接连接,并在注册中心管理许可证。 Dubbo还提供服务的黑白列表,以控制服务允许的调用方。

5. Dubbo执行流程? 当Start:启动Spring容器时,自动启动Dubbo的ProviderRegister: Dubbo的Provider将在启动后自动在注册中心注册内容。 登录的内容是:

2.1提供商IP

2.2提供程序端口。

2.3提供程序对外提供的接口列表.什么方法.什么接口类

2.4 Dubbo版本

2.5访问提供程序协议。 Subscribe:订阅。 Consumer启动后,自动前往Registry获取注册服务的信息。 通告:不通知。 当提供程序信息发生更改时,注册表会自动通知客户。

5.1同步请求。 消耗一定的性能。 但是,必须是同步请求。 为什么这么说,是因为需要接收调用方法的结果。 计数:次。 每2分钟,Provoider和Consumer自动向Monitor发送访问次数. Monitor进行统计。

6. Dubbo支持的协议是什么?. Dubbo协议(官方推荐协议)

优点:通过使用NIO复用单个长连接,并使用线程池同时处理请求,可以减少握手并提高同步处理效率,性能好(推荐)缺点:在上载大文件时出现问题

d Invocation)协议

优点:JDK自带的能力。可与原生RMI互操作,基于TCP协议缺点:偶尔连接失败.

③. Hessian协议

优点:可与原生Hessian互操作,基于HTTP协议缺点:需Hessian.jar支持,Http短连接的开销大 7. Dubbo支持的注册中心有哪些?

①. Zookeeper(官方推荐)

优点:支持分布式.很多周边产品.缺点: 受限于Zookeeper软件的稳定性.Zookeeper专门分布式辅助软件,稳定较优

②. Multicast

优点:去中心化,不需要单独安装软件.缺点:Provider和Consumer和Registry不能跨机房(路由)

③. Redis

优点:支持集群,性能高缺点:要求服务器时间同步.否则可能出现集群失败问题.

④. Simple

优点: 标准RPC服务.没有兼容问题缺点: 不支持集群. 8. Dubbo服务负载均衡策略?

①. l Random LoadBalance

随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。(权重可以在Dubbo管控台配置)

②. l RoundRobin LoadBalance

轮循,按公约后的权重设置轮循比率。存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。

③. l LeastActive LoadBalance

最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。

④. l ConsistentHash LoadBalance

一致性Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。缺省只对第一个参数Hash,如果要修改,请配置

9. Dubbo核心的配置有哪些?Dubbo推荐用什么协议?

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

默认使用Dubbo协议。

10. dubbo连接注册中心和直连的区别

在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连, 点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,服务注册中心,动态的注册和发现服务,使服务的位置透明,并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover, 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外,注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表注册中心和监控中心都是可选的,服务消费者可以直连服务提供者。

11. Dubbo通信协议Dubbo协议为什么不能传大包

因Dubbo协议采用单一长连接,如果每次请求的数据包大小为500KByte,假设网络为千兆网卡(1024Mbit=128MByte),每条连接最大7MByte(不同的环境可能不一样,供参考),

单个服务提供者的TPS(每秒处理事务数)最大为:128MByte / 500KByte = 262。单个消费者调用单个服务提供者的TPS(每秒处理事务数)最大为:7MByte / 500KByte = 14。

如果能接受,可以考虑使用,否则网络将成为瓶颈。

12. Dubbo通信协议Dubbo协议为什么要消费者比提供者个数多

因Dubbo协议采用单一长连接,假设网络为千兆网卡(1024Mbit=128MByte),根据测试经验数据每条连接最多只能压满7MByte(不同的环境可能不一样,供参考),理论上1个服务提供者需要20个服务消费者才能压满网卡。

13. Dubbo通信协议Dubbo协议为什么采用异步单一长连接

因为服务的现状大都是服务提供者少,通常只有几台机器,而服务的消费者多,可能整个网站都在访问该服务,比如Morgan的提供者只有6台提供者,却有上百台消费者,每天有1.5亿次调用,如果采用常规的hessian服务,服务提供者很容易就被压跨,通过单一连接,保证单一消费者不会压死提供者,长连接,减少连接握手验证等,并使用异步IO,复用线程池,防止C10K问题。

14. Dubbo通信协议Dubbo协议适用范围和适用场景

①. Dubbo协议

适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。适用场景:常规远程服务方法调用

dubbo协议补充:

连接个数:单连接连接方式:长连接传输协议:TCP传输方式:NIO异步传输序列化:Hessian二进制序列化

②. RMI协议

RMI协议采用JDK标准的Java.rmi.*实现,采用阻塞式短连接和JDK标准序列化方式,Java标准的远程调用协议。

连接个数:多连接连接方式:短连接传输协议:TCP传输方式:同步传输序列化:Java标准二进制序列化适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。适用场景:常规远程服务方法调用,与原生RMI服务互操作

③. Hessian协议

Hessian协议用于集成Hessian的服务,Hessian底层采用Http通讯,采用Servlet暴露服务,Dubbo缺省内嵌Jetty作为服务器实现;基于Hessian的远程调用协议。

连接个数:多连接连接方式:短连接传输协议:HTTP传输方式:同步传输序列化:Hessian二进制序列化适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。适用场景:页面传输,文件传输,或与原生hessian服务互操作

④. http

采用Spring的HttpInvoker实现;基于Http表单的远程调用协议。

连接个数:多连接连接方式:短连接传输协议:HTTP传输方式:同步传输序列化:表单序列化(JSON)适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。适用场景:需同时给应用程序和浏览器JS使用的服务。

⑤. Webservice

基于CXF的Frontend-simple和Transports-http实现;基于WebService的远程调用协议。

连接个数:多连接连接方式:短连接传输协议:HTTP传输方式:同步传输序列化:SOAP文本序列化适用场景:系统集成,跨语言调用。

⑥. Thrif

Thrift是Facebook捐给Apache的一个RPC框架,当前 dubbo 支持的 thrift 协议是对 thrift 原生协议的扩展,在原生协议的基础上添加了一些额外的头信息,比如service name,magic number等

本文转载自:面试阿里挂在Dubbo上,夙夜匪懈整理了这份Dubbo面试题,致自己!
dubbo底层是不是netty,dubbo多语言 go