Dubbo採用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置便可,Dubbo基於Spring的Schema擴展進行加載。html
一:單機模式安裝zookeeper
1,下載zookeeper註冊中心,下載地址:http://www.apache.org/dyn/closer.cgi/zookeeper/ 下載後解壓便可,進入E:\zookeeper-3.3.6\zookeeper-3.3.6\bin,java
雙擊zkServer.cmd啓動註冊中心服務。web
zkServer.sh【Linux】或zkServer.cmd【Windows】spring
2,在你執行啓動腳本以前,還有幾個基本的配置項須要配置一下,Zookeeper的配置文件在 conf 目錄下,這個目錄下有 zoo_sample.cfg 和 log4j.properties,你須要作的就是將zoo_sample.cfg 更名爲 zoo.cfg,由於 Zookeeper在啓動時會找這個文件做爲默認配置文件。下面詳細介紹一下,這個配置文件中各個配置項的意義。apache
•tickTime:這個時間是做爲Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每一個 tickTime 時間就會發送一個心跳。tomcat
•dataDir:顧名思義就是 Zookeeper保存數據的目錄,默認狀況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。服務器
•dataLogDir:顧名思義就是Zookeeper 保存日誌文件的目錄mybatis
•clientPort:這個端口就是客戶端鏈接Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求mvc
配置好後,zookeeper會監聽本機的2181端口。app
當這些配置項配置好後,你如今就能夠啓動 Zookeeper 了,啓動後要檢查 Zookeeper 是否已經在服務,能夠經過 netstat – ano 命令查看是否有你配置的 clientPort 端口號在監聽服務。
二:服務提供者
定義服務接口:(該接口需單獨打包,在服務提供方和消費方共享)
[java] view plain copy
print?
- package com.unj.dubbotest.provider;
-
- import java.util.List;
-
- public interface DemoService {
-
- String sayHello(String name);
-
- public List getUsers();
-
- }
在服務提供方實現接口:(對服務消費方隱藏實現)
[java] view plain copy
print?
- package com.unj.dubbotest.provider.impl;
-
- import java.util.ArrayList;
- import java.util.List;
-
- import com.unj.dubbotest.provider.DemoService;
-
- public class DemoServiceImpl implements DemoService {
-
- public String sayHello(String name) {
- return "Hello " + name;
- }
-
- public List getUsers() {
- List list = new ArrayList();
- User u1 = new User();
- u1.setName("hejingyuan");
- u1.setAge(20);
- u1.setSex("f");
-
- User u2 = new User();
- u2.setName("xvshu");
- u2.setAge(21);
- u2.setSex("m");
-
-
- list.add(u1);
- list.add(u2);
-
- return list;
- }
- }
用Spring配置聲明暴露服務:
[html] view plain copy
print?
- <?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://code.alibabatech.com/schema/dubbo
- http://code.alibabatech.com/schema/dubbo/dubbo.xsd
- ">
-
- <!-- 具體的實現bean -->
- <bean id="demoService" class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />
-
- <!-- 提供方應用信息,用於計算依賴關係 -->
- <dubbo:application name="xs_provider" />
-
- <!-- 使用multicast廣播註冊中心暴露服務地址 -->
- <!--<dubbo:registry address="multicast://224.5.6.7:1234" /> -->
-
- <!-- 使用zookeeper註冊中心暴露服務地址 --即zookeeper的所在服務器ip地址和端口號 -->
- <dubbo:registry address="zookeeper://192.168.24.213:2181" />
-
- <!-- 用dubbo協議在20880端口暴露服務 -->
- <dubbo:protocol name="dubbo" port="20880" />
-
- <!-- 聲明須要暴露的服務接口 -->
- <dubbo:service interface="com.unj.dubbotest.provider.DemoService"
- ref="demoService" />
-
- </beans>
加載Spring配置,啓動服務(或者將項目建爲web項目,而後在web.xml中配置好spring的啓動,而後扔到tomcat中便可提供服務):
[java] view plain copy
print?
- package com.unj.dubbotest.provider.impl;
-
- import org.springframework.context.support.ClassPathXmlApplicationContext;
-
- public class Provider {
-
- public static void main(String[] args) throws Exception {
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
- new String[] { "applicationContext.xml" });
- context.start();
- System.in.read(); // 爲保證服務一直開着,利用輸入流的阻塞來模擬
- }
- }
三:服務消費者
經過Spring配置引用遠程服務:
[html] view plain copy
print?
- <?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://code.alibabatech.com/schema/dubbo
- http://code.alibabatech.com/schema/dubbo/dubbo.xsd
- ">
-
- <!-- 消費方應用名,用於計算依賴關係,不是匹配條件,不要與提供方同樣 -->
- <dubbo:application name="hjy_consumer" />
-
- <!-- 使用zookeeper註冊中心暴露服務地址 -->
- <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
- <dubbo:registry address="zookeeper://192.168.24.213:2181" />
-
- <!-- 生成遠程服務代理,能夠像使用本地bean同樣使用demoService -->
- <dubbo:reference id="demoService"
- interface="com.unj.dubbotest.provider.DemoService" />
-
- </beans>
調用服務測試:
[java] view plain copy
print?
- package com.alibaba.dubbo.demo.pp;
-
- import java.util.List;
-
- import org.springframework.context.support.ClassPathXmlApplicationContext;
-
- import com.unj.dubbotest.provider.DemoService;
-
- public class Consumer {
-
- public static void main(String[] args) throws Exception {
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
- new String[] { "applicationContext.xml" });
- context.start();
-
- DemoService demoService = (DemoService) context.getBean("demoService");
- String hello = demoService.sayHello("hejingyuan");
- System.out.println(hello);
-
- List list = demoService.getUsers();
- if (list != null && list.size() > 0) {
- for (int i = 0; i < list.size(); i++) {
- System.out.println(list.get(i));
- }
- }
- System.in.read();
- }
-
- }
測試結果:
附:Dubbo的管理頁面
須要下載:dubbo-admin-2.5.3的war包
下載地址:http://download.csdn.net/detail/u013286716/7041185
操做以下:
1,替換掉tomcat/webapps下自帶的ROOT文件夾內容(即替換tomcat的啓動主頁),將下載的war包解壓到webapps/ROOT中,直接替換便可
注意:jdk不要使用1.8,本次實驗使用的爲1.6
2,啓動tomcat,訪問ip:8080便可或者若是是本地的話使用localhost:8080
輸入用戶名密碼,在E:\apache-tomcat-7.0.6-dubbo\webapps\ROOT\WEB-INF下的dubbo.properties文件中便可查看到,如:
3,訪問 http://192.168.24.213:38080/
核心技術:Maven,Springmvc mybatis shiro, Druid, Restful, Dubbo, ZooKeeper,Redis,FastDFS,ActiveMQ,Nginx
1. 項目核心代碼結構截圖
項目模塊依賴
特別提醒:開發人員在開發的時候能夠將本身的業務REST服務化或者Dubbo服務化
2. 項目依賴介紹
2.1 後臺管理系統、Rest服務系統、Scheculer定時調度系統依賴以下圖:
2.2 Dubbo獨立服務項目依賴以下圖:
3. 項目功能部分截圖:
zookeeper、dubbo服務啓動
dubbo管控臺
REST服務平臺