分佈式學習系列【dubbo入門實踐】

分佈式學習系列【dubbo入門實踐】html

dubbo架構java

  

  

  組成部分:provider,consumer,registry,monitor; provider,consumer註冊,訂閱相似於消息隊列的註冊訂閱git

  

1、環境安裝github

一、dubbo admin 管理控制檯安裝(Windows環境)spring

     #下載dubbo-admin-2.5.3.war,部署到tomcat下,根據須要編輯WEB-INF/dubbo.properties文件:windows

  dubbo.registry.address=zookeeper://127.0.0.1:2181tomcat

  dubbo.admin.root.password=root架構

  dubbo.admin.guest.password=guestapp

 

  #dubbo admin 部署問題:版本2.5.3啓動報錯:Bean property 'URIType' is not writable or has an invalidmaven

  緣由:使用了JDK1.8;

  解決方法:將環境變量JAVA_HOME設置爲JDK1.7;

二、zookeeper 安裝

  dubbo對註冊中心實現了抽象,實現的註冊中心有:ZooKeeper,Redis,Multicast;這裏採用zookeeper進行演示。

  下載zookeeper解壓,在zookeeper->conf目錄下複製一份zoo_sample.cfg爲zoo.cfg,修改配置

  添加配置:(默認不會自動建立,須要手動添加)

  dataDir=D:\\zookeeper\\data   
  dataLogDir=D:\\zookeeper\\log

  下載後windows下直接進入doc,進入zookeeper->bin目錄運行zkServer.cmd命令;

      能夠用netstat -ano|findstr "2181"檢查是否啓動成功  

   TCP 0.0.0.0:2181 0.0.0.0:0 LISTENING 5716
  TCP 127.0.0.1:2181 127.0.0.1:53785 ESTABLISHED 5716
  TCP 127.0.0.1:53785 127.0.0.1:2181 ESTABLISHED 9752
  TCP [::]:2181 [::]:0 LISTENING 5716    

       也可用JPS查看:  

   8608 SmartGit
  8992 Jps
  5716 QuorumPeerMain
  9752 Bootstrap

 

三、啓動tomcat訪問:localhost:8080

 

 

 2、實踐步驟

#建立服務接口  

public interface DemoService {
    String sendMessage(String message);
}

#建立接口實現

public class DemoServiceImpl implements DemoService {
    @Override
    public String sendMessage(String message){
        System.out.println("this demoService get message:"+message);
        return "provirder return message success";
    }
}

#建立提供方spring配置文件provider.xml  

<?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="dubbo-demo-test"  />
    <!-- 使用zookeeper註冊中心暴露服務地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    <!-- 生成遠程服務代理,能夠和本地bean同樣使用demoService -->
    <dubbo:reference id="demoService" interface="com.demo.DemoService" />
</beans>

#建立提供方啓動程序:DemoProvider 

public class DemoProvider {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");
        context.start();
        System.out.println("provider started ...");
        System.in.read();
    }
}

#建立消費方spring配置文件consumer.xml

<?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="dubbo-demo-test"  />
    <!-- 使用zookeeper註冊中心暴露服務地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />
    <!-- 生成遠程服務代理,能夠和本地bean同樣使用demoService -->
    <dubbo:reference id="demoService" interface="com.demo.DemoService" />
</beans>

#建立消費方方啓動程序:DemoConsumer   

public class DemoConsumer {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml");
        context.start();
        DemoService demoService = (DemoService) context.getBean("demoService");
        String returnMessage = demoService.sendMessage("consumer send message: hello my first dubbo service");
        System.out.println("provider return message:"+returnMessage);
    }
}

  

 #添加項目maven依賴

分別加入spring IOC,zkClient,dubbo依賴

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>3.0.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.5.3</version>
</dependency>
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>

  

#啓動提供方服務,消費方進行調用

運行啓動提供方DemoProvider,啓動後進入待服務狀態

觀察dubbo admin發現已經剛纔的啓動服務在zookeepr成功註冊

 

這時消費方能夠進行調用,運行DemoConsumer 

此時服務端收到請求:

調用方收到響應:

 

附上示例代碼:  http://files.cnblogs.com/files/yuxuan/dubbo-demo.rar

相關文章
相關標籤/搜索