天天看點

dubbo簡單搭建及dubbo提供者和消費者demo

Dubbo是一個分布式服務架構,緻力于提供高性能和透明化的RPC遠端服務調用方案,以及SOA服務治理方案。

其核心部分包含:

遠端通訊: 提供對多種基于長連接配接的NIO架構抽象封裝,包括多種線程模型,序列化,以及“請求-響應”模式的資訊交換方式。

叢集容錯: 提供基于接口方法的透明遠端過程調用,包括多協定支援,以及軟負載均衡,失敗容錯,位址路由,動态配置等叢集支援。

自動發現: 基于注冊中心目錄服務,使服務消費方能動态的查找服務提供方,使位址透明,使服務提供方可以平滑增加或減少機器。

下面介紹dubbo環境搭建及相關demo

dubbo相關環境搭建

一、jdk和tomcat安裝,很多人都會,不會的網上搜,一大把。

二、zookeeper的安裝

1.下載下傳Zookeeper-3.4.6.tar.gz 位址http://www.apache.org/dist/zookeeper/

2.把下載下傳檔案拷貝到指定路徑并解壓

解壓後的路徑:/usr/local/dubbo/zookeekper/zookeeper-3.4.6

3.進入根路徑下的conf目錄,拷貝zoo_sample.cfg到zoo.cfg,因為Zookeeper 在啟動時會找zoo.cfg這個檔案作為預設配置檔案,指令如下:

4.進入根路徑下的bin目錄,啟動服務,指令如下:

日志列印如下,啟動成功

dubbo簡單搭建及dubbo提供者和消費者demo

三、配置dubbo-admin的管理頁面

1.下載下傳dubbo源碼,然後打包,下載下傳位址:https://github.com/dangdangdotcom/dubbox

源碼下載下傳後導入到ide中,執行打包指令:

mvn clean install -Dmaven.test.skip=true

打包後的目錄結構:

dubbo簡單搭建及dubbo提供者和消費者demo

2.拷貝dubbo-admin-2.8.4.war到tomcat下的webapp中,修改dubbo.properties檔案

dubbo簡單搭建及dubbo提供者和消費者demo

主要修改zookeeper位址,和剛才配置的zookeeper位址一緻

3.啟動tomcat:

dubbo簡單搭建及dubbo提供者和消費者demo

通路http://192.168.0.108:8080/dubbo-admin-2.8.4/(根據自己的位址做出修改),登入名和密碼預設都是root,能出現以下界面證明配置成功

dubbo簡單搭建及dubbo提供者和消費者demo

至此,dubbo的簡單配置已經完成

接下來繼續dubbo的使用demo

dubbo提供者和消費者demo

1.建立一個maven多子產品項目,我的項目目錄如下:

dubbo簡單搭建及dubbo提供者和消費者demo

dubboProvider和dubboConsumer依賴dubboApi

相關依賴

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.luojun</groupId>
            <artifactId>dubboApi</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <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.4.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>
    </dependencies>
           

2.api相關代碼,就一個簡單的接口:

/**
 * Created by lj on 2017/6/29.
 */
public interface HelloService {
    /**
     * 向世界問好
     * @return
     */
    String sayHello();
}
           

3.提供者相關代碼:

/**
 * Created by lj on 2017/6/29.
 */
public class HelloServiceImpl implements HelloService{

    public String sayHello() {
        return "hello world .....";
    }
}
           

4.dubbo-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="hello-world-app" owner="luojun"></dubbo:application>
    <!--zookeeper注冊中心 -->
    <dubbo:registry address="zookeeper://192.168.0.108:2181"></dubbo:registry>
    <!--<dubbo:registry address="zookeeper://192.168.1.103:2181"></dubbo:registry>-->

    <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
    <!-- 釋出這個服務 -->
    <dubbo:service interface="com.luojun.serivce.HelloService" ref="helloService"></dubbo:service>

    <bean class="com.luojun.HelloServiceImpl" id="helloService"></bean>

</beans>
           

5.提供者測試代碼:

public class Provider
{
    public static void main( String[] args ) throws  Exception
    {
        ApplicationContext context=new ClassPathXmlApplicationContext("classpath:*provider.xml");
        System.in.read();
    }
}
           

6.執行main方法,重新整理http://192.168.0.108:8080/dubbo-admin-2.8.4/governance/services,出現以下界面,說明服務啟動注冊成功

dubbo簡單搭建及dubbo提供者和消費者demo

以下為消費者相關

7.消費者配置檔案dubbo-consume.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="hello-world-consume" owner="luojun"></dubbo:application>
    <!--zookeeper注冊中心 -->
    <dubbo:registry address="zookeeper://192.168.0.108:2181"></dubbo:registry>
    <!--<dubbo:registry address="zookeeper://192.168.1.103:2181"></dubbo:registry>-->

    <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
    <!-- 生成遠端服務代理,可以和本地bean一樣使用demoService -->
    <dubbo:reference id="helloService" interface="com.luojun.serivce.HelloService" ></dubbo:reference>


</beans>
           

8.消費者測試代碼:

public class DubboConsumer
{
    public static void main( String[] args ) throws Exception
    {

        ApplicationContext context=new ClassPathXmlApplicationContext("classpath:*.xml");
        HelloService service= (HelloService) context.getBean("helloService");
        System.out.println(service.sayHello());
    }
}
           

9.執行main方法,控制台如下:

dubbo簡單搭建及dubbo提供者和消費者demo

重新整理http://192.168.0.108:8080/dubbo-admin-2.8.4/governance/consumers,出現以下界面:

dubbo簡單搭建及dubbo提供者和消費者demo

到此dubbo提供者和消費者demo建立完成且測試通過

附件:

demo源碼

dubbo-admin-2.8.4.war

繼續閱讀