剛剛開始接觸dubbo,也是百度了很多資料學習瞭解。後面也是親自動手實現了一下。現在就是把動手過程記錄下來。因爲是學習瞭解,目前都是基於windows環境下的搭建。雖然有點low。但是也是學習入門先。
dubbo介紹之類的就不說了,百度也是大把資料出來。
現在開始說一下搭建過程:
一.先搭建 zookeeper 註冊中心環境
1.1 下載 zookeeper
官網:http://www.apache.org/dyn/closer.cgi/zookeeper/
我現在下載的是zookeeper-3.4.8。當然可以下載其他版本
1.2 配置 zookeeper
下載之後解壓,解壓完之後在conf目錄有個有 zoo_sample.cfg 和 log4j.properties兩個文件,然後我們把zoo_sample.cfg文件改名:zoo.cfg,因爲 Zookeeper 在啓動時會找這個文件作爲默認配置文件。重命名完成之後打開文件,修改一處地方:dataDir=E:\\2016_pdx_Study\\dubbo\\zookeeper-3.4.8\\data 。data是新建的文件夾
dataDir:Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。
tickTime:這個時間是作爲
Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。
clientPort:這個端口就是客戶端連接
Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
1.3 運行
打開bin文件下面執行 zkServer.cmd。一直打開着不用關閉
到此Zookeeper環境搭建OK。
二。搭建dubbo-admin管理平臺
dubbo-admin主要是對消費者跟提供者進行管理。
2.1下載
下載dubbo-admin-2.5.4-SNAPSHOT.war。後面我會打包上傳,或者百度一下都可以搜到
2.2 安裝部署
把下載下來的dubbo-admin-2.5.4-SNAPSHOT.war放在tomcat的webapps目錄下。就像我們平時部署項目一樣就行了。然後啓動tomcat。就會生成dubbo-admin-2.5.4-SNAPSHOT應用。
然後在dubbo-admin-2.5.4-SNAPSHOT\WEB-INF 目錄下有個dubbo.properties文件
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
這個是用戶名跟密碼。
2.3 啓動
先啓動zookeeper,然後在啓動tomcat,然後訪問http://localhost:8082/dubbo-admin-2.5.4-SNAPSHOT
輸入用戶名密碼:root/root
就可以進入主界面啦!
到此環境都搭建ok!
三。創建項目
3.1 創建服務提供者
我現在用的是myeclipse創建maven項目dubbo-provider項目
創建完之後引入相關的依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<!-- Zookeeper 用於分佈式服務管理 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.3</version>
</dependency>
<!-- Zookeeper 用於分佈式服務管理 end -->
<!-- spring相關 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
然後在src/main/java目錄下創建提供服務的接口ProviderService
package com.pdx.service;
public interface ProviderService {
public String sayHello();
}
在創建實現類
package com.pdx.service.impl;
import com.pdx.service.ProviderService;
public class ProviderServiceImpl implements ProviderService{
@Override
public String sayHello() {
return "hello dubbo!!";
}
}
在application.xml文件裏面配置dubbo相關接口暴露
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 具體的實現bean -->
<bean id="providerService" class="com.pdx.service.impl.ProviderServiceImpl" />
<!-- 提供方應用信息,用於計算依賴關係 -->
<dubbo:application name="provider" />
<!-- 使用zookeeper註冊中心暴露服務地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用dubbo協議在20880端口暴露服務 -->
<dubbo:protocol name="dubbo" port="29014" />
<!-- 聲明需要暴露的服務接口 -->
<dubbo:service interface="com.pdx.service.ProviderService" ref="providerService" />
</beans>
最後寫測試類測試,在src/test/java目錄下新建類:ProviderServiceTest
package com.pdx.service;
import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ProviderServiceTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[]{"application.xml"});
context.start();
System.out.println("服務提供者已註冊成功!!");
try {
System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
}
}
最後運行類就可以看到啓動了。哈哈!
然後刷新一下在dubbo-admin管理中心下搜索
3.2保持運行不動;不要關閉這個類。然後我們在新建一個消費者類dubbo-consumer
創建方法跟上面一樣沒有什麼大的變化。然後一樣的引依賴
<!-- 添加provider的jar包 -->
<dependency>
<groupId>com.pdx</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<!-- Zookeeper 用於分佈式服務管理 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.3</version>
</dependency>
<!-- Zookeeper 用於分佈式服務管理 end -->
<!-- spring相關 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
這個跟上面沒有多大區別;唯一的區別就是添加了dubbo-provider的jar依賴
<dependency>
<groupId>com.pdx</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
第二步,在src/test/java目錄先創建測試類ConsumerServiceTest
package com.pdx.service;
import java.io.IOException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ConsumerServiceTest {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "application.xml" });
context.start();
ProviderService testService = (ProviderService) context.getBean("providerService");
System.out.println(testService.sayHello());
try {
System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
}
}
運行就可以看到結果
在dubbo-admin管理中心在點擊消費者
到此OK!!!基本的簡單項目跑了一下。
這個我也是百度搜索學習的。也是初步學習了一下,還有很多不足或者說得不對的;歡迎指正啦!!
下載的地址:http://download.csdn.net/detail/pengdingxu10/9655658