Dubbo基本结构及执行流程

本文详细介绍了Dubbo微服务架构的组成结构,包括Provider、Consumer等核心组件的作用及交互方式,并深入剖析了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调用接口的具体实现,然后返回
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值