dubbo相关面试题

注册中心挂了可以正常通信吗

可以,consumer会将从注册中心获取到的provider信息缓存到本地

dubbo支持哪些通信协议?

1、dubbo协议

默认协议,单一长连接,NIO异步通信,基于hessian作为序列化协议
适用场景:传输数据量小,但并发量很高

2、rmi协议

走java二进制序列化,多个短连接,适用于provider数量和consumer数量差不多,适用于文件传输

3、hessian协议

走hessian序列化,多个短连接,适用于provider数量大于consumer数量

4、http协议

走json序列化

5、webservice协议

走SOAP文本序列化

dubbo支持哪些序列化协议?

1、hessian (默认序列化协议)
2、java二进制序列化
3、json
4、SOAP文本序列化

dubbo支持哪些负载均衡策略?

1、random loadbalance
默认策略,随机调用实现负载均衡,也可以设置权重,按照权重负载均衡
2、ranrobin loadbalance
均匀的将流量打到各个机器上去
3、leastactive loadbalance
自动感知,某个机器性能差那么接受的请求就少
4、consistent hash loadbalance
一致性hash

dubbo集群容错策略?

1、failover cluster模式 (默认)
失败自动切换,自动重试
2、failfast cluster模式
失败就报错
3、failsafe cluster模式
失败后忽略,常用于日志记录
4、failback cluster模式
失败后后台自动记录,然后定时重发,比较适合于写数据到消息队列等场景
5、forking cluster模式
并行调用多个provider,只要一个成功就返回
6、broadcacst cluster
逐个调用所有provider

dubbo有哪些动态代理的策略?

1、默认使用javassist动态字节码生成,创建代理类
2、通过SPI扩展机制配置自己的动态代理策略

dubbo的SPI机制?

spi,service provider interface
场景:
一个接口, 有多个实现类,如何在调用接口的时候确定用哪个实现类
Java中 JDBC体现了这一思想

dubbo的服务治理?

1)调用链路自动生成

一个大型的分布式系统,或者说是用现在流行的微服务架构来说吧,分布式系统由大量的服务组成。那么这些服务之间互相是如何调用的?调用链路是啥?说实话,几乎到后面没人搞的清楚了,因为服务实在太多了,可能几百个甚至几千个服务。

那就需要基于dubbo做的分布式系统中,对各个服务之间的调用自动记录下来,然后自动将各个服务之间的依赖关系和调用链路生成出来,做成一张图,显示出来,大家才可以看到对吧。

服务A -> 服务B -> 服务C
-> 服务E
-> 服务D
-> 服务F
-> 服务W

2)服务访问压力以及时长统计

需要自动统计各个接口和服务之间的调用次数以及访问延时,而且要分成两个级别。一个级别是接口粒度,就是每个服务的每个接口每天被调用多少次,TP50,TP90,TP99,三个档次的请求延时分别是多少;第二个级别是从源头入口开始,一个完整的请求链路经过几十个服务之后,完成一次请求,每天全链路走多少次,全链路请求延时的TP50,TP90,TP99,分别是多少。

这些东西都搞定了之后,后面才可以来看当前系统的压力主要在哪里,如何来扩容和优化啊

3)其他的

服务分层(避免循环依赖),调用链路失败监控和报警,服务鉴权,每个服务的可用性的监控(接口调用成功率?几个9?)99.99%,99.9%,99%

发布了357 篇原创文章 · 获赞 24 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/lbh199466/article/details/104887071