第一次使用dubbo,现将问题记录一下

第一次使用dubbo,现将问题记录一下

1. 各软件版本

zookeeper 3.5.2-alpha
dubbo 2.6.1
curator-recipes 4.0.0
curator-framework 4.0.0

这是pom文件中添加的各个依赖版本。
注意curator-recipes及curator-framework必须,这是dubbo新版本所依赖的。
且zookeeper与curator之间有一个版本适配问题,参看连接 http://curator.apache.org/zk-compatibility.html
dubbo需要log4j日志,暂时未添加log4j。

2. 安装zookeeper

下载zookeeper安装包,我的是windows环境,版本为3.5.2-alpha。
特别注意安装的zookeeper必须与pom文件中的依赖版本一致,不然报错。

解压zookeeper安装包,修改 /conf/zoo_samp.conf文件名为zoo.cfg.
打开zoo.cfg文件可以看到clientPort=2181 等配置,可自行修改,我没有修改该端口。
需要修改dataDir配置,在此,我又添加了dataLogDir配置:
dataDir=D:\solrCloud\20180831zookeeper\datafile\data
dataLogDir=D:\solrCloud\20180831zookeeper\datafile\log

3. 启动zookeeper

(1)打开cmd,进入zookeeper安装目录下面的bin目录,输入zkServer.cmd(windows环境)即可启动zookeeper服务端
(2)打开cmd,进入zookeeper安装目录下面的bin目录,输入zkCli.cmd(windows环境)即可启动zookeeper客户端,
可以看到连接到zookeeper了,输入help即可查看能够使用的命令。

4. 编写测试代码

使用的是idea这个IDE,springboot2.0。
新建一个工程,在工程下面新建两个module,一个为provider(服务提供者),这个项目名为spring-dubbo;一个为consumer(服务消费者),这个项目名为spring-consumer。
pom.xml参考上面介绍,在此不赘述。
贴一下pom.xml文件:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!--添加zookeeper依赖-->
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.5.2-alpha</version>
        <type>pom</type>
    </dependency>

    <!--添加dubbo依赖-->
    <!-- https://mvnrepository.com/artifact -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.6.1</version>
    </dependency>

    <!--curator同zookeeper版本有一个适配问题,参考http://curator.apache.org/zk-compatibility.html-->
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>4.0.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>4.0.0</version>
    </dependency>

    <!--热部署依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork><!-- fork:如果没有该配置,这个devtools不会起作用,即应用不会restart -->
            </configuration>
        </plugin>
    </plugins>
</build>

(1)provider的application.yml文件内容如下:

server:
  servlet:
    context-path: /dubbo
  port: 8085

dubbo:
  application:
    name: provider
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    name: dubbo
    port: 20880
  scan: cn.lhkj.springdubbo.project.home.service

provider在cn.lhkj.springdubbo.project.home.service包下面提供了一个服务。

(2)consumer的application.yml文件内容如下:

server:
  servlet:
    context-path: /consumer
  port: 8086

dubbo:
  application:
    name: consumer
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    name: dubbo
    port: 20880
  scan: cn.lhkj.springdubbo.project.home.service

注意:这里配置的scan的值必须和provider中配置的scan的值一样。

(3)特别注意
我在provider中提供一个接口服务,这个接口名为HomeService,所在的包为:
cn.lhkj.springdubbo.project.home.service。
consumer中如果要使用这个接口服务,或者(1)将provider中的这个接口提取出来为一个公共服务,到实际生产时候可以生成jar包,然后在consumer引入使用。
或者(2)在consumer中,编写一个接口,接口名为HomeService,接口所在的包为:cn.lhkj.springdubbo.project.home.service。

(4)在provider和consumer工程主函数添加@EnableDubbo注解

(5)provider工程中服务接口代码如下:

package cn.lhkj.springdubbo.project.home.service;

public interface HomeService {

    String sayHello();
}

package cn.lhkj.springdubbo.project.home.service;

import com.alibaba.dubbo.config.annotation.Service;

@Service
public class HomeServiceImpl implements HomeService {

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

注:@Service注解为dubbo注解,提供了一个接口服务

(6)consumer工程中使用接口服务代码:

package cn.lhkj.project.consumer.service;

import cn.lhkj.springdubbo.project.home.service.HomeService;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Component;

@Component
public class ConsumerService {
    @Reference
    HomeService homeService;

    public String getInfo(){
        return homeService.sayHello();
    }
}

注:如果没有使用jar包,在consumer工程中必须有HomeService接口代码:

package cn.lhkj.springdubbo.project.home.service;

public interface HomeService {

    String sayHello();
}

–end

–add:
感觉没有spring-cloud使用起来方便、简洁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值