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.把下载文件拷贝到指定路径并解压

tar zxvf zookeeper-3.4.6 .tar.gz

解压后的路径:/usr/local/dubbo/zookeekper/zookeeper-3.4.6

3.进入根路径下的conf目录,拷贝zoo_sample.cfg到zoo.cfg,因为Zookeeper 在启动时会找zoo.cfg这个文件作为默认配置文件,命令如下:

cp zoo_sample.cfg zoo.cfg

4.进入根路径下的bin目录,启动服务,命令如下:

./zkServer.sh start

日志打印如下,启动成功
这里写图片描述

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

1.下载dubbo源码,然后打包,下载地址:https://github.com/dangdangdotcom/dubbox
源码下载后导入到ide中,执行打包命令:mvn clean install -Dmaven.test.skip=true
打包后的目录结构:
这里写图片描述

2.拷贝dubbo-admin-2.8.4.war到tomcat下的webapp中,修改dubbo.properties文件
这里写图片描述
主要修改zookeeper地址,和刚才配置的zookeeper地址一致

3.启动tomcat:
这里写图片描述

访问http://192.168.0.108:8080/dubbo-admin-2.8.4/(根据自己的地址做出修改),登录名和密码默认都是root,能出现以下界面证明配置成功
这里写图片描述

至此,dubbo的简单配置已经完成
接下来继续dubbo的使用demo

dubbo提供者和消费者demo

1.新建一个maven多模块项目,我的项目目录如下:
这里写图片描述

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,出现以下界面,说明服务启动注册成功
这里写图片描述

以下为消费者相关


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方法,控制台如下:
这里写图片描述

刷新http://192.168.0.108:8080/dubbo-admin-2.8.4/governance/consumers,出现以下界面:

这里写图片描述

到此dubbo提供者和消费者demo新建完成且测试通过

附件:
demo源码
dubbo-admin-2.8.4.war

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值