1. 程式人生 > >Dubbo實戰介紹1

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