Dubbo

Dubbo的工作原理是什么?[面试7.0]

在这里插入图片描述

Dubbo原理
Monitor:监控中心(可统计调用次数)
Provider:暴露服务的服务提供方
Registry:注册中心
Consumer:调用远程服务的消费方
Container:服务运行的Web容器(如Tomcat)
(1.start)Web容器启动
(2.register)服务提供者向注册中心异步注册服务(包含服务,端口,Ip等信息)
(3.subscribe)消费者启动向注册中心订阅服务
(4.notify)注册中心返回提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者(如果服务提供者Ip换了也没事,注册中心会推给消费者,消费者再次拉取服务列表)
(5.invoke)消费者invoke同步调用远程接口,dubbo基于负载均衡算法,选一台提供者进行调用,如果调用失败则选择另一台。
(6.count)消费者和提供者,在内存中累计调用次数和调用时间,定时发送一次统计数据到监控中心

Dubbo的集群容错的机制是怎样的?[面试7.0]

在这里插入图片描述

Dubbo容错机制
Failover模式(失败重试): 默认模式,失败自动切换,当出现失败则重试其它服务器,通常用于读操作,但重试会带来更长延迟,可通过retries来设置重试次数
Failover模式(失败异常): 只发起一次调用,失败后抛出异常,适用于幂等操作,如添加记录
Failsafe模式(失败忽略): 发生错误,直接忽略,即错了也没关系,常用于审计日志
Failback模式(失败补偿): 调用失败后返回一个空给消费者,并记录日志,过后通过任务调度进行重放,常用于补偿机制
Forking模式(并行单反): 并行调用多个服务者,若一个服务者返回成功即成功,就结束调用,常用于实时性要求很高的场景,但会消耗较多资源
Broadcast模式(集群广播): 广播模式,循环调用每一个服务提供者的实现,若其中一个返回失败,消费者会抛出异常,常用于通知所有提供者更新缓存或资源
记忆关键: 失败重试->失败异常->失败忽略->失败补偿->并行单反->集群广播

Dubbo的负载均衡算范有哪些?[面试7.0]

按权重随机(Random LoadBalance):
调用量越大分布越均匀(默认算法)
按权重轮询算法(RoundRobin LoadBalance):
多次请求,依次序调用服务提供者,若某台机器调用慢,易出现卡在该机器上,这时可以采用加权来协调
最少活跃数算法(LeastActive LoadBalance):
活跃数指调用前后计数差,这种算法可以使慢的服务提供者收到较少的请求
一致性Hash算法(ConsistentHash LoadBalance):
相同参数的请求会被路由到同一个服务提供者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2023年Java面试宝典

您的鼓励是对我的肯定,共建希望

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值