自訂擴展
演示如何使用 Dubbo 的擴展性功能。
Dubbo 的擴展性設計理念
- 對第三方實現的平等性:在 Dubbo 中,所有內部和外部實現都被平等對待。用戶可以根據其業務需求替換 Dubbo 的原生實現。
- 每個擴展點僅封裝一個可變因素,以實現最大程度的重複使用:每個擴展點的實現者通常只關心一件事。如果用戶需要擴展功能,則只需擴展相關的擴展點,從而顯著減少工作量。
基於 Java SPI 的擴展性設計
Dubbo 的擴展性來自於 JDK 標準 SPI(服務提供者介面)的增強版本。它改進了 JDK 標準 SPI 的以下問題
- 標準 SPI 一次性實例化所有擴展點,如果某些擴展點未使用,則會浪費資源。
- 如果擴展點載入失敗,則甚至無法取得擴展點的名稱。
Dubbo 的擴展性功能
- 按需載入:Dubbo 不會一次性實例化所有實現,從而減少資源浪費。
- IOC(控制反轉)功能:Dubbo 不僅會發現擴展服務實現類,還會自動將依賴項注入到擴展類中。
- AOP(面向切面程式設計)功能:Dubbo 會自動發現擴展的包裝類,並建構它們以增強擴展功能。
- 動態擴展選擇:Dubbo 在運行時根據參數動態選擇相應的擴展類。
- 擴展實現排序:用戶可以指定擴展實現的執行順序。
- 自適應擴展點:擴展可以在消費者端或提供者端生效。
擴展載入過程
Dubbo 的擴展載入過程如下
主要步驟如下
- 讀取並解析配置文件
- 快取所有擴展實現
- 根據使用者執行的擴充套件名稱,實例化相應的擴充套件實現。
- 對擴充套件實例屬性執行 IOC 注入,並為 AOP 功能實例化擴充套件包裝類別。
任務項目
接下來,我們將通過以下任務項目介紹 Dubbo 的擴充套件性功能。
Dubbo 的擴充套件性設計旨在為使用者提供高度靈活的擴充機制,提供動態擴充套件選擇、IOC 和 AOP 等功能。這使得 Dubbo 更容易適應各種場景,並與不同的技術堆疊整合。
上次修改時間:2023 年 11 月 1 日:翻譯擴充套件相關文件 (#2844) (e603103c03a)