千家信息网

Dubbo Invoker接口群有哪些

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要讲解了"Dubbo Invoker接口群有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Dubbo Invoker接口群有哪些"吧!I
千家信息网最后更新 2025年12月03日Dubbo Invoker接口群有哪些

这篇文章主要讲解了"Dubbo Invoker接口群有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Dubbo Invoker接口群有哪些"吧!

Invoker,负载网络调用组件,底层依懒与网络通信,Invoker主要负责服务调用,自然与路由(比如集群)等功能息息相关,本节先从整体上把控一下Dubbo服务调用体系,服务发现、集群、负载均衡、路由机制等整个知识体系。


主要有如下接口群


  1. Invocation(调用上下文环境)

  • Invocation:
    1、String getMethodName() 获取调用方法名。
    2、Class< ? >[] getParameterTypes() 获取被调用方法的参数列表(参数类型)
    3、Object[] getArguments() 获取被调用方法的参数值数组。
    4、Map< String, String> getAttachments() 获取附加属性。
    5、String getAttachment(String key) 根据key获取附加属性值。
    6、String getAttachment(String key, String defaultValue) 根据key获取附加属性,如果不存在,取默认值。
    7、Invoker< ?> getInvoker() 获取当前的invoker。

  • RpcInvocation rpc服务调用实现类
    Invocation执行调用上下文环境,就是用一个Bean存储当前调用方法的参数,其本质就是一个普通的Bean而已。

  • MockInvocation
    用于mock单元测试用。

  • DecodeableRpcInvocation 带解码功能的rpc调用上下文
    该实现主要能从RPC服务调用请求中解析二进制流(二进制包)得到RPC服务调用上下文(方法调用元数据)。

  1. Invoker 服务调用器,Dubbo中调用服务的抽象。
    Invoer的抽象接口,继承自com.alibaba.dubbo.common.Node接口

  • Node:
    1、URL getUrl(); 获取URL,在dubbo中,注册中心、服务提供者、服务消费者、监控中心等都使用URL描述。
    2、boolean isAvailable() :判断是否可用。
    3、void destroy() :资源销毁。

  • Invoker:
    1、Class getInterface() :获取服务提供者的接口。
    Result invoke(Invocation invocation) throws RpcException :调用服务,返回调用结果。

  • AbstractInvoker Invoker默认实现(模板类)
    该方法主要实现public Result invoke(Invocation inv) throws RpcException,定义执行invoker的基础流程(模板),然后根据不同的实现子类(不同的协议)执行各自个性化的执行任务。其抽象方法:protected abstract Result doInvoke(Invocation invocation) throws Throwable,具体实现将在后文中分析。

  • DubboInvoker dubbo协议调用器具体实现。

  • InjvmInvoker injvm协议调用其具体实现(本地协议)

  1. AbstractClusterInvoker 集群模式调用模板类
    该类为Dubbo集群模式的调用模板类,主题解决一个服务服务有多个服务提供者,此时消息消费端在调用服务时如何选择具体的服务提供者。该类需要组织多个服务提供者,并按照指定算法选择一服务提供者进行调用。

  • AvailableClusterInvoker
    通过< dubbo:service cluster = "available" …/> 或 < dubbo:reference cluster="available" …/>
    集群策略:总是选择第一个可用的服务提供者。

  • BroadcastClusterInvoker
    通过< dubbo:service cluster = "broadcast" …/> 或 < dubbo:reference cluster="broadcast" …/>
    集群策略:广播模式,向所有服务提供者都发送请求,任何一个调用失败,则认为失败。

  • FailbackClusterInvoker
    通过< dubbo:service cluster = "failback" …/> 或 < dubbo:reference cluster="failback" …/>
    集群策略:服务调用失败后,定时重试,重试次数无线次,重试频率:5s。并不会切换服务提供者。

  • FailfastClusterInvoker
    通过< dubbo:service cluster = "failfast" …/> 或 < dubbo:reference cluster="failfast" …/>
    集群策略:服务调用后,快速失败,直接抛出异常,并不重试,也不受retries参数的制约,适合新增、修改类操作。

  • FailoverClusterInvoker
    通过< dubbo:service cluster = "failover" …/> 或 < dubbo:reference cluster="failover" …/>
    集群策略:服务调用后,如果出现失败,则重试其他服务提供者,默认重试2次,总共执行3次,重试次数由retries配置,dubbo集群默认方式。

  • FailsafeClusterInvoker
    通过< dubbo:service cluster = "failsafe" …/> 或 < dubbo:reference cluster="failsafe" …/>
    集群策略:服务调用后,只打印错误日志,然后直接返回。

  • ForkingClusterInvoker
    通过< dubbo:service cluster = "forking" …/> 或 < dubbo:reference cluster="forking" …/>
    集群策略:并发调用多个服务提供者,取第一个返回的结果。可以通过forks设置并发调用的服务台提供者个数。




  1. LoadBalance 集群负载算法
    当一个服务有多个服务提供者时,消费端在进行服务调用时选择服务服务提供者的负载均衡算法。
    LoadBalance定义的接口为:
    < T> Invoker select(List< Invoker> invokers, URL url, Invocation invocation) throws RpcException;

  • ConsistentHashLoadBalance
    可以通过< dubbo:service loadbalance="consistenthash" …/>或< dubbo:provider loadbalance = "consistenthash" …/>
    负载均衡算法:一致性Hash算法,在AbstractClusterInvoker中从多个服务提供者中选择一个服务提供者时被调用。

  • LeastActiveLoadBalance
    可以通过< dubbo:service loadbalance="leastactive" …/>或< dubbo:provider loadbalance = "leastactive" …/>
    负载均衡算法:最小活跃调用。

  • RandomLoadBalance
    可以通过< dubbo:service loadbalance="random" …/>或< dubbo:service loadbalance = "random" …/>
    负载均衡算法:随机,如果weight(权重越大,机会越高)

  • RoundRobinLoadBalance
    可以通过< dubbo:service loadbalance="roundrobin" …/>或< dubbo:provider loadbalance = "roundrobin" …/>
    负载均衡算法:加权轮询算法。

  1. Directory(目录服务,Invoker的目录服务)
    该接口主要的作用是服务提供者的目录服务,管理多个服务提供者。

  • Directory
    1、Class< T> getInterface() 获取该服务接口类别。
    2、List< Invoker< T>> list(Invocation invocation) throws RpcException 根据调用上下文获取当前所有该服务的服务提供者。
    4.2 AbstractDirectory 目录服务实现的抽象列(模板类)
    4.3 StaticDirectory 静态目录服务
    所谓静态目录服务就是在创建StaticDirectory时指定一个服务提供者集合,则该目录服务实例在其生命周期中,只会返回这些服务提供者。

  • RegistryDirectory 动态目录服务(基于注册中心)、
    从注册中心动态获取发现服务提供,默认消息消费者并不会指定特定的服务提供者URL,所以会向注册中心订阅服务的服务提供者(监听注册中心providers目录),利用RegistryDirectory自动获取注册中心服务器列表。

  1. Router 路由功能
    根据消息消费者URL,结合路由表达式或JS引擎,从Directory中选择符合路由规则的Invoker,再执行负载均衡算法。

  • Router
    1、URL getUrl(); 获取消息消费者URL。
    2、< T> List< Invoker< T>> route(List< Invoker< T>> invokers, URL url, Invocation invocation) throws RpcException 根据消息消费者URL,从invokers中筛选合适的Invokers。

  • ConditionRouter 基于条件表达式的路由实现。

  • ScriptRouter 基于JS引擎的路由实现。

感谢各位的阅读,以上就是"Dubbo Invoker接口群有哪些"的内容了,经过本文的学习后,相信大家对Dubbo Invoker接口群有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

服务 提供者 集群 接口 算法 目录 均衡 方法 策略 路由 消费 多个 选择 上下 上下文 参数 可以通过 模板 消息 消费者 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 不同数据库文献检索效果 四川地区石窟艺术数据库建设 数据库优化的最佳实例 高端动态科技风互联网宣传汇报 数据库的管理员账号密码 国家网络安全宣传的目的 数据库卸载软件有哪些 软件开发过程中如何提高质量 天津软件开发驻场服务 浪潮服务器mgmt口配置 互联网科技有哪些书 网络技术包括协议和接口 天津正规软件开发来电咨询 网络安全工作责任制 自查 浏览器能访问微信服务器吗 手机怎么移动软件开发 跳马服务器 七十年代数据库多久更新一次 服务器怎么导出数据库 酒店数据库系统设计报告 有正版账号却进不去服务器怎么办 网络技术组面试考什么 永安租房软件开发 班会免费课件 网络安全 战意与服务器 河南会计软件开发 集成电路硬软件开发设计公司 什么是软件开发生命周期模型 dw删除数据库信息 网络安全书签制作4年级
0