天天看點

dubbox 2.8.4的配置和使用dubbox

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

dubbox的服務監控和日志采集:http://blog.csdn.net/u011282930/article/details/52786414

zookeeper的安裝

1、準備工作

-下載下傳zookeeper

官方位址:http://apache.fayea.com/zookeeper/zookeeper-3.4.6/

下載下傳版本:zookeeper-3.4.6.tar.gz

-下載下傳JDK

下載下傳位址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

下載下傳版本:JDK1.7.X版本,32位或64位看作業系統

JDK的安裝就跳過了,直接百度一大堆,一定記得設定PATH,classpath,JAVA_HOME環境變量

2、解壓和安裝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/

同樣的,設定全局環境變量:

export PATH=/usr/zookeeper-3.4.6/bin:$PATH

好的,安裝完成了,是不是簡單。接下來,我們講解一下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.cfg

最後,使用zkServer.sh start指令,啟動zookeeper:

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

dubbox

1、準備工作

下載下傳dubbox的源代碼

下載下傳位址:https://github.com/dangdangdotcom/dubbox

2、編譯源碼(此處預設大家會用maven了)

運作maven指令:mvn clean install -Dmaven.test.skip=true

将dubbox的源碼打包釋出到本地倉庫,目的是為了擷取:dubbo-admin-2.8.4.war和dubbo-monitor.war

dubbox-admin管理端

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

1、部署dubbo-admin管理端,将dubbo-admin-2.8.4.war放置到準備好的tomcat目錄

2、修改WEB-INF下dubbo.properties

主要是修改zookeeper的位址

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

3、運作tomcat

輸入位址:http://localhost:8080/dubbo-admin-2.8.4

預設登入賬戶和密碼均為:root

4、登入後首頁

dubbox 2.8.4的配置和使用dubbox

到此為止,dubbox的背景管理端就配置成功了

dubbox-monitor監控端

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

我們對于dubbo的監控用的是改裝後的(頁面非常好看)

下載下傳dubbox-monitor的源代碼

下載下傳位址:http://git.oschina.net/handu/dubbo-monitor

Dubbo-Monitor配置介紹

1、建立資料庫 首先建立名稱為monitor資料庫,編碼格式UTF-8。然後将項目sql檔案夾下面的create.sql導入到資料庫,生成dubbo_invoke表代表成功導入。

下載下傳位址:http://download.csdn.net/detail/u011282930/9650381

2、編輯項目中application.properties,配置如下:

####Dubbo Settings
dubbo.application.name=dubbo-monitor
dubbo.application.owner=handu.com
dubbo.registry.address=zookeeper://:
dubbo.protocol.port=

####Database Settings
db.url=jdbc:mysql://<database_host>:<database_port>/monitor?prepStmtCacheSize=&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-
db.username=root
db.password=root
db.maxActive=

####System Manager
manager.username=admin
manager.password=admin
           

3、打包運作項目 執行maven指令:mvn clean package target檔案夾下生成的dubbo-monitor.war即為項目部署檔案,将其放置到對應伺服器目錄下,啟動伺服器即可。例如:tomcat的webapps檔案夾下。

4、通路項目 啟動web伺服器後,通路位址:http://IP:[port]/dubbo-moniotor,采用配置檔案中manager.username和manager.password設定值進行登入。

dubbox 2.8.4的配置和使用dubbox

5、透過dubbox服務管理端,我們會發現多了一個monitor的服務

dubbox 2.8.4的配置和使用dubbox

下文預設大家已經用maven引入相關依賴或者導入相關包了

具體依賴jar包如下圖所示

dubbox 2.8.4的配置和使用dubbox

maven依賴庫

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo-rpc-rest</artifactId>
            <version>2.8.4</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo-rpc-webservice</artifactId>
            <version>2.8.4</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.2</version>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.3.6</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
           

服務提供者執行個體開發

1、定義一個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!");
    }

}
           

2、配置這個接口的xml檔案,dubbo-provider.xml

<?xml version="1.1" 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 owner="whb" name="hello-world-app" />
    <!--zookeeper注冊中心 -->
    <dubbo:registry address="zookeeper://172.17.84.84:2181"/>
    <!--使用multicast廣播注冊中心暴露服務位址 -->
    <!--<dubbo:registry address="multicast://10.57.41.19:1234" /> -->
    <dubbo:protocol name ="dubbo" port="20880" />
    <!-- 配置監控的服務位址和IP-->
    <dubbo:monitor address="127.0.0.1:7070"  />
    <!-- 釋出這個服務 -->
    <dubbo:service  protocol="dubbo"  timeout="2000" connections="100" interface ="service.IUserService" ref="userService" />       
    <!-- 和本地bean一樣實作服務 -->
    <bean id="userService"
        class="service.UserService" />
</beans>  
           

3、運作釋出我們的接口,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( *  * );
    }

    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 2.8.4的配置和使用dubbox

通過dubbox管理端來檢視我們的服務,通過下圖,我們可以看到我們的服務已經注冊到zookeeper了

dubbox 2.8.4的配置和使用dubbox

消費者執行個體開發

如何調用我們釋出的服務呢?

1、定義一個一模一樣的接口,IUserService.java

package service;

public interface IUserService {
    public void sayHello();
}
           

2、配置這個接口調用資訊,

<?xml version="1.1" 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="consumer-of-helloworld-app" />  
         <!--zookeeper注冊中心 -->  
         <dubbo:registry  protocol="zookeeper" address="172.17.84.84:2181" />   
         <!--使用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" />  
</beans>  
           

3、測試調用服務的代碼,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 2.8.4的配置和使用dubbox

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