dubbox 2.8.4 服務端消費端配置示例

關於dubbox的核心原理和細節會另開一篇文章來介紹,這篇文章主要是從配置和應用層面來介紹dubbox 2.8.4的使用。html

zookeeper的安裝

一、準備工做java

-下載zookeeper
官方地址:http://apache.fayea.com/zookeeper/zookeeper-3.4.6/
下載版本:zookeeper-3.4.6.tar.gzmysql

-下載JDK
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
下載版本:JDK1.7.X版本,32位或64位看操做系統
JDK的安裝就跳過了,直接百度一大堆,必定記得設置PATH,classpath,JAVA_HOME環境變量git

二、解壓和安裝zookeeper
zookeeper的目錄我是放置在/usr/zookeeper-3.4.6/這個位置,因此:
tar -zxvf ./zookeeper-3.4.6.tar.gz
mv ./zookeeper-3.4.6 /usr/zookeeper-3.4.6/github

一樣的,設置全局環境變量:
export PATH=/usr/zookeeper-3.4.6/bin:$PATHweb

好的,安裝完成了,是否是簡單。接下來,咱們講解一下zookeeper的主配置文件。zookeeper的主配置文件所在的地址是:${您的zookeeper安裝位置}/conf/zoo.cfg
可是,解壓後的zookeeper並無這個配置文件,有一個名叫zoo_sample.cfg,因此,咱們複製一個zoo.cfg文件:
cp /usr/zookeeper-3.4.6/conf/zoo_sample.cfg /usr/zookeeper-3.4.6/conf/zoo.cfgspring

最後,使用zkServer.sh start命令,啓動zookeeper:sql

[root@vm2 ~]# zkServer.sh start
JMX enabled by default
Using config: /usr/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

dubbox

一、準備工做
下載dubbox的源代碼
下載地址:https://github.com/dangdangdotcom/dubbox數據庫

二、編譯源碼(此處默認你們會用maven了)
運行maven命令:mvn clean install -Dmaven.test.skip=true
將dubbox的源碼打包發佈到本地倉庫,目的是爲了獲取:dubbo-admin-2.8.4.war和dubbo-monitor.warapache

dubbox-admin管理端

懶人下載:http://download.csdn.net/detail/u011282930/9477514

一、部署dubbo-admin管理端,將dubbo-admin-2.8.4.war放置到準備好的tomcat目錄
二、修改WEB-INF下dubbo.properties
主要是修改zookeeper的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
三、運行tomcat
輸入地址:http://localhost:8080/dubbo-admin-2.8.4
默認登陸帳戶和密碼均爲:root
四、登陸後首頁
這裏寫圖片描述
到此爲止,dubbox的後臺管理端就配置成功了

dubbox-monitor監控端

懶人下載:http://download.csdn.net/detail/u011282930/9477515
咱們對於dubbo的監控用的是改裝後的(頁面很是好看)

下載dubbox-monitor的源代碼
下載地址:http://git.oschina.net/handu/dubbo-monitor

Dubbo-Monitor配置介紹
一、建立數據庫 首先建立名稱爲monitor數據庫,編碼格式UTF-8。而後將項目sql文件夾下面的create.sql導入到數據庫,生成dubbo_invoke表表明成功導入。

二、編輯項目中application.properties,配置以下:

####Dubbo Settings
dubbo.application.name=dubbo-monitor
dubbo.application.owner=handu.com
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.port=6060
 
####Database Settings
db.url=jdbc:mysql://<database_host>:<database_port>/monitor?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8
db.username=root
db.password=root
db.maxActive=500
 
####System Manager
manager.username=admin
manager.password=admin</database_port></database_host>

三、打包運行項目 執行maven命令:mvn clean package target文件夾下生成的dubbo-monitor.war即爲項目部署文件,將其放置到對應服務器目錄下,啓動服務器便可。例如:tomcat的webapps文件夾下。

四、訪問項目 啓動web服務器後,訪問地址:http://IP:[port]/dubbo-moniotor,採用配置文件中manager.username和manager.password設置值進行登陸。
這裏寫圖片描述
五、透過dubbox服務管理端,咱們會發現多了一個monitor的服務
這裏寫圖片描述

下文默認你們已經用maven引入相關依賴或者導入相關包了

具體依賴jar包以下圖所示
這裏寫圖片描述
maven依賴庫

<dependency>
            <groupid>com.alibaba</groupid>
            dubbo</artifactid>
            <version>2.8.4</version>
        </dependency>
        <dependency>
            <groupid>com.alibaba</groupid>
            dubbo-rpc-rest</artifactid>
            <version>2.8.4</version>
        </dependency>
        <dependency>
            <groupid>com.alibaba</groupid>
            dubbo-rpc-webservice</artifactid>
            <version>2.8.4</version>
        </dependency>
        <dependency>
            <groupid>com.101tec</groupid>
            zkclient</artifactid>
            <version>0.2</version>
        </dependency>
 
        <dependency>
            <groupid>org.apache.zookeeper</groupid>
            zookeeper</artifactid>
            <version>3.3.6</version>
            <exclusions>
                <exclusion>
                    <groupid>log4j</groupid>
                    log4j</artifactid>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupid>log4j</groupid>
            log4j</artifactid>
            <version>1.2.16</version>
        </dependency>

服務提供者實例開發

一、定義一個Service接口和相關實現類
定義一個接口,IUserService.java

package service;
public interface IUserService {
    public void sayHello();
}

實現這個接口,UserService.java

package service;
public class UserService implements IUserService {
 
    @Override
    public void sayHello() {
        System.err.println("HELLO WORLD!");
    }
 
}

二、配置這個接口的xml文件,dubbo-provider.xml

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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="hello-world-app" owner="whb"></dubbo:application>
    <!--zookeeper註冊中心 -->
    <dubbo:registry address="zookeeper://172.17.84.84:2181"></dubbo:registry>
    <!--使用multicast廣播註冊中心暴露服務地址 -->
    <!--<dubbo:registry address="multicast://10.57.41.19:1234" /> -->
    <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
    <!-- 配置監控的服務地址和IP-->
    <dubbo:monitor address="127.0.0.1:7070"></dubbo:monitor>
    <!-- 發佈這個服務 -->
    <dubbo:service connections="100" interface="service.IUserService" protocol="dubbo" ref="userService" timeout="2000"></dubbo:service>       
    <!-- 和本地bean同樣實現服務 -->
    <bean class="service.UserService" id="userService"></bean>
</beans>

三、運行發佈咱們的接口,LuncherProvider.java

package demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class LuncherProvider {
    public static void main(String[] args) throws InterruptedException {
        LuncherProvider luncher = new LuncherProvider();
        luncher.start();
        Thread.sleep(1000 * 60 * 10);
    }
 
    void start() {
        String configLocation = "classpath*:/dubbo-provider.xml";
        ApplicationContext context = new ClassPathXmlApplicationContext(
                configLocation);
        String[] names = context.getBeanDefinitionNames();
        System.out.print("Beans:");
        for (String string : names)
            System.out.print(string + ",");
        System.out.println();
    }
}

控制檯輸出以下內容,爲成功
這裏寫圖片描述
經過dubbox管理端來查看咱們的服務,經過下圖,咱們能夠看到咱們的服務已經註冊到zookeeper了
這裏寫圖片描述

消費者實例開發

如何調用咱們發佈的服務呢?
一、定義一個如出一轍的接口,IUserService.java

package service;
 
public interface IUserService {
    public void sayHello();
}

二、配置這個接口調用信息,

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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="consumer-of-helloworld-app"></dubbo:application>  
         <!--zookeeper註冊中心 -->  
         <dubbo:registry address="172.17.84.84:2181" protocol="zookeeper"></dubbo:registry>   
         <!--使用multicast廣播註冊中心暴露的服務地址 -->  
         <!--<dubbo:registryaddress="multicast://10.57.41.19:1234" /> -->  
          <!--         <dubbo:monitor address="127.0.0.1:7070"  /> -->
          <!-- 生成遠程服務代理,能夠和本地bean同樣使用IUserService-->  
         <dubbo:reference id="userService" interface="service.IUserService"></dubbo:reference>  
</beans>

三、測試調用服務的代碼,LuncherConsumer.java

package demo;
 
 
 
import org.springframework.context.ApplicationContext;  
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
import service.IUserService;  
 
 
public class LuncherConsumer  {  
         public static void main(String[] args) throws InterruptedException{  
                   LuncherConsumer luncher=new LuncherConsumer();
                   String configLocation="classpath*:/dubbo-consumer.xml";  
                   ApplicationContext context =new ClassPathXmlApplicationContext(configLocation);  
                   IUserService us=(IUserService) context.getBean("userService");  
                   String[] names=context.getBeanDefinitionNames();  
                   us.sayHello();
         }  
}

觀察服務端的控制檯,會輸出「HELLO WORLD」
這裏寫圖片描述

至此,dubbox的配置和使用就成功了!

相關文章
相關標籤/搜索