Dubbo 服务请求流程,Dubbo 工作原理,Dubbo 负载均衡策略

请求流程

基本工作流程:

上图中角色说明:

工作原理

工作原理分 10 层:
  • 第一层:service 层,接口层,给服务提供者和消费者来实现的(留给开发人员来实现);
  • 第二层:config 层,配置层,主要是对 Dubbo 进行各种配置的,Dubbo 相关配置;
  • 第三层:proxy 层,服务代理层,透明生成客户端的 stub 和服务单的 skeleton,调用的是接口,实现类没有,所以得生成代理,代理之间再进行网络通讯、负责均衡等;
  • 第四层:registry 层,服务注册层,负责服务的注册与发现;
  • 第五层:cluster 层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务;
  • 第六层:monitor 层,监控层,对 rpc 接口的调用次数和调用时间进行监控;
  • 第七层:protocol 层,远程调用层,封装 rpc 调用;
  • 第八层:exchange 层,信息交换层,封装请求响应模式,同步转异步;
  • 第九层:transport 层,网络传输层,抽象 mina netty 为统一接口;
  • 第十层:serialize 层,数据序列化层。

Dubbo 支持协议

Memcached 协议、Redis 协议、Rest 协议。

注册中心挂了,consumer 还能不能调用 provider

可以。因为刚开始初始化的时候, consumer 会将需要的所有提供者的地址等信息拉取到本地缓存,所以注册中心挂了可以继续通信。但是 provider 挂了,那就没法调用了。

Dubbo 负载均衡策略

  • 随机(默认):随机来
  • 轮训:一个一个来
  • 活跃度:机器活跃度来负载
  • 一致性 hash:落到同一台机器上

Dubbo 容错策略

failover cluster 模式
provider 宕机重试以后,请求会分到其他的 provider 上,默认两次,可以手动设置重试次数,建议把写操作重试次数设置成 0
failback 模式
失败自动恢复会在调用失败后,返回一个空结果给服务消费者。并通过定时任务对失败的调用进行重试,适合执行消息通知等操作。
failfast cluster 模式
快速失败只会进行一次调用,失败后立即抛出异常。适用于幂等操作、写操作,类似于 failover cluster 模式中重试次数设置为 0 的情况。
failsafe cluster 模式
失败安全是指,当调用过程中出现异常时,仅会打印异常,而不会抛出异常。适用于写入审计日志等操作。
forking cluster 模式
并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。
broadcacst cluster 模式
广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息。

Dubbo 动态代理策略

默认使用 javassist 动态字节码生成,创建代理类,但是可以通过 SPI 扩展机制配置自己的动态代理策略。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值