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類消除反射,提高效能。
歡迎大家加入微信掃碼進入知識星球進行深入探討
相關文章
- Dubbo剖析-增強SPI的實現
- flask實現python方法轉換服務FlaskPython
- Dubbo+zookeeper實現分散式服務框架分散式框架
- Dubbo+Nacos實現服務註冊和發現
- 深入剖析 Laravel 服務提供者實現原理Laravel
- Node 呼叫 dubbo 服務的探索及實踐
- ejb服務能否轉換成socket服務?
- Dubbo原始碼分析(三)Dubbo的服務引用Refer原始碼
- 用 golang 去實現類似 swoole 的 websocket 服務 ?GolangWeb
- 使用Python 實現 PDF 到 HTML 的轉換PythonHTML
- 圖解Dubbo,Dubbo服務介面詳解圖解
- 相容dubbo的微服務框架dubbogo;dubbo的完整go語言實現微服務框架Go
- 阿里巴巴 Dubbo Nacos 服務發現開發最佳實踐阿里
- 分散式服務Dubbo的前世今生分散式
- 圖解Dubbo,Dubbo服務消費詳解圖解
- [分散式]--Dubbo分散式服務框架-服務治理分散式框架
- 工商銀行基於 Dubbo 構建金融微服務架構的實踐-服務發現篇微服務架構
- Activiti 由bpmn檔案到BpmnModel實體類轉換
- idea開發dubbo服務註冊到zookeeper入門示例Idea
- Dubbo原始碼分析(五)Dubbo呼叫鏈-服務端原始碼服務端
- 圖解Dubbo,Dubbo服務提供者詳解圖解
- Dubbo中暴露服務的過程解析
- 使用dubbo+zookeeper釋出服務與呼叫服務
- dubbo服務者原始碼分期原始碼
- Dubbo原始碼之服務引用原始碼
- Dubbo服務降級設定
- Dubbo服務暴露原始碼解析②原始碼
- 深入剖析 Laravel 服務容器Laravel
- 面試官:Dubbo怎麼實現服務降級,他有什麼好處?面試
- Getway實現nacos註冊及服務轉發
- Dubbo原始碼之服務端的釋出原始碼服務端
- 阿里面試:dubbo的服務引用過程阿里面試
- Node.js 連線到 Spring Eureka 實現服務發現Node.jsSpring
- Docker實現服務發現Docker
- NodeJs服務註冊與服務發現實現NodeJS
- ADO資料與XML資料間的轉換的類(ASP實現) (轉)XML
- dubbo原始碼分析02:服務引用原始碼
- Dubbo原始碼分析十一、服務路由原始碼路由