Dubbo有哪些配置?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
1、包掃描
```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>)只能發布或者引用一個服務,如果有多個服務,這種方式就比較繁瑣了。推薦使用包掃描方式。
2、協議
```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" />
```
3、啟動時檢查
```xml
<dubbo:consumer check="false"/>
```
上面這個配置需要配置在服務消費者一方,如果不配置默認check值為true。Dubbo 缺省會在啟動時檢查依賴的服務是否可用,不可用時會拋出異常,阻止 Spring 初始化完成,以便上線時,能及早發現問題??梢酝ㄟ^將check值改為false來關閉檢查。建議在開發階段將check值設置為false,在生產環境下改為true。
4、負載均衡
負載均衡:其實就是將請求分攤到多個操作單元上進行執行,從而共同完成工作任務。在集群負載均衡時,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服務的端口號來防止端口沖突。在實際生產環境中,多個服務提供者是分別部署在不同的機器上,所以不存在端口沖突問題。
看完上述內容,你們掌握Dubbo有哪些配置的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。