91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Dubbo Invoker接口群有哪些

發布時間:2021-12-14 16:56:15 來源:億速云 閱讀:139 作者:iii 欄目:大數據

這篇文章主要講解了“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接口群有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

延庆县| 赤壁市| 霍林郭勒市| 丰县| 清远市| 临江市| 吐鲁番市| 遂宁市| 湟中县| 内乡县| 乐山市| 庆阳市| 河南省| 宜丰县| 新乡市| 乐业县| 仪征市| 视频| 绥化市| 太仓市| 旬阳县| 远安县| 淳安县| 云梦县| 彝良县| 弋阳县| 香港| 珠海市| 茶陵县| 平果县| 琼中| 凯里市| 湖口县| 曲阳县| 安吉县| 南康市| 临沂市| 惠来县| 吉首市| 鄱阳县| 闻喜县|