更新時間:2020-05-29 14:33:46 來源:動力節點 瀏覽2392次
Dubbo是一個分布式服務框架,它運用了全Spring配置方式,今天我們就一起來看看Dubbo相關配置說明,內容具體包括包掃描、協議、啟動時檢查以及負載均衡。
```xml
<dubbo:annotation package="com.itheima.service"/>
```
服務提供者和服務消費者都需要配置,表示包掃描,作用是掃描指定包(包括子包)下的類。如果不使用包掃描,也可以通過如下配置的方式來發布服務:
```xml
<bean id="helloService"class="com.itheima.service.impl.HelloServiceImpl"/>
<dubbo:service interface="com.itheima.api.HelloService"ref="helloService"/>
```
作為服務消費者,可以通過如下配置來引用服務:
```xml
<!--生成遠程服務代理,可以和本地bean一樣使用helloService-->
<dubbo:reference id="helloService"interface="com.itheima.api.HelloService"/>
```
上面這種方式發布和引用服務,一個配置項(<dubbo:service>、<dubbo:reference>)只能發布或者引用一個服務,如果有多個服務,這種方式就比較繁瑣了。推薦使用包掃描方式。
```xml
<dubbo:protocol name="dubbo"port="20880"/>
```
一般在服務提供者一方配置,可以指定使用的協議名稱和端口號。其中Dubbo支持的協議有:dubbo、rmi、hessian、http、webservice、rest、redis等。推薦使用的是Dubbo協議。
Dubbo協議采用單一長連接和NIO異步通訊,適合于小數據量大并發的服務調用,以及服務消費者機器數遠大于服務提供者機器數的情況。不適合傳送大數據量的服務,比如傳文件,傳視頻等,除非請求量很低。也可以在同一個工程中配置多個協議,不同服務可以使用不同的協議,例如:
```xml
<!--多協議配置-->
<dubbo:protocol name="dubbo"port="20880"/>
<dubbo:protocol name="rmi"port="1099"/>
<!--使用dubbo協議暴露服務-->
<dubbo:service interface="com.itheima.api.HelloService"ref="helloService"protocol="dubbo"/>
<!--使用rmi協議暴露服務-->
<dubbo:service interface="com.itheima.api.DemoService"ref="demoService"protocol="rmi"/>
```
```xml
<dubbo:consumer check="false"/>
```
上面這個配置需要配置在服務消費者一方,如果不配置默認check值為true。Dubbo缺省會在啟動時檢查依賴的服務是否可用,不可用時會拋出異常,阻止Spring初始化完成,以便上線時,能及早發現問題。可以通過將check值改為false來關閉檢查。建議在開發階段將check值設置為false,在生產環境下改為true。
負載均衡:其實就是將請求分攤到多個操作單元上進行執行,從而共同完成工作任務。在集群負載均衡時,Dubbo提供了多種均衡策略(包括隨機、輪詢、最少活躍調用數、一致性Hash),缺省為random隨機調用。配置負載均衡策略,既可以在服務提供者一方配置,也可以在服務消費者一方配置,如下:
`java
????@Controller
????@RequestMapping("/demo")
????public?class?HelloController?{
????????//在服務消費者一方配置負載均衡策略
????????@Reference(check?=?false,loadbalance?=?"random")
????????private?HelloService?helloService;
?
????????@RequestMapping("/hello")
????????@ResponseBody
????????public?String?getName(String?name){
????????????//遠程調用
????????????String?result?=?helloService.sayHello(name);
????????????System.out.println(result);
????????????return?result;
????????}
????}
```
?
```java
//在服務提供者一方配置負載均衡
@Service(loadbalance?=?"random")
public?class?HelloServiceImpl?implements?HelloService?{
????public?String?sayHello(String?name)?{
????????return?"hello?"?+?name;
????}
}
可以通過啟動多個服務提供者來觀察Dubbo負載均衡效果。
注意:因為我們是在一臺機器上啟動多個服務提供者,所以需要修改tomcat的端口號和Dubbo服務的端口號來防止端口沖突。在實際生產環境中,多個服務提供者是分別部署在不同的機器上,所以不存在端口沖突問題。
Java相關內容教程
Dubbo視頻教程:http://www.dabaquan.cn/javavideo/129.html
以上就是動力節點java培訓機構的小編針對“Java就業培訓教程之Dubbo相關配置”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習