Dubbo面试题库
11.Dubbo的集群的容错方案
failover Cluster(默认:)失败自动进行切换,当出现失败之后,重试其他服务器,通常用于读操作。但是重试会带来更长的延迟。
failfast Cluster:快速失败,只发起一次调用,失败立即报错,通过用于非幂等性的写操作,比如新增加记录。
failsafe Cluster: 失败安全, 出现异常的时候,直接忽略。通常这种策略是用于写入审计日志等操作。
failBack Cluster:失败自动恢复:后台一旦记录请求失败,定时重发。通常用于消息通知。
forking Cluster :并行调用多个服务器,只要有一个成功即返回。通常用于对于实时性要求较高的读操作,但是我们使用这种方式会极大的浪费服务器资源,可以设置最大的并行数。forks=‘3’。
broadcast Cluster:广播所有提供者,逐个调用。任何一台报错我就会直接报错。通常用于通知所有的提供者更新缓存或者日志等本地信息。
12.Dubbo 有哪些负载均衡策略?
Random LoadBalance
随机,按照权重的设置随机几率
实际上我们的随机,按照我们的权重设计 A 3 B 5 C 2
RoundRobin LoadBalance
轮询 默认将流量均匀的打到各个机器上。但是各个机器的配置假设不一样,那么这个时候性能也不一样,容易导致性能差的机器负载过高。所以,轮询还是需要调整权重
LeastActive LoadBalance
最小活跃调用数,评估你的服务器性能,判定假设你某台机器性能很差,这个时候相应的我去进行分配的请求也就越少。
ConsistentHash LoadBalance
一致性Hash算法
相同的参数请求一定是分发到同一台机器的,解决原有的Hash算法可能会导致的节点抖动问题
13.Dubbo 核心组件有哪些?
- provider :暴露服务的服务提供方
- Consumer:调用远程服务的消费方
- Registry :服务注册与发现中心
- Monitor:监控中心,访问统计
- Container:服务运行容器
14.Dubbo 服务器注册与发现的流程?
1.服务容器负责启动,加载,以及运行服务提供者
2.服务提供者在启动的时候,向注册中心注册自己提供的服务
3.服务消费者启动时,需要向注册中心订阅自己所需要的服务提供者信息
4.注册中心向服务消费者返回服务提供者地址列表,并且一旦发生变更,那么注册中心会基于长连接推送变更数据
5.服务消费者会从本地缓存的服务提供者列表中,基于负载均衡算法,选择一台进行调用,一旦失败,他会基于容错机制FailOver Cluster,再次选择一台进行调用。
6.服务提供者与服务消费者,都会在内存中统计调用次数以及调用时间,定时每分钟发送一次统计数据给到监控中心。
15.Dubbo 的整体架构设计有哪些分层?
十层分层,遵循了领域驱动设计原则,并且他是在分层架构设计的基础上进行衍生的。invoker调用器
严格分层架构设计
松散分层架构设计
Service 这一层次是与业务相关的,根据我们的服务提供者以及服务的消费者进行对应的业务接口设计与实现
Config 配置层:对外配置接口,以ServiceConfig以及ReferenceConfig做为中心。
Proxy 服务接口透明代理,生成客户端Stub以及服务端的骨架Skeketon,以ServiceProxy为中心点,扩展点是ProxyFactory
Registry:服务注册层:封装服务地址的注册与发现,
Cluster:封装了我们的提供者的路由以及负载策略,并且我们会通过这个层面去桥接注册中心,以invoker为中心,去进行相应的接口拓展
Monitor:监控层:PPC的调用次数和调用时间,Statistics为中心,去进行接口拓展
Protocol :封装RPC调用,以invocation以及Result做为中心点,去进行拓展接口
Exchange :封装请求响应的模式,同步转异步,Request以及Response为中心
Transport :抽象mina,或者netty3,Netty4。以Message做为中心
Sreialize :可复用的工具。


