天天看點

Dubbo+Zookeeper的分布式部署

一、分布式的項目

項目中新增依賴:

<!-- 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進行心跳檢測。

  1. 如果原來是一個大項目,則要進行拆分,一般情況下會把:

    一部分:JSP+Controller+相關的調用

    一部分:Service+Mapper

    如果還有其他服務則繼續拆分。

  2. 如果本身就是一個一個的分布式項目則,隻需要新增相關依賴即可。

二、啟動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用戶端釋出項目

  1. 釋出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" />
	……
           
  1. 調用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自帶負載均衡政策,可在用戶端頁面中進行設定。

對每一個服務進行設定:随機、輪詢、最少并發。

繼續閱讀