SOFA RPC Invoker继承体系在客户端调用的流程

在 SOFA RPC 框架中,com.alipay.sofa.rpc.invoke.Invoker 接口是整个调用体系的核心,它定义了服务调用的基本方法 invoke(SofaRequest request)。以下是基于该接口的调用体系中各个类的详细使用方法和使用场景。

1. 初始化阶段(调用链构建)
  • ClientProxyInvoker 作为客户端调用入口,通过 FilterChain.buildConsumerChain() 构建过滤器链
  • 过滤器链按顺序包装多个 FilterInvoker(如日志、超时、限流等),末端连接 ConsumerInvoker
  • 每个 FilterInvoker 持有下一个过滤器的引用,形成责任链模式
2. 调用阶段(核心流程)
  • 代理层转发:业务客户端调用代理对象,由 JDKInvocationHandler 将方法调用转为 SofaRequest 对象
  • ClientProxyInvoker 预处理:
    • 包装请求(如添加协议头、设置调用上下文)
    • 触发调用开始事件(可用于监控、追踪)
  • 过滤器链执行:
    • 按顺序执行各 FilterInvoker(如日志过滤器记录请求参数,超时过滤器设置超时阈值)
    • 每个过滤器处理后调用下一个过滤器,最终到达 ConsumerInvoker
  • ConsumerInvoker 核心操作:
    • 设置目标服务的应用名(用于服务路由)
    • 通过 Cluster 组件发起集群调用
  • 集群与网络层:
    • Cluster 结合负载均衡器选择合适的服务提供者
    • 通过协议客户端(如 NettyClient)进行网络传输
  • 响应返回:
    • 响应沿原调用链逆向返回,经过各过滤器的后置处理(如超时校验、日志记录)
    • ClientProxyInvoker 触发调用结束事件,包装响应后返回给代理层
    • 最终解析为业务对象返回给客户端
3. 核心类职责边界
  • ClientProxyInvoker:客户端调用入口,负责事件触发和请求 / 响应包装
  • FilterInvoker:过滤器包装器,实现横切逻辑(日志、超时、权限等),用于实现过滤器的链式调用
  • ConsumerInvoker:末端调用器,衔接集群层,处理客户端特定逻辑
  • FilterChain:管理过滤器链的创建和执行顺序
    客户端调用流程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值