SpringBoot整合Dubbo(入门篇)

╰半橙微兮° 2023-10-18 12:12 66阅读 0赞

遇到的坑

  • zookeeper版本不一致问题
  • 虚拟机防火墙没关

如何搭建

Linux上安装zookeeper

因为最近在学习Linux,所以这个东西直接安装在本机的虚拟机上。(你也可以直接在windows上安装和启用zookeeper,道理是一样的,这里不多描述了。)

  • linux命令直接下载

    wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz

这里有个坑,就是版本必须与程序里的依赖对应的版本一致,否则会出bug,而且不容易发现。

  • 解压下载的tar,然后进入zookeeper根目录,新建data和logs俩个目录
  • 用pwd复制目录名字,后面有用
  • 从根目录进入conf目录下,把zoo_sample.cfg命名为zoo.cfg,删除zoo_sample.cfg
  • 编辑zoo.cfg,把里面的dataDir=…删除,加上下面2行代码

    dataDir=/粘贴你自己zookeeper的目录/data
    dataLogDir=/粘贴你自己zookeeper的目录/logs

  • 返回zookeeper根目录,进入bin,然后运行以下代码

    ./zkServer.sh start

输出Starting zookeeper … STARTED,代表启动成功。你也可以用
./zkServer.sh status 查看,输出Mode: standalone 代表启动中

  • 关闭zookeeper是./zkServer.sh stop,暂时用不上
  • 记得要把防火墙关了

    systemctl stop firewalld.service

    这个你选择性用。关闭开机自启动:systemctl disable firewalld.service

搭建springboot项目

这里会分服务端跟消费端

先新建主项目,作版本控制 springboot-dubbo
  • 我用的是idea,File -> new-> Project ,选择maven,第一页不用勾选任何东西,点next,填好项目的一些信息,一直next下去即可。
  • 新建完成后,把不要的文件夹删除(.idea和src),然后在pom.xml里加入必要的依赖

    <?xml version=”1.0” encoding=”UTF-8”?>


    4.0.0

    bdbk
    springboot-dubbo
    1.0-SNAPSHOT
    war

    springboot-dubbo Maven Webapp


    org.springframework.boot
    spring-boot-starter-parent
    2.1.1.RELEASE






    org.springframework.boot
    spring-boot-starter-web



    org.springframework.boot
    spring-boot-starter-test



    com.alibaba.spring.boot
    dubbo-spring-boot-starter
    2.0.0



    com.101tec
    zkclient
    0.9


然后新建服务端 dubbo-server
  • 直接在 springboot-dubbo 项目上右键 选择new -> Module
  • 不用勾选next,然后输入 dubbo-server
  • 新建后,在java目录下创建你自己的包(这里是bdbk),然后创建启动类 DubboServerApplication

    package bdbk;

    import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication
    @EnableDubboConfiguration
    public class DubboServerApplication {

  1. public static void main(String[] args) {
  2. SpringApplication.run(DubboServerApplication.class, args);
  3. }
  4. }
  • 同包下(或者你再自己创建一个 service 包,因为是入门篇东西比较简单就不再区分结构了)创建接口类 HelloService

    package bdbk;

    /**

    • 接口类
    • @author little_eight
    • @since 2018/12/3
      */
      public interface HelloService {

      public String sayHello(String name);
      }

  • 创建实现类 HelloServiceImpl

    package bdbk;

    import com.alibaba.dubbo.config.annotation.Service;
    import org.springframework.stereotype.Component;

    /**

    • 接口实现类
    • @author little_eight
    • @since 2018/12/3
      */
      @Component
      @Service
      public class HelloServiceImpl implements HelloService {

      public String sayHello(String name) {

      1. return "Hello " + name;

      }
      }

  • 在resources目录下新建 application.yml 配置文件

    配置端口

    server:

    1. port: 8081

    dubbo配置

    spring:

    1. dubbo:
    2. application:
    3. # 应用名称
    4. name: dubbo-server
    5. # 注册中心地址 这里要填你自己zookeeper的地址
    6. registry: zookeeper://192.168.211.128:2181
    7. protocol:
    8. # 协议端口
    9. port: 20880
再创建消费端项目 dubbo-client ,新建跟 dubbo-server 一样
  • 因为要引用服务端,所以先在pom.xml里添加对应的依赖

    <?xml version=”1.0” encoding=”UTF-8”?>


    4.0.0

    bdbk
    dubbo-client
    0.0.1-SNAPSHOT
    jar

    dubbo-client
    Demo project for Spring Boot


    bdbk
    springboot-dubbo
    1.0-SNAPSHOT




    bdbk
    dubbo-server
    0.0.1-SNAPSHOT


  • 新建包bdbk,然后创建启动类 DubboClientApplication

    package bdbk;

    import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;

    @SpringBootApplication
    @EnableDubboConfiguration
    public class DubboClientApplication {

  1. public static void main(String[] args) {
  2. SpringApplication.run(DubboClientApplication.class, args);
  3. }
  4. }
  • 再写个控制类 HelloController,作为测试

    package bdbk;

    import com.alibaba.dubbo.config.annotation.Reference;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;

    /**

    • 控制类 用于测试
    • @author little_eight
    • @since 2018/12/3
      */
      @RestController
      public class HelloController {

      @Reference
      private HelloService helloService;

      @RequestMapping(“/“)
      public String hello() {

      1. String hello = helloService.sayHello("World");
      2. return hello;

      }
      }

  • 在resources目录下新建application.yml配置文件

    配置端口

    server:

    1. port: 8082

    dubbo配置

    spring:

    1. dubbo:
    2. application:
    3. # 应用名称
    4. name: dubbo-client
    5. # 注册中心地址 这里要填你自己zookeeper的地址
    6. registry: zookeeper://192.168.211.128:2181
    7. protocol:
    8. # 协议端口
    9. port: 20881
最后先启动服务端,再启动消费端。

点击访问,页面输出Hello World即为成功。

源码地址

github源码

发表评论

表情:
评论列表 (有 0 条评论,66人围观)

还没有评论,来说两句吧...

相关阅读

    相关 springboot整合dubbo

    本文主要通过代码示例来说明springboot和dubbo的整合方式 以下是核心代码示例,其他的资源整合配置和spring+Dubbo相同 声明下:dubbo网址在下面配

    相关 SpringBoot整合dubbo

    1.什么是Dubbo Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服