Dubbo剖析-服務提供方實現類到Invoker的轉換
一、前言
前面dubbo整體架構分析裡面我們講解了服務提供者暴露一個服務的詳細過程是,首先具體服務的實現類轉換為了Invoker物件,然後Invoker在轉換為Exporter,本文就來講解第一步轉換。
二、實現類到Invoker物件的轉換
服務提供方式是通過下面方法實現服務提供的實現類到Invoker物件的轉換
其中proxyFactory是代理類的擴充套件介面,預設情況下這裡呼叫getInvoker返回的spi擴充套件實現類是JavassistProxyFactory,也就是這裡是呼叫了JavassistProxyFactory的getInvoker方法。JavassistProxyFactory的getInvoker方法程式碼如下:
程式碼裡面首先建立了代理類的一個wrapper類,目的是消除反射呼叫,原理類似於cglib的索引方式去除反射呼叫,提高效能。
然後建立了一個AbstractProxyInvoker類,並重寫了doInvoke方法。
當提供方接受到服務消費的請求後最後會呼叫AbstractProxyInvoker的doInvoke,而doInvoke內部委託包含代理類的wrapper類來具體執行。
三、總結
服務提供方實現類到Invoker的轉換,是通過 ProxyFactory 類的 getInvoker 方法使用 服務實現類 生成一個AbstractProxyInvoker 例項,其中使用wrapper類消除反射,提高效能。
歡迎大家加入微信掃碼進入知識星球進行深入探討
相關文章
- flask實現python方法轉換服務FlaskPython
- Dubbo剖析-增強SPI的實現
- Dubbo+zookeeper實現分散式服務框架分散式框架
- Dubbo+Nacos實現服務註冊和發現
- 使用Python 實現 PDF 到 HTML 的轉換PythonHTML
- 深入剖析 Laravel 服務提供者實現原理Laravel
- Node 呼叫 dubbo 服務的探索及實踐
- 用 golang 去實現類似 swoole 的 websocket 服務 ?GolangWeb
- 阿里巴巴 Dubbo Nacos 服務發現開發最佳實踐阿里
- 類轉json的基類實現JSON
- dubbo服務啟動的方式
- Dubbo原始碼分析(三)Dubbo的服務引用Refer原始碼
- 圖解Dubbo,Dubbo服務介面詳解圖解
- 巧用fastjson自定義序列化類實現欄位的轉換ASTJSON
- 分散式服務Dubbo的前世今生分散式
- idea開發dubbo服務註冊到zookeeper入門示例Idea
- 工商銀行基於 Dubbo 構建金融微服務架構的實踐-服務發現篇微服務架構
- Getway實現nacos註冊及服務轉發
- C語言,實現數字譜到簡譜的轉換(二)C語言
- c++11 實現列舉值到列舉名的轉換C++
- dubbo--5服務引用
- 圖解Dubbo,Dubbo服務消費詳解圖解
- [分散式]--Dubbo分散式服務框架-服務治理分散式框架
- 為什麼要做IPV6的轉換服務?
- Node.js 連線到 Spring Eureka 實現服務發現Node.jsSpring
- 分散式RPC框架Dubbo實現服務治理:整合Kryo實現高速序列化,整合Hystrix實現熔斷器分散式RPC框架
- 深入剖析 Laravel 服務容器Laravel
- Dubbo中暴露服務的過程解析
- Maven工程 服務提供方啟動時沒有Starting ProtocolHandler的 解決方法MavenProtocol
- Dubbo原始碼分析(五)Dubbo呼叫鏈-服務端原始碼服務端
- 圖解Dubbo,Dubbo服務提供者詳解圖解
- Dubbo服務降級設定
- Dubbo原始碼之服務引用原始碼
- DUBBO服務啟動過程
- dubbo服務者原始碼分期原始碼
- Dubbo服務暴露原始碼解析②原始碼
- NodeJs服務註冊與服務發現實現NodeJS
- Go interface 原理剖析--型別轉換Go型別