码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Dubbo基本结构及执行流程


    Dubbo

          • Dubbo组成结构:
          • Dubbo的启动和执行流程
          • 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调用接口的具体实现,然后返回
  • 相关阅读:
    苹果重新设计开源官网;阿里云开放 YoC 源代码;GitHub 开发 Code Search 功能 | 开源日报
    二、openCV+TensorFlow入门
    成集云 | 英克对接零售O2O+线上商城 | 解决方案
    【网络服务&数据库教程】11 MySQL 集群
    Java--日志管理
    【算法 | 模拟No.1】leetcode1576. 替换所有的问号
    【数据结构与算法】---链表
    hadoop namenode -format报错显示:命令未找到
    5.3 端口扫描:Zenmap工具的应用
    基于人工势场法的二维平面内无人机的路径规划的matlab仿真,并通过对势场法改进避免了无人机陷入极值的问题
  • 原文地址:https://blog.csdn.net/Decembetion/article/details/126597980
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号