Java面试题分享-Dubbo

问:Dubbo通讯协议
答:1)Dubbo,Dubbo 缺省协议采用单一长连接和,NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况
Dubbo 缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低
2)RMI,RMI协议采用JDK,标准的java.rmi.*实现,采用阻塞式短连接和JDK标准序列化方式
3)hessian
4)HTTP
5)WebService
6)thrift
7)基于Redis实现的RPC协议

问:Dubbo的注册中心
答:1)Multicast 注册中心
2)zookeeper 注册中心
3)Redis 注册中心
4)Simple 注册中心

问:Dubbo的集群容错
答:1)Failover Cluster
失败自动切换,当出现失败,重试其它服务器
通常用于读操作,但重试会带来更长延迟
可通过retries="2"来设置重试次数(不含第一次)
2)Failfast Cluster
快速失败,只发起一次调用,失败立即报错。
通常用于非幂等性的写操作,比如新增记录。
3)Failsafe Cluster
失败安全,出现异常时,直接忽略,通常用于写入审计日志等操作
4)Failback Cluster
失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作
5)Forking Cluster
并行调用多个服务器,只要一个成功即返回
通常用于实时性要求较高的读操作
但需要浪费更多服务资源
可通过 forks=“2” 来设置最大并行数。
6)Broadcast Cluster
广播调用所有提供者,逐个调用,任意一台报错则报错
通常用于通知所有提供者更新缓存或日志等本地资源信息

问:Dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么
答:可以的,启动dubbo时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地,每次调用时按照本地存储的地址进行调用。

问:Dubbo连接注册中心和直连的区别
答:在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直联方式,将以服务接口为单位,
忽略注册中心的提供者列表,服务注册中心动态的注册和发现服务。

问:Dubbo在安全机制方面是如何解决的
答:Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权,Dubbo还提供服务黑白名单,来控制服务所允许的调用方。

问:Dubbo集群中的负载均衡策略
答:Random LoadBalance
随机,按权重设置随机概率,在一个截面上碰撞的概率高,但调用量越大分布越均匀
RoundRobin LoadBalance
轮循,按公约后的权重设置轮循比率
存在慢的提供者累积请求问题
比如:第二台机器很慢
但没挂,当请求调到第二台时就卡在那
久而久之,所有请求都卡在调到第二台上
LeastActive LoadBalance
最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差
使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。
ConsistentHash LoadBalance
一致性Hash,相同参数的请求总是发到同一提供者
当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点
平摊到其它提供者,不会引起剧烈变动

猜你喜欢

转载自blog.csdn.net/programer1946/article/details/92803048