dubbo/zookeeper 项目搭建

本文简单介绍搭建dubbo项目

1、安装启动zookeeper

我是在本机虚拟机安装的zookeeper,安装zookeeper很简单

1.1、下载zookeeper

上官网https://zookeeper.apache.org/releases.html下载zookeeper需要的版本。

1.2、上传到服务器

上传到虚拟机,执行命令:sz,将安装包上传到指定位置。

或者用一下方式代替前两步

1.2.1、选中对应的版本,右键菜单中选择“复制链接地址”;

1.2.2、在linux命令行输入:wget https://apache.osuosl.org/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz

1.3、解压安装包

tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz

1.4、添加zookeeper配置文件

切换到 apache-zookeeper-3.6.2-bin/conf  目录下,复制一份 zoo_sample.cfg 文件,改名为 zoo.cfg,因为zookeeper启动的时候如果不指定配置文件的话,默认是读取zoo.cfg文件的。

1.5、启动zookeeper

切换目录到 apache-zookeeper-3.6.2-bin/bin 目录下,执行命令:./zkServer.sh start 即可启动zookeeper。也可以指定配置文件的方式启动。

2、添加依赖

provider和consumer完全一样

        <!-- 接口项目 -->
        <dependency>
            <groupId>com.wolfhome</groupId>
            <artifactId>spring-dubbo-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- dubbo 依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.0</version>
        </dependency>

        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

        <!-- log打印日志需要的依赖 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.9</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

3、项目配置

3.1、接口项目不需要任何配置,就是一个简单的java项目,其项目类应该是interface

3.2、provider 项目配置文件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="spring_dubbo_provider"/>

    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://192.168.1.11:2181"/>

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!-- 声明需要暴露的服务接口 version是服务的版本号dubbo只找对应版本号的服务提供者进行调用 timeout 超时时间 超过时间过报错-->
    <dubbo:service interface="com.wolfhome.service.DubboService" ref="dubboService"/>
    <!-- 具体的实现bean  一般实际项目中 不会把bean写在dubbo配置中,例如采用注解开发时,通过扫描的方式把bean交给spring管理,这里不需要写,直接在dubbo-service引用就好-->
    <bean id="dubboService" class="com.wolfhome.service.impl.DubboServiceImpl" />
</beans>

3.3、consumer 项目配置文件dubbo-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="spring_dubbo_consumer"/>

    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://192.168.1.11:2181" />

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!-- 声明需要暴露的服务接口 version是服务的版本号dubbo只找对应版本号的服务提供者进行调用 timeout 超时时间 超过时间过报错-->
    <dubbo:reference id="dubboService" interface="com.wolfhome.service.DubboService"/>

</beans>

4、编写代码

4.1、接口项目

public interface DubboService {
    public void sayHello(String name);
}

4.2、provider 项目代码

/**
 * 业务代码类,接口项目的实现类
 */
public class DubboServiceImpl implements DubboService {

    private Log logger = LogFactory.getLog(this.getClass());

    @Override
    public void sayHello(String name) {
        logger.info("dubbo服务被调用");
        System.out.println("Hello, " + name);
    }
}


/**
 * 测试类,加载spring配置,启动容器,发送服务到注册中心
 */
public class TestDubboProvider {

    @Test
    public void testDubbo() throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("dubbo-provider.xml");
        context.start();
        System.in.read();
    }
}

4.3、consumer 项目代码

/**
 * 加载spring容器,调用远程服务
 */
public class TestDubboConsumer {

    private Log logger = LogFactory.getLog(this.getClass());

    @Test
    public void TestDubbo() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("dubbo-consumer.xml");
        context.start();

        DubboService dubboService = (DubboService) context.getBean("dubboService");
        dubboService.sayHello("zhang san");
        logger.info("调用dubbo服务成功!");
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值