001-Dubbo3.0原理分析

目录

  • Dubbo3.0 底层原理
    • 基本组成
      • 启动容器
      • 转发请求
      • 处理请求-调用信息内容
      • 处理请求-序列化和反序列化
      • 提供者-本地注册
      • 提供者-本地执行
      • 消费者-发送请求
      • 消费者-代理对象自动组装调用信息和远程请求
      • 注册中心
      • 容错 + 重试
      • mock机制
      • 远程协议抽象

Dubbo3.0 底层原理

基本组成

启动容器

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

转发请求

编写Sevlet 转发所有请求
001-Dubbo3.0原理分析_第1张图片

处理请求-调用信息内容

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

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

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

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

只要双方协商一致即可

  1. JDK
  2. JSON

提供者-本地注册

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

提供者-本地执行

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

消费者-发送请求

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

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

组装:调用信息内容
发送Http请求
001-Dubbo3.0原理分析_第2张图片

注册中心

提供者ip端口不固定 需要再注册中心注册
调用者查询后本地缓存
001-Dubbo3.0原理分析_第3张图片
特性:

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

容错 + 重试

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

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

mock机制

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

远程协议抽象

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

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

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

你可能感兴趣的:(dubbo,微服务,rpc,java)