近期項目用到了dubbo。這邊稍微記錄下搭建流程,給自己加深下印象,也留個記錄。
1、安裝zookeeper用來作爲dubbo的註冊中心。主要環節是配置zoo.cfg配置文件。具體安裝配置可參考:http://blog.csdn.net/huwei2003/article/details/49101269
2、dubbo-sdk項目創建。該項目是消費者和服務提供者溝通的橋樑,其中定義了api的接口,服務提供者進行具體實現,消費者進行使用。不一定要一定是項目,也可以是jar包之類,能保證被引用就行。
具體如圖,只是簡單的一個接口。
3、dubbo-register服務提供者項目創建。該項目用來實現接口,同時在註冊中心進行註冊。接口實現和一般項目一樣。重點在於dubbo相關的配置。如下圖所示,配置分兩塊,一塊是暴露服務地址,一塊是暴露服務接口。暴露的服務地址是啓動的zookeeper地址,暴露的接口中的ref是實現的bean的id。和spring相似。
<dubbo:registry address="zookeeper://10.20.38.95:2181"></dubbo:registry>
<dubbo:service interface="com.durgan.test.api.TestRegister" ref="testRegister" />
4、dubbo-client的實現。dubbo是消費者,可以直接使用服務提供者提供的實現。使用方式和正常項目一樣。重點同樣在於dubbo相關配置。如圖所示,重點同樣是兩塊,暴露地址,配置要引用的接口。
<dubbo:registry address="zookeeper://10.20.38.95:2181"></dubbo:registry>
<dubbo:reference interface="com.durgan.test.api.TestRegister" id="testRegister" />
5、關於這幾項配置解釋:
dubbo:registry 標籤一些屬性的說明:
1)register是否向此註冊中心註冊服務,如果設爲false,將只訂閱,不註冊。
2)check註冊中心不存在時,是否報錯。
3)subscribe是否向此註冊中心訂閱服務,如果設爲false,將只註冊,不訂閱。
4)timeout註冊中心請求超時時間(毫秒)。
5)address可以Zookeeper集羣配置,地址可以多個以逗號隔開等。
dubbo:service標籤的一些屬性說明:
1)interface服務接口的路徑
2)ref引用對應的實現類的Bean的ID
3)registry向指定註冊中心註冊,在多個註冊中心時使用,值爲<dubbo:registry>的id屬性,多個註冊中心ID用逗號分隔,如果不想將該服務註冊到任何registry,可將值設爲N/A
4)register 默認true ,該協議的服務是否註冊到註冊中心。
dubbo:reference 的一些屬性的說明:
1)interface調用的服務接口
2)check 啓動時檢查提供者是否存在,true報錯,false忽略
3)registry 從指定註冊中心註冊獲取服務列表,在多個註冊中心時使用,值爲<dubbo:registry>的id屬性,多個註冊中心ID用逗號分隔
4)loadbalance 負載均衡策略,可選值:random,roundrobin,leastactive,分別表示:隨機,輪循,最少活躍調用
6、項目用到的相關jar包:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>