developS

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

关于Duubo和Rpc的理解

一.什么是Dubbo,什么是RPC?

Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底>层网络技术的协议。

1.远程调用就是本地机器调用远程机器的一个方法,远程机器返回结果的过程。

2.现在流行的RPC 框架,都会采用TCP 作为底层传输协议。RPC 强调的是过程调用,调用的过程对用户而言是是透明的,用户不需要关心调用的细节,可以像调用本地服务一样调用远程服务

3.目前单机服务已经无法满足更多的流量需求,只有多台服务器才能支撑现有的体系,因此服务越来越多,出现了微服务的RPC框架

 二.Duboo的作用

Dubbo分为三层,第一层的business业务逻辑为自己实现的一些接口或者配置信息

第二层是RPC部分,做一些调用过程,负载,集群容错,代理等功能

第三层Remoting为网络协议和数据转换的封装等

主要有以下功能。
 智能容错和负载均衡。(1.加权随机 2.最小活跃数 3.一致性hash 4.加权轮询 5.最短时间权重响应)
 服务自动注册和发现。
 高度可扩展能力。
 运行期流量调度。
 可视化的服务治理与运维。

三.Dubbo和SpringCloud的区别

Dubbo 是SOA 时代的产物,它的关注点主要在于服务的调用,流量分发、流量监控和熔断。而Spring Cloud 诞生于微服务架构时代,考虑的是微服务治理的方方面面,另外由于依托了Spirng、Spirng Boot 的优势之上,两个框架在开始目标就不一致,

Dubbo 定位服务治理、Spirng Cloud 是一个生态。

两者最大的区别是Dubbo 底层是使用Netty 这样的NIO 框架,是基于TCP 协议传输的,配合以Hession 序列化完成RPC 通信。而SpringCloud 是基于Http 协议+Rest 接口调用远程过程的通信,相对来说,Http 请求会有更大的报文,占的带宽也会更多。但是REST 相比RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖。

以下为springcloud的架构图

 

四.集群容错的方式

1.Failover Cluster 失败自动切换:dubbo 的默认容错方案,当调用失败时自动切换到其他可用的节点,具体的重试次数和间隔时间可用通过引用服务的时候配置,默认重试次数为 1 是只调用一次。

2.Failback Cluster 失败自动恢复:在调用失败,记录日志和调用信息,然后返回空结果给 consumer,并且通过定时任务每隔 5 秒对失败的调用进行重试

3.Failfast Cluster 快速失败:只会调用一次,失败后立刻抛出异常

4.Failsafe Cluster 失败安全:调用出现异常,记录日志不抛出,返回空结果

5.Forking Cluster 并行调用多个服务提供者:通过线程池创建多个线程,并发调用多个 provider,结果保存到阻塞队列,只要有一个 provider 成功返回了结果,就会立刻返回结果

6.Broadcast Cluster 广播模式:逐个调用每个 provider,如果其中一台报错,在循环调用结束后,抛出异常。

 

 

引用:https://tobebetterjavaer.com/interview/dubbo-17.html

posted on   四十四次日落95  阅读(66)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示