本節我們從整體上來看看 dubbo 的分層架構設計,架構分層是乙個比較經典的模式,比如網路中的7層協議,每層執行固定的功能,上層依賴下層提供的功能,下層對上層提供功能,下層的改變對上層不可見,並且每層都是乙個可被替換的元件。
如下圖是 dubbo 官方提供的dubbo的整體架構圖:
dubbo 官方提供的該架構圖很複雜,一開始我們沒必要深入細節,下面我們簡單講解下其中的主要模組:
綜上可知dubbo的分層架構使得dubbo的每層的功能都是可被替換的,這使得dubbo的擴充套件性極強,上面說了那麼多關於擴充套件點的東西,那麼具體什麼是擴充套件點呢,下面看下 dubbo 擴充套件點乙個簡單例子。以擴充套件點 protocol 為例:
@spi("dubbo")
public inte***ce protocol
擴充套件點介面的類上面都含有@spi註解,這裡註解裡面的"dubbo"說明protocol擴充套件介面spi的預設實現是dubboprotocol。
如果我們想自己寫乙個 protocol 擴充套件介面的實現類,那麼我們需要在實現類所在的 jar 包內的meta-inf/dubbo/
目錄下建立乙個名字為 org.apache.dubbo.rpc.protocol 的文字檔案,然後配置它的內容為:
myprotocol=com.alibaba.user.myprotocol
假設該實現類 myprotocol 的內容如下:
package com.alibaba.user;
public class myprotocol implemenets protocol
那麼如何使用我們自定義的擴充套件實現呢?dubbo 配置模組中,擴充套件點均有對應配置屬性或標籤,如下**通過配置標籤方式指定使用哪個擴充套件實現:
name="myprotocol" />
注意這裡的 name 必須與 jar 包內meta-inf/dubbo/
目錄下 org.apache.dubbo.rpc.protocol 檔案中的等號左側的key的名字一致。
如上內容摘自《。
dubbo自定義異常處理
1.問題 專案中部分模組單獨部署,模組間服務呼叫使用dubbo,當服務提供者丟擲了自定義的異常時,服務消費者捕獲的是乙個runtimeexception而不是自定義的異常,導致獲取自定義異常的message時,得到的不僅僅是丟擲的message,而是乙個異常棧。2.原因 dubbo服務提供者丟擲的異...
dubbo自定義配置檔案
dubbo配置檔案中,使用了以dubbo開頭的自定義標籤,比如 這些標籤是如何起作用的呢?在dubbo config spring工程的meta inf目錄下找到了如下三個檔案 dubbo.xsd spring.handlers spring.schemas,這三個檔案如何起作用的?這個時候需要提下...
dubbo集群路由
服務引用建立invoker時,registryprotocol中refer 方法呼叫的dorefer 方法通過clusterinvoker將多個可以直接執行的invoker放入directory,實現了對外統一的乙個invoker 集群路由 cluster用於生成clusterinvoker mer...