• Dubbo基本结构及执行流程


    Dubbo组成结构:

    Dubbo组成结构

    1. Provider暴漏服务的服务提供方

      Protocol 负责提供者和消费者之间协议交互数据

      Service真实的业务服务信息,接口和实现类

      Container Dubbo的运行环境

    2. Consumer:调用远程服务的服务消费方

      Protocol 负责提供者和消费者之间协议交互数据

      Cluster 感知提供者的列表信息

      Proxy 提供者服务的调用代理类,由它接管Consumer中的接口调用逻辑

    3. Register 注册中心,用于服务发现和路由配置等工作,提供者和消费者都会在这里进行注册

    4. Monitor 用于提供和消费者的统计

    Dubbo的启动和执行流程
    1. 提供者端启动,容器负责把Service信息加载,并通过Protocol注册到注册中心
    2. 消费者端启动,通过监听提供者列表感知提供者信息,并在提供者发生改变是,通过注册中心及时通知消费端
    3. 消费方通过Proxy模块发起请求
    4. 利用Cluster模块来选择真实的要发送给提供者的信息
    5. 交由Consumer中的Protocol把信息发送给提供者
    6. 提供者同样需要通过Protocol模块来处理消费者信息
    7. 最后由真正的服务提供者Service进行处理
    Dubbo整体链路调用流程

    dubbo调用链路情况

    1. 消费者通过Interface进行方法调用,统一交由消费者端的Proxy,通过ProxyFactory进行代理对象的创建,使用jdk、javassist技术
    2. 交给Filter这个模块,做统一的过滤请求,在SPI案例中设计过
    3. 进入最主要的Invoker调用逻辑
      1. 通过Directory去配置中读取信息,最终通过list方法获取所有的Invoker
      2. 通过Cluster模块,根据选择的具体路由规则,来选取Invoker列表
      3. 通过loadBalance模块,根据负载均衡策略,选择一个具体的Invoker来处理我们的请求
      4. 如果执行中出现错误,并且Consumer阶段配置了重试机制,则会重新尝试执行
    4. 继续经过Filter进行执行功能的前后封装,Invoker选择具体的执行协议
    5. 客户端进行编码和序列化,然后发送数据
    6. 到达Consumer中的Server,在这里进行反编码和反序列化来接收数据
    7. 使用Exported选择执行器
    8. 交给Filter进行一个提供者端的过滤,达到Invoker执行器
    9. 通过Invoker调用接口的具体实现,然后返回
  • 相关阅读:
    Ubuntu20.04 (VMware 虚拟机) fdisk -l 权限不够的解决办法
    常用的Python技巧来提高代码的可读性案例
    能助我拿 3 家大厂 offer 的神级 Java 面试宝典,你值得拥有
    大模型与知识图谱如何相互助力
    深信服超融合HCI初级笔试题目(三套)
    Go语言闭包概念(不建议使用)
    MySQL完全备份与恢复
    【面试】Js面试题(一)
    WebGPU助力客户端Crypto/ZK
    【人脸识别】face_recognition 库的使用
  • 原文地址:https://blog.csdn.net/Decembetion/article/details/126597980