溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Dubbo有哪些配置

發(fā)布時(shí)間:2020-08-07 13:56:21 來源:億速云 閱讀:142 作者:Leah 欄目:編程語言

Dubbo有哪些配置?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

1、包掃描

```xml

<dubbo:annotation package="com.itheima.service" />

```

服務(wù)提供者和服務(wù)消費(fèi)者都需要配置,表示包掃描,作用是掃描指定包(包括子包)下的類。如果不使用包掃描,也可以通過如下配置的方式來發(fā)布服務(wù):

```xml

<bean id="helloService" class="com.itheima.service.impl.HelloServiceImpl" />

<dubbo:service interface="com.itheima.api.HelloService" ref="helloService" />

```

作為服務(wù)消費(fèi)者,可以通過如下配置來引用服務(wù):

```xml

<!-- 生成遠(yuǎn)程服務(wù)代理,可以和本地bean一樣使用helloService -->

<dubbo:reference id="helloService" interface="com.itheima.api.HelloService" />

```

上面這種方式發(fā)布和引用服務(wù),一個(gè)配置項(xiàng)(<dubbo:service>、<dubbo:reference>)只能發(fā)布或者引用一個(gè)服務(wù),如果有多個(gè)服務(wù),這種方式就比較繁瑣了。推薦使用包掃描方式。

2、協(xié)議

```xml

<dubbo:protocol name="dubbo" port="20880"/>

```

一般在服務(wù)提供者一方配置,可以指定使用的協(xié)議名稱和端口號。其中Dubbo支持的協(xié)議有:dubbo、rmi、hessian、http、webservice、restredis等。推薦使用的是Dubbo協(xié)議。

Dubbo 協(xié)議采用單一長連接和 NIO 異步通訊,適合于小數(shù)據(jù)量大并發(fā)的服務(wù)調(diào)用,以及服務(wù)消費(fèi)者機(jī)器數(shù)遠(yuǎn)大于服務(wù)提供者機(jī)器數(shù)的情況。不適合傳送大數(shù)據(jù)量的服務(wù),比如傳文件,傳視頻等,除非請求量很低。也可以在同一個(gè)工程中配置多個(gè)協(xié)議,不同服務(wù)可以使用不同的協(xié)議,例如:

```xml

<!-- 多協(xié)議配置 -->

<dubbo:protocol name="dubbo" port="20880" />

<dubbo:protocol name="rmi" port="1099" />

<!-- 使用dubbo協(xié)議暴露服務(wù) -->

<dubbo:service interface="com.itheima.api.HelloService" ref="helloService" protocol="dubbo" />

<!-- 使用rmi協(xié)議暴露服務(wù) -->

<dubbo:service interface="com.itheima.api.DemoService" ref="demoService" protocol="rmi" />

```

3、啟動(dòng)時(shí)檢查

```xml

<dubbo:consumer check="false"/>

```

上面這個(gè)配置需要配置在服務(wù)消費(fèi)者一方,如果不配置默認(rèn)check值為true。Dubbo 缺省會在啟動(dòng)時(shí)檢查依賴的服務(wù)是否可用,不可用時(shí)會拋出異常,阻止 Spring 初始化完成,以便上線時(shí),能及早發(fā)現(xiàn)問題??梢酝ㄟ^將check值改為false來關(guān)閉檢查。建議在開發(fā)階段將check值設(shè)置為false,在生產(chǎn)環(huán)境下改為true。

4負(fù)載均衡

負(fù)載均衡:其實(shí)就是將請求分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,從而共同完成工作任務(wù)。在集群負(fù)載均衡時(shí),Dubbo 提供了多種均衡策略(包括隨機(jī)、輪詢、最少活躍調(diào)用數(shù)、一致性Hash),缺省為random隨機(jī)調(diào)用。配置負(fù)載均衡策略,既可以在服務(wù)提供者一方配置,也可以在服務(wù)消費(fèi)者一方配置,如下:

```java

    @Controller

    @RequestMapping("/demo")

    public class HelloController {

        //在服務(wù)消費(fèi)者一方配置負(fù)載均衡策略

        @Reference(check = false,loadbalance = "random")

        private HelloService helloService;

 

        @RequestMapping("/hello")

        @ResponseBody

        public String getName(String name){

            //遠(yuǎn)程調(diào)用

            String result = helloService.sayHello(name);

            System.out.println(result);

            return result;

        }

    }

```

```java

//在服務(wù)提供者一方配置負(fù)載均衡

@Service(loadbalance = "random")

public class HelloServiceImpl implements HelloService {

    public String sayHello(String name) {

        return "hello " + name;

    }

}

```

可以通過啟動(dòng)多個(gè)服務(wù)提供者來觀察Dubbo負(fù)載均衡效果。

注意:因?yàn)槲覀兪窃谝慌_機(jī)器上啟動(dòng)多個(gè)服務(wù)提供者,所以需要修改tomcat的端口號和Dubbo服務(wù)的端口號來防止端口沖突。在實(shí)際生產(chǎn)環(huán)境中,多個(gè)服務(wù)提供者是分別部署在不同的機(jī)器上,所以不存在端口沖突問題。

看完上述內(nèi)容,你們掌握Dubbo有哪些配置的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI