Dubbo實戰介紹1
dubbo的四種配置方式
dubbo的配置主要分為三大類,服務發現,服務治理和效能調優
服務發現類:表示該配置用於服務的註冊於發現,目的是讓消費者找到生產者
服務治理類:表示該配置用於治理服務間的關係,或為開發測試提供便利條件
效能調優類:表示該配置用於效能調優,不同的選項會對效能產生不同的影響。
介紹具體的配置之前,我們先看看Dubbo支援的四種配置方式。
1.xml配置
我們可以使用xml對Dubbo進行配置,我們可以像使用Spring的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://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!--提供者應用名字--> <dubbo:application name="provider"/> <!-- 註冊中心的ip地址 --> <dubbo:registry address="zookeeper://xxx.xxx.xx.xx:2181"/> <!--宣告dubbo協議跟埠--> <dubbo:protocol name="dubbo" port="20880"/> <!--宣告需要暴露的介面--> <dubbo:service interface="com.yang.test.api.TestService" ref="testServcie"/> <!--和本地bean一樣實現服務--> <bean id="testServcie" class="com.yang.test.service.impl.TestServiceImpl"/> </beans>
以上配置就是使用了Dubbo擴充套件的dubbo:application dubbo:registry dubbo:service等等標籤,標籤的具體介紹後面會講
<dubbo:service/> 服務配置,用於暴露一個服務,定義服務的元資訊,一個服務可以用多個協議暴露,一個服務也可以註冊到多個註冊中心。
<dubbo:reference/> 引用配置,用於建立一個遠端服務代理,一個引用可以指向多個註冊中心。
<dubbo:protocol/> 協議配置,用於配置提供服務的協議資訊,協議由提供方指定,消費方被動接受。
<dubbo:application/> 應用配置,用於配置當前應用資訊,不管該應用是提供者還是消費者。
<dubbo:module/> 模組配置,用於配置當前模組資訊,可選。
<dubbo:registry/> 註冊中心配置,用於配置連線註冊中心相關資訊。
<dubbo:monitor/> 監控中心配置,用於配置連線監控中心相關資訊,可選。
<dubbo:provider/> 提供方的預設值,當ProtocolConfig和ServiceConfig某屬性沒有配置時,採用此預設值,可選。
<dubbo:consumer/> 消費方預設配置,當ReferenceConfig某屬性沒有配置時,採用此預設值,可選。
<dubbo:method/> 方法配置,用於ServiceConfig和ReferenceConfig指定方法級的配置資訊。 <dubbo:argument/> 用於指定方法引數配置。
配置覆蓋的優先順序
方法級別優先,介面次之,全域性配置再次之
如果級別一樣,則消費者優先,提供者次之。
小建議:雖然消費者優先,但是建議設定生產者,比如超時timeout。因為提供者更清楚一個方法需要執行多久。
屬性設定
我們還可以對Dubbo使用properties檔案進行設定。比如存在公共配置很簡單,又沒有多註冊中心和多協議等的情況。Dubbo會自動載入classpath根目錄的dubbo.properties檔案,也可以使用jvm的啟動引數-Dubbo.properties.file=mydubbo.propertis來指定檔案的位置
下面是一個dubbo.properties的一個配置示例。
dubbo.application.name=provider
dubbo.application.owner=test
dubbo.registry.address=zookeeper://xxx.xxx.xx.xx:2181
1、屬性的配置規則遵循以下約定:
講xml配置的標籤名加屬性名叫,用點分割,將多個屬性拆成多個行,比如: dubbo.application.name=provider 等價於 <dubbo:application name="provider"/>
如果xml有多行同名標籤配置,則可用id號區分,如果沒有id號,則將對所有的同名標籤生效
2、配置方式的優先級別
1、jvm啟動-D引數優先。xml次之,properties最後(相當於預設值,只有沒有xml時候,dubbo.properties才會生效)
API配置
也可以通過程式程式碼對dubbo進行配置,該方式一般用於test,mock等,生產環境推薦用xml方式和屬性方式
API屬性配置與xml配置項是一一對應的,比如 ApplicationConfig application = new ApplicationConfig();application.setName("dubbo-api-test");等價於<dubbo:application name="provider"/>
參考下面的連結:
註解配置
還可以使用註解對Dubbo進行配置,該方式是2.5.7版本之後新增的,可以大量節省xml配置和屬性配置,配置風格像springboot