一、分布式的項目
項目中新增依賴:
<!-- dubbo相關 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<!-- 一般的會排除spring,因為會在項目中首先引入Spring的依賴 -->
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Zookeeper相關依賴 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.7</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
zkclient是獨立運作的,會主動和zookeeper進行心跳檢測。
-
如果原來是一個大項目,則要進行拆分,一般情況下會把:
一部分:JSP+Controller+相關的調用
一部分:Service+Mapper
如果還有其他服務則繼續拆分。
- 如果本身就是一個一個的分布式項目則,隻需要新增相關依賴即可。
二、啟動Zookeeper
#############################################################
[[email protected] bin]# ./zkServer.sh start
[[email protected] bin]# ./zkServer.sh status
[[email protected] bin]# ./zkServer.sh stop
#############################################################
三、spring整合dubbo限制
在spring的容器中配置dubbo的限制
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
四、dubbo使用zookeeper用戶端釋出項目
- 釋出dubbo服務
<!-- 使用dubbo釋出服務 -->
<!-- 1. 定義應用名稱,提供方應用資訊,用于計算依賴關系 -->
<dubbo:application name="myself_service" />
<!-- 2. 注冊中心位址-->
<dubbo:registry protocol="zookeeper" address="192.168.34.7:2181" />
<!-- 3. 用dubbo協定在20880端口暴露服務 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 4. 聲明需要暴露的服務接口,一定要加上id -->
<dubbo:service id="searchServiceInf" inter ref="searchServiceImp" />
<dubbo:service id="attrServiceInf" inter ref="attrServiceImp" />
……
- 調用Dubbo服務
<!-- 1. 定義應用名稱 -->
<dubbo:application name="myself_client" />
<!-- 2. 注冊中心位址 -->
<dubbo:registry protocol="zookeeper" address="192.168.34.7:2181" />
<!-- 3. 需要引用的接口服務,從注冊中心中讀取id定義的資料後,封裝為interface類型,并且,這些id就是在程式中定義的@Autowaried的字段屬性 -->
<dubbo:reference inter id="searchServiceInf">
</dubbo:reference>
<dubbo:reference inter id="attrServiceInf">
</dubbo:reference>
切記:
Dubbo:傳遞資料的java對象需要序列化(implements Serializable)。
重複通路的時差,一定要大于心跳的時間
五、Dubbo的監控中心
自帶的監控項目:dubbo-admin-version.war,Tomcat的web應用。
關于負載均衡:
Dubbo自帶負載均衡政策,可在用戶端頁面中進行設定。
對每一個服務進行設定:随機、輪詢、最少并發。