码农知识堂 - 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调用接口的具体实现,然后返回
  • 相关阅读:
    iOS开发M1芯片遇到的问题
    python数据可视化-matplotlib入门(4)-条形图和直方图
    【小尘送书-第八期】《小团队管理:如何轻松带出1+1>2的团队》
    Android平台轻量级RTSP服务模块编码前后数据源对接探究
    Python----break关键字对while...else结构的影响
    jna调用dll文件正常,但是怎么样初始化.ini文件,总是提示未找到.ini文件?
    什么是Integer128陷阱
    Android 内置webview避免外部跳转或内嵌chrome植入复杂vue项目
    《程序员必备品质》——沉稳1
    decompose transformation matrix
  • 原文地址:https://blog.csdn.net/Decembetion/article/details/126597980
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号