更新時(shí)間:2020-05-29 14:33:46 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2407次
Dubbo是一個(gè)分布式服務(wù)框架,它運(yùn)用了全Spring配置方式,今天我們就一起來(lái)看看Dubbo相關(guān)配置說(shuō)明,內(nèi)容具體包括包掃描、協(xié)議、啟動(dòng)時(shí)檢查以及負(fù)載均衡。
```xml
<dubbo:annotation package="com.itheima.service"/>
```
服務(wù)提供者和服務(wù)消費(fèi)者都需要配置,表示包掃描,作用是掃描指定包(包括子包)下的類(lèi)。如果不使用包掃描,也可以通過(guò)如下配置的方式來(lá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)者,可以通過(guò)如下配置來(lá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ù),這種方式就比較繁瑣了。推薦使用包掃描方式。
```xml
<dubbo:protocol name="dubbo"port="20880"/>
```
一般在服務(wù)提供者一方配置,可以指定使用的協(xié)議名稱(chēng)和端口號(hào)。其中Dubbo支持的協(xié)議有:dubbo、rmi、hessian、http、webservice、rest、redis等。推薦使用的是Dubbo協(xié)議。
Dubbo協(xié)議采用單一長(zhǎng)連接和NIO異步通訊,適合于小數(shù)據(jù)量大并發(fā)的服務(wù)調(diào)用,以及服務(wù)消費(fèi)者機(jī)器數(shù)遠(yuǎn)大于服務(wù)提供者機(jī)器數(shù)的情況。不適合傳送大數(shù)據(jù)量的服務(wù),比如傳文件,傳視頻等,除非請(qǐng)求量很低。也可以在同一個(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"/>
```
```xml
<dubbo:consumer check="false"/>
```
上面這個(gè)配置需要配置在服務(wù)消費(fèi)者一方,如果不配置默認(rèn)check值為true。Dubbo缺省會(huì)在啟動(dòng)時(shí)檢查依賴(lài)的服務(wù)是否可用,不可用時(shí)會(huì)拋出異常,阻止Spring初始化完成,以便上線時(shí),能及早發(fā)現(xiàn)問(wèn)題。可以通過(guò)將check值改為false來(lái)關(guān)閉檢查。建議在開(kāi)發(fā)階段將check值設(shè)置為false,在生產(chǎn)環(huán)境下改為true。
負(fù)載均衡:其實(shí)就是將請(qǐng)求分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,從而共同完成工作任務(wù)。在集群負(fù)載均衡時(shí),Dubbo提供了多種均衡策略(包括隨機(jī)、輪詢(xún)、最少活躍調(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;
????}
}
可以通過(guò)啟動(dòng)多個(gè)服務(wù)提供者來(lái)觀察Dubbo負(fù)載均衡效果。
注意:因?yàn)槲覀兪窃谝慌_(tái)機(jī)器上啟動(dòng)多個(gè)服務(wù)提供者,所以需要修改tomcat的端口號(hào)和Dubbo服務(wù)的端口號(hào)來(lái)防止端口沖突。在實(shí)際生產(chǎn)環(huán)境中,多個(gè)服務(wù)提供者是分別部署在不同的機(jī)器上,所以不存在端口沖突問(wèn)題。
Java相關(guān)內(nèi)容教程
Dubbo視頻教程:http://www.ilovecolors.com.cn/javavideo/129.html
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java就業(yè)培訓(xùn)教程之Dubbo相關(guān)配置”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743