RPC_02_Dubbo概述

4 篇文章 0 订阅


Dubbo概述

Dubbo是阿里SOA服务化治理方案的核心框架,是一个分布式高性能RPC服务框架,其核心设计原理是微内核+插件,原生实现与第三方实现具有同等地位。


一、Dubbo总体架构

1. 总体层级划分

总体分为三层

  • 业务层(Biz)
  • RPC层
  • Remote层

2. 具体层级划分

将这三层细分,将会得到十层架构

  • Biz
    • Service
  • RPC
    • Config
    • Proxy
    • Registry
    • Cluster
    • Monitor
    • Protocol
  • Remoting
    • Exchange
    • Transport
    • Serialize

Service和Config层可以看作API层,提供给API使用者使用。之后的所有层可以看作SPI层,提供给扩展者使用。


二、总体调用过程

服务暴露过程

  • 初始化服务实例
  • 通过Proxy组件调用具体协议,将服务端要暴露的接口封装成Invoker
    不同的协议可以将同一个远程接口配置转化为不同的Invoker对象,比如DubboInvoker
  • 将Invoker转换为Exporter
    Exporter中持有Invoker对象,可以视为在Invoker上包装了一层
  • 开启服务端口,将实例记录到内存中
  • 通过Registry将服务元数据注册到注册中心

*消费端在启动时通过自身的Registry在注册中心订阅服务端的元数据(IP和端口)

服务调用过程

消费端:

  • 从Proxy开始,Proxy中持有一个Invoker对象
  • 由Proxy触发Invoker的invoke调用,调用中会用到Cluster组件(负责容错)
  • Cluster组件由Directory中获取所有可调用的远程Invoker列表(同一个接口可以有多个节点提供服务)
  • 若配置了路由规则,则在上一步结束后,也会根据路由规则对Invoker进行筛选
  • 根据LoadBalance策略从存活的Invoker中选取一个可调用的Invoker
  • 在Invoker调用前,经过一条过滤器链(实现处理上下文、限流、计数等功能)
  • 最后,采用Client进行传输(Netty),在传输之前进行协议构造、序列化等处理

服务端:

  • 消费端的调用请求以Request的形式进入服务端,Request会被分配到线程池(ThreadPool)中进行处理
  • Server会处理Request,根据其中内容查找对应的Exporter(持有Invoker)
  • Invoker在调用最终的实现类之前,会经过多层Filter (Filter与Invoker以装饰器模式组合)
  • 最终调用实现类,并返回结果

参考

  • 深入理解 Apache Dubbo 与实战
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值