1. 程式人生 > >Dubbo——Dubbo配置(3)

Dubbo——Dubbo配置(3)

XML配置

provider.xml 示例:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"
>
<dubbo:application name="hello-world-app" /> <dubbo:registry address="multicast://224.5.6.7:1234" /> <dubbo:protocol name="dubbo" port="20880" /> <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" /> <dubbo:reference
id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
</beans>

標籤如下所示:

  • <dubbo:service/>:用於暴露一個服務
  • <dubbo:reference/>:用於建立一個遠端服務代理,一個引用可以指向多個註冊中心
  • <dubbo:protocol/>:用於配置提供服務的協議資訊,協議由提供方指定,消費方被動接受
  • <dubbo:application/>:用於配置當前應用資訊,不管該應用是提供者還是消費者
  • <dubbo:registry/>:用於配置連線註冊中心相關資訊
  • <dubbo:module/>:(可選)用於配置當前模組資訊
  • <dubbo:monitor/>:(可選)用於配置連線監控中心相關資訊
  • <dubbo:provider/>:(可選)當 ProtocolConfig 和 ServiceConfig 某屬性沒有配置時,採用此預設值
  • <dubbo:consumer/>:(可選)當 ReferenceConfig 某屬性沒有配置時,採用此預設值
  • <dubbo:method/>:用於 ServiceConfig 和 ReferenceConfig 指定方法級的配置資訊
  • <dubbo:argument/>:用於指定方法引數配置

配置覆蓋關係

  • 方法級優先,介面級次之,全域性配置再次之。
  • 如果級別一樣,則消費方優先,提供方次之。

其中,服務提供方配置,通過 URL 經由註冊中心傳遞給消費方。
建議由服務提供方設定超時,因為一個方法需要執行多長時間,服務提供方更清楚,如果一個消費方同時引用多個服務,就不需要關心每個服務的超時設定。

屬性配置

如果公共配置很簡單,沒有多註冊中心,多協議等情況,或者想多個 Spring 容器想共享配置,可以使用 dubbo.properties 作為預設配置。
Dubbo 將自動載入 classpath 根目錄下的 dubbo.properties,可以通過JVM啟動引數 -Ddubbo.properties.file=xxx.properties 改變預設配置位置。

對映規則
將 XML 配置的標籤名,加屬性名,用點分隔,多個屬性拆成多行:
比如:

  • dubbo.application.name=foo等價於<dubbo:application name="foo" />
  • dubbo.registry.address=10.20.153.10:9090等價於<dubbo:registry address="10.20.153.10:9090" />

如果 XML 有多行同名標籤配置,可用 id 號區分,如果沒有 id 號將對所有同名標籤生效:
比如:

  • dubbo.protocol.rmi.port=1234等價於<dubbo:protocol id="rmi" name="rmi" port="1099" />
    *dubbo.registry.china.address=10.20.153.10:9090等價於<dubbo:registry id="china" address="10.20.153.10:9090" />
    下面是 dubbo.properties 的一個典型配置:
dubbo.application.name=foo
dubbo.application.owner=bar
dubbo.registry.address=10.20.153.10:9090

覆蓋策略
在這裡插入圖片描述
JVM 啟動 -D 引數優先,這樣可以使使用者在部署和啟動時進行引數重寫,比如在啟動時需改變協議的埠。
XML 次之,如果在 XML 中有配置,則 dubbo.properties 中的相應配置項無效。
Properties 最後,相當於預設值,只有 XML 沒有配置時,dubbo.properties 的相應配置項才會生效,通常用於共享公共配置,比如應用名。

API配置

略(不喜歡這種配置)

註解配置