001-Dubbo3.0原理分析

Dubbo3.0 底层原理

基本组成

启动容器

根据用户配置选择,启动tomcat或者jetty(java)
监听指定端口的hhtp请求

转发请求

编写Sevlet 转发所有请求
在这里插入图片描述

处理请求-调用信息内容

怎么样确定调用的是哪一个方法?

  1. 全限定类名
  2. 方法名
  3. 方法参数类型列表
  4. 方法参数值

补充参数:为了支持多版本的情况
5. 版本

处理请求-序列化和反序列化

只要双方协商一致即可

  1. JDK
  2. JSON

提供者-本地注册

把实际的实现类和接口进行绑定
再后续反射处理的时候时候使用

提供者-本地执行

接收到方法远程调用后,反射处理

消费者-发送请求

获取一个远程接口的对象(代理对象)
直接调用

消费者-代理对象自动组装调用信息和远程请求

组装:调用信息内容
发送Http请求
在这里插入图片描述

注册中心

提供者ip端口不固定 需要再注册中心注册
调用者查询后本地缓存
在这里插入图片描述
特性:

  1. 高性能
  2. 改变监听
  3. 心跳监听

容错 + 重试

在调用异常的时候自动触发重试
因为有负载均衡策略
下次重试可能会调用没有问题的机器

如果单次配置的重试次数用完
则进入配置的容错返回

mock机制

在提供者还没有开发好的时候,消费端可以自行模拟接口返回数据

远程协议抽象

抽象各种远程调用协议(tomcat、netty)

抽象之后再提供者注册的时候就把自身所用协议注册上去
消费者根据提供者的注册消息切换对应协议即可

可以根据 class 和 协议 抽象 成一个 invoker

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值