1、默认使用的是什么通信框架,还有别的选择吗?
答:默认使用dubbo通讯协议,单一长连接,异步通讯,适合小数据量 大并发的场景 或者 消费者数量远大于提供者的场景;不适合传文件、视频等;
还支持rmi、hessian、http、webservice、thrift、memcached、redis等协议
2、服务调用是阻塞的吗?
答:异步通讯,非阻塞;
3、一般使用什么注册中心?还有别的选择吗?
答:支持的注册中心有mulicast、zookeeper、redis、sample,推荐使用zookeeper。
4、默认使用什么序列化框架,你知道的还有哪些?
答:默认使用hessian序列化,
还有dubbo序列化(性能高、不成熟)、json序列化(性能不如hessian)、java序列化(性能差);
5、服务提供者能实现失效踢出是什么原理?
答:以zookeeper注册中心为例,有一个heartbeat-monitor心跳检测线程,检查提供者是否存活,如果检测不到心跳,就把提供者从提供者列表中移除,反之加入。
6、服务上线怎么不影响旧版本?
答:在配置提供者和消费者的时候,配置版本号即可(version=“”);
推荐半数升级,先升级一半提供者,然后消费者,再升级剩下的一半提供者,消费者。
7、如何解决服务调用链过长的问题?
答:这个还是应该结合业务来讲,一旦某个业务操作的调用连过长的时候,首先应该考虑这块儿业务是否应该整合一下了;
dubbo是业务型框架,一个服务最好是一个完整的业务功能;
8、说说核心的配置有哪些?
答:<dubbo:application name = "">、<dubbo:registry>、<dubbo:protocol>、<dubbo:reference>、<dubbo:service>等等
9、dubbo推荐用什么协议?
答:dubbo协议
10、同一个服务多个注册的情况下可以直连某一个服务吗?
答:可以;<dubbo:reference url=""> url里面直接写地址就可以了,多个用逗号分隔;
11、画一画服务注册与发现的流程图
答:说dubbo的四大模块就差不多了。
12、集群容错怎么做?
答:dubbo提供多种容错处理方式:默认是failover方式;
failover-cluster:失败自动切换,当出现失败时,重试其他服务器,通过 retries = 2 设置重试次数。
failfast-cluster:快速失败,只调用一次,失败则立即报错;
failsafe-cluster:失败安全,出现异常时,直接忽略;
failback-cluster:失败自动恢复,后台记录失败请求,并自动定时重发,(常用于消息通知操作)
forking-cluster:并行调用多个服务器,只要一个成功则返回,适用于实时要求较高的场景,但更耗资源;通过forks=“2”设置最大并行数;
broadcast-cluster:广播调用所有提供者,逐个调用,任意一台报错则报错;适用于通知所有提供者更新缓存或日志等本地资源信息。
13、在使用过程中都遇到了些什么问题?
答:对外服务暴露不支持方法的重载。
14、dubbo和dubbox之间的区别?
答:dubbo是阿里官方的开源rpc框架;
dubbox是当当在dubbo基础之上做的二次开发;
15、你还了解别的分布式框架吗?
答:dubbo、dubboX、motan(sina)
16、dubbo的负载均衡策略?
答:dubbo提供了以下负责均衡策略:
random:随机,按权重设置随机概率;
roundRobin:轮询,按公约后的权重设置轮询比;(如果其中一台机器卡,则会卡住)
leastActive:最好活跃调用数,如果两台调用数相同则随机;
consistentHash:一致性hash;相同参数的请求总是发到同一提供者;(如果提供者挂掉,会基于虚拟节点,平摊到其他提供者)。
17、dubbo如何并发控制?
答:可以从服务端和客户端分别控制;(如果<dubbo:service>、<dubbo:reference>都配置的相同参数时,以reference为准)
<dubbo:service executes="10" /> 服务端并发不超过10个;
<dubbo:service actives="10" /> 客户端并发不超过10个;
当配置<dubbo:service loadbalance="leastactive" />时,会调用并发数最小的提供者;
18、dubbo如何连接控制?
答:<dubbo:provider protocol="dubbo" accepts="10" /> 限制服务端接受的连接不超过10个;
<dubbo:reference connections="10" /> 限制客户端使用的连接数不超过10个;