自訂服務容器

理解 Dubbo 3 中服務自訂容器類型及用法

功能描述

Dubbo 3 的服務容器是一個獨立的啟動程式,因為後端服務不需要 Tomcat 或 JBoss 等 Web 容器的功能。如果您堅持使用 Web 容器載入服務提供者,將會增加複雜性並浪費資源。因此,服務通常不需要 Tomcat/JBoss 等 Web 容器的功能,也無需使用 Web 容器來載入服務。

Dubbo 3 服務容器只是一個簡單的 Main 方法,並載入一個簡單的 Spring 容器來暴露服務。

服務容器的載入內容可以擴展,內建 spring、jetty、log4j 等,可透過 容器擴展點 進行擴展。配置在 java 命令的 -D 參數或 dubbo.properties 中設定。

使用場景

Web 容器主要用於回應 http 請求和靜態頁面。Dubbo 服務提供者僅對外提供 dubbo 服務,不適合使用 Web 容器。作為單獨的 dubbo 服務提供者,只需要透過一個 main 方法載入一個簡單的 spring 容器來暴露服務即可。

使用方法

Spring 容器

  • 自動載入 META-INF/spring 目錄下的所有 Spring 配置。

  • 配置 spring 配置載入位置

    dubbo.spring.config=classpath*:META-INF/spring/*.xml
    

Jetty 容器

  • 啟動一個嵌入式 Jetty 來回報狀態。
  • 配置
    • dubbo.jetty.port=8080:配置 jetty 啟動埠
    • dubbo.jetty.directory=/foo/bar:配置一個可透過 jetty 直接存取的目錄,用於存放靜態檔案
    • dubbo.jetty.page=log,status,system:配置顯示的頁面,預設載入所有頁面

Log4j 容器

  • 自動配置 log4j。當啟動多個程序時,日誌文件會自動按程序劃分到不同的目錄。
  • 配置
    • dubbo.log4j.file=/foo/bar.log:設定日誌文件路徑
    • dubbo.log4j.level=WARN:設定日誌級別
    • dubbo.log4j.subdirectory=20880:設定多程序啟動時的日誌子目錄,避免衝突

容器載入說明

預設只載入 Spring 容器。

java org.apache.dubbo.container.Main

透過主函式參數傳入要載入的容器。

java org.apache.dubbo.container.Main spring jetty log4j

透過 JVM 啟動參數傳入要載入的容器。

java org.apache.dubbo.container.Main -Ddubbo.container=spring,jetty,log4j

透過類別路徑下的 dubbo.properties 設定檔傳入要載入的容器。

dubbo.container=spring,jetty,log4j

上次修改日期:2023 年 1 月 2 日:增強英文文件 (#1798) (95a9f4f6c1c)