什么是dubbo?
Dubbo是高性能RPC框架,它提供了分布式架构下的服务通信方案,使得开发不需要关心网络通信的细节。通过该框架可以使得远程服务调用方式和本地服务调用方式一样简单。dubbo是一款高性能、轻量级的开源RPC框架。
Dubbo 的服务请求失败怎么处理?(默认对其他节点重试两次)
对于 Dubbo 服务请求失败的场景,默认提供了重试的容错机制,也就是说,如果基
于 Dubbo 进行服务间通信出现异常,服务消费者会对服务提供者集群中其他的节点发
起重试,确保这次请求成功,默认的额外重试次数是 2 次。
除此之外,Dubbo 还提供了更多的容错策略,我们可以根据不同的业务场景来进行选
择。
1、快速失败策略,服务消费者只发起一次请求,如果请求失败,就直接把错误抛出去。
这种比较适合在非幂等性场景中使用。
2、 失败安全策略,如果出现服务通信异常,直接把这个异常吞掉不做任何处理
3、失败自动恢复策略,后台记录失败请求,然后通过定时任务来对这个失败的请求进
行重发。
4、并行调用多个服务策略,就是把这个消息广播给服务提供者集群,只要有任何一个
节点返回,就表示请求执行成功。
5、广播调用策略,逐个调用服务提供者集群,只要集群中任何一个节点出现异常,就
表示本次请求失败。
要注意的是,默认基于重试策略的容错机制中,需要注意幂等性的处理,否则在事务型
的操作中,容易出现多次数据变更的问题。
Dubbo负载均衡的几种策略,有五中负载均衡策略:
1、加权随机;2、最小活跃度;3、一致性hash;4、加权轮询;5、最短响应时间权重随机。
说说 Dubbo 与 Spring Cloud 的区别
Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控
和熔断。而 Spring Cloud 诞生于微服务架构时代,考虑的是微服务治理的方方面面,
另外由于依托了 Spirng、Spirng Boot 的优势之上,两个框架在开始目标就不一致,
Dubbo 定位服务治理、Spirng Cloud 是一个生态。
两者最大的区别是 Dubbo 底层是使用 Netty 这样的 NIO 框架,是基于 TCP 协议传
输的,配合以 Hession 序列化完成 RPC 通信。而 SpringCloud 是基于 Http 协议
+Rest 接口调用远程过程的通信,相对来说,Http 请求会有更大的报文,占的带宽也
会更多。但是 REST 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,
不存在代码级别的强依赖。