SpringBoot+Dubbo实战demo

栏目: Java · 发布时间: 5年前

内容简介:搭建一个SpringBoot+Dubbo+zookeeper的demo完整代码见:搭建 zookeeper 之前要确保当前的服务器已经有 JDK 环境。

前言

搭建一个SpringBoot+Dubbo+zookeeper的demo

完整代码见: github.com/Caizhenhao/…

1. 安装zookeeper环境

搭建 zookeeper 之前要确保当前的服务器已经有 JDK 环境。

我使用的是阿里云服务器

注意:如果你也使用的是云服务器必须配置一个安全组,开放你的zookeeper端口。

SpringBoot+Dubbo实战demo

1.1 首先下载zookeeper的安装包

自行去网上下载zookeeper的安装包后在服务器上解压

1.2 解压

tar -zxvf zookeeper-3.4.11.tar.gz复制代码

解压完毕之后修改一下解压之后所得的文件夹名

mv zookeeper-3.4.11 zookeeper复制代码

删除 zookeeper 安装包

rm -rf zookeeper-3.4.11.tar.gz复制代码

1.3 进入zookeeper目录,创建data文件夹。

mkdir data复制代码

进入 data 文件夹 然后执行pwd命令,复制所得的当前目录位置

SpringBoot+Dubbo实战demo

1.4 进入/zookeeper/conf目录下,复制zoo_sample.cfg,命名为zoo.cfg

cp zoo_sample.cfg zoo.cfg复制代码

1.5 修改配置文件

使用 vim zoo.cfg 命令修改配置文件

修改配置文件中的 dataDir 属性:

dataDir=/usr/local/zookeeper/data复制代码

SpringBoot+Dubbo实战demo

1.6 启动测试

进入 /zookeeper/bin 目录然后执行下面的命令启动zookeeper

./zkServer.sh start复制代码

查看当前 zookeeper 状态

./zkServer.sh status复制代码

SpringBoot+Dubbo实战demo

或者运行 netstat -lntup 命令查看网络状态,可以看到 zookeeper 的端口号 2181 已经被占用

SpringBoot+Dubbo实战demo

到这里zookeeper的环境就搭建完成了,开始搭建项目

2. 开始搭建项目

项目我这里采用maven搭建,使用springboot+dubbo+zookeeper

项目分成三个模块

SpringBoot+Dubbo实战demo

三个模块的功能:

  • dubbo-api 服务提供者的接口
  • dubbo-provider 服务提供者
  • dubbo-consumer 服务消费者

关键依赖

<dependency>
    <groupId>com.alibaba.spring.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>复制代码

3. dubbo-api

抽象服务提供者的接口供服务消费者调用

package com.czh.provider.dubboprovider.serviceImpl.service;

public interface HelloService {
    String sayHello(String name);
}复制代码

4. dubbo-provider

主要分为下面几步:

  1. 创建 springboot 项目;
  2. 加入接口的相关依赖 jar 包;
  3. 在 application.properties 配置文件中配置 dubbo 相关信息;
  4. 实现接口类;
  5. 服务提供者启动类编写

项目结构:

SpringBoot+Dubbo实战demo

4.1 dubbo-provider 项目创建

创建一个 SpringBoot 项目,注意勾选上 web 模块。

4.2 pom 文件引入相关依赖

需要引入接口的相关依赖 jar 包。注意将本项目和 dubbo-api 项目的 dependency 依赖的 groupId 和 artifactId 改成自己的。

<dependencies>
    <dependency>
        <groupId>com.czh.api</groupId>
        <artifactId>dubbo-api</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>复制代码

4.3 在 application.properties 配置文件中配置 dubbo 相关信息

配置很简单,这主要得益于 dubbo 的@EnableDubbo注解。详情可以参考dubbo官方说明 dubbo.apache.org/zh-cn/blog/…

# 配置端口
spring.application.name = dubbo-provider
server.port = 9090

#指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名)
dubbo.application.name = dubbo-provider

demo.service.version = 1.0.0

dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880

#指定注册中心的位置
dubbo.registry.address = zookeeper://ip:2181

#统一设置服务提供方的规则
dubbo.provider.timeout = 1000复制代码

4.4 实现接口

注意: @Service 注解使用的时 Dubbo 提供的而不是 Spring 提供的。

服务提供者,包含真正的服务实现代码

package com.czh.provider.dubboprovider.serviceImpl;

import com.alibaba.dubbo.config.annotation.Service;
import com.czh.provider.dubboprovider.serviceImpl.service.HelloService;

@Service(version = "${demo.service.version}")
public class HelloServiceImpl implements HelloService {

    @Override
    public String sayHello(String name) {
        return "Hello " + name + ",This is springboot-dubbo test";
    }
}复制代码

4.5 服务提供者启动类编写

注意:不要忘记加上 @EnableDubbo 注解开启Dubbo 的自动配置。

package com.czh.provider;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo
public class DubboProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboProviderApplication.class, args);
    }

}
复制代码

5. dubbo-consumer

主要分为下面几步:

  1. 创建 springboot 项目;
  2. 加入接口的相关依赖 jar 包;
  3. 在 application.properties 配置文件中配置 dubbo 相关信息;
  4. 服务消费者调用接口编写
  5. 服务消费者启动类编写

项目结构:

SpringBoot+Dubbo实战demo

前两步与之前的服务提供者一样,这里我直接从第三步开始说起

5.3 在 application.properties 配置文件中配置 dubbo 相关信息

与服务提供者基本一致

spring.application.name = dubbo-consumer
server.port = 9091

#指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名)
dubbo.application.name = dubbo-consumer

demo.service.version = 1.0.0

dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880

#指定注册中心的位置
dubbo.registry.address = zookeeper://ip:2181

#统一设置服务提供方的规则
dubbo.consumer.timeout = 5000复制代码

5.4 编写一个简单的Controller调用远程服务

package com.czh.consumer.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.czh.api.service.HelloService;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloConsumerController {
    @Reference(version = "${demo.service.version}")
    private HelloService helloService;

    @RequestMapping("/sayHello/{name}")
    public String sayHello(@PathVariable("name") String name) {
        return helloService.sayHello(name);
    }

}复制代码

5.5 服务消费者启动类编写

package com.czh.consumer;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubbo
public class DubboConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboConsumerApplication.class, args);
    }

}
复制代码

6. 测试结果

可以看到消费者调用服务提供者正常

SpringBoot+Dubbo实战demo

查看zookeeper下发现有我们注册的服务节点

SpringBoot+Dubbo实战demo

7. 小结

使用springboot+dubbo+zookeeper进行搭建 dubbo 的项目应该说是比较简单的,官方也有集成Springboot的依赖,这里就不多说了,实践出真知~

完整代码见: github.com/Caizhenhao/…


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithms in Java

Data Structures and Algorithms in Java

Robert Lafore / Sams / 2002-11-06 / USD 64.99

Data Structures and Algorithms in Java, Second Edition is designed to be easy to read and understand although the topic itself is complicated. Algorithms are the procedures that software programs use......一起来看看 《Data Structures and Algorithms in Java》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换