• SpringBoot集成Dubbo


    1. 构建SpringBoot环境

    在这里插入图片描述

    1.1 创建一个duubo-spring-boot-demo项目

    • duubo-spring-boot-demo:是父工程,方便依赖管理
    • duubo-spring-boot-demo-consumer:是服务消费方,继承父工程
    • duubo-spring-boot-demo-provider:是服务提供方,继承父工程
    • dubbo-interface:存放接口,因为dubbo是根据接口进行服务注册发现的,因此我们要把接口单独拿出来,provider提供方实现该接口并注册服务, consumer要根据接口进行注入

    1.2 引入依赖坐标

    1.2.1 dubbo-parent
    
    
    	4.0.0
    	com.itheima
    	dubbo-spring-boot-demo
    	1.0-SNAPSHOT
    
    	
    		3.2.0-beta.4
    		2.7.8
    		17
    		17
    		UTF-8
    	
    
    	
    		
    			
    			
    				org.springframework.boot
    				spring-boot-dependencies
    				${spring-boot.version}
    				pom
    				import
    			
    
    			
    			
    				org.apache.dubbo
    				dubbo-bom
    				${dubbo.version}
    				pom
    				import
    			
    
    			
    				org.apache.dubbo
    				dubbo-dependencies-zookeeper-curator5
    				${dubbo.version}
    				pom
    			
    		
    	
    
    
    	
    		
    			
    				
    					org.springframework.boot
    					spring-boot-maven-plugin
    					${spring-boot.version}
    				
    			
    		
    	
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    1.2.2 dubbo-consumer
    
    
        4.0.0
        
            com.itheima
            dubbo-spring-boot-demo
            1.0-SNAPSHOT
            ../pom.xml
        
    
        com.itheima
        dubbo-spring-boot-demo-consumer
        1.0-SNAPSHOT
        war
    
        
            
                com.itheima
                dubbo-spring-boot-demo-interface
                0.0.1-SNAPSHOT
            
    
            
            
                org.apache.dubbo
                dubbo-spring-boot-starter
            
            
                org.apache.dubbo
                dubbo-dependencies-zookeeper-curator5
                pom
                
                    
                        slf4j-reload4j
                        org.slf4j
                    
                
            
            
                org.springframework.boot
                spring-boot-starter-web
            
    
    
    
        
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    1.2.3 dubbo-provider
    
    
        4.0.0
        
            com.itheima
            dubbo-spring-boot-demo
            1.0-SNAPSHOT
            ../pom.xml
        
    
        com.itheima
        dubbo-spring-boot-demo-provider
        1.0-SNAPSHOT
        war
    
        
            
                com.itheima
                dubbo-spring-boot-demo-interface
                0.0.1-SNAPSHOT
            
    
            
            
                org.apache.dubbo
                dubbo-spring-boot-starter
            
            
                org.apache.dubbo
                dubbo-dependencies-zookeeper-curator5
                pom
                
                    
                        slf4j-reload4j
                        org.slf4j
                    
                
            
    
            
            
                org.springframework.boot
                spring-boot-starter
            
    
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    1.2.4 dubbo-interface
    
    
    	4.0.0
    	com.itheima
    	dubbo-spring-boot-demo-interface
    	0.0.1-SNAPSHOT
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2. Linux 环境配置

    2.1 安装docker

    参考https://blog.csdn.net/qq_41428418/article/details/133786336

    2.2 安装zookeeper

    参考https://blog.csdn.net/qq_41428418/article/details/133857185

    3. yml配置文件

    3.1 provider提供者yml配置

    server:
      port: 9000
    dubbo:
      application:
        name: dubbo-provider
      protocol:
        name: dubbo
        port: -1
      registry:
        address: zookeeper://${zookeeper.address:192.168.56.10}:2181
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    要在启动类加上@EnableDubbo注解

    3.2 consumer提供者yml配置

    server:
      port: 8000
    dubbo:
      application:
        name: dubbo-consumer
        qos-port: 33333
      protocol:
        name: dubbo
        port: -1
      registry:
        address: zookeeper://${zookeeper.address:192.168.56.10}:2181
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    消费者如果不提供服务,也就是不把接口注册到注册中心时,可以不添加@EnableDubbo注解

    4. 服务测试

    4.1 新增接口

    package com.itheima.service;
    public interface UserService {
        public String sayHello();
    }
    
    • 1
    • 2
    • 3
    • 4

    4.2 接口实现

    在dubbo-provider中实现dubbo-interface中创建的UserService

    package com.itheima.service.impl;
    
    import com.itheima.service.UserService;
    import org.apache.dubbo.config.annotation.DubboService;
    import org.apache.dubbo.config.annotation.Service;
    
    
    //@Service定义bean
    //将这个类提供的方法〈服务)对外发布。将访问的地址ip,端口,路径注册到注册中心中
    @DubboService
    public class UserServiceImpl implements UserService {
        @Override
        public String sayHello() {
            return "hello dubbo!~welcome!";
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4.3 服务引用

    在dubbo-consumer中创建一个controller,并引用UserService。

    package com.itheima.controller;
    
    
    import com.itheima.service.UserService;
    import org.apache.dubbo.config.annotation.DubboReference;
    import org.apache.dubbo.config.annotation.Reference;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RequestMapping("/user")
    public class UserController {
        //1.从zookeeper注册中心获取userService的访问urL
        //2.进行远程调用RPC
        //3. 将结果封装为一个代理对象,给变量赋值
        @DubboReference
        private UserService userService;
        @GetMapping("/sayHello")
        public String sayHello() {
            return userService.sayHello();
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    4.4 服务测试

    4.3.1 我们先在服务器查看一下zookeeper中的信息

    1、执行docker ps查看zookeeper容器状态,复制zookeeper对应的 CONTAINER ID
    在这里插入图片描述

    2、执行docker exec -it ${CONTAINER ID} /bin/bash
    在这里插入图片描述
    3、进入后ls查看目录,执行cd bin进入bin目录
    在这里插入图片描述
    4、执行./zkCli.sh脚本,连接zookeeper客户端
    在这里插入图片描述
    5、执行ls / 查看目录 我们可以看到,现在只有一个zookeeper
    在这里插入图片描述

    4.3.2 启动dubbo-provider和dubbo-consumer
    4.3.3 启动后查看zookeeper内容

    1、服务启动后,再执行ls /查看内容可以看到多了一个dubbo
    在这里插入图片描述

    2、执行ls /dubbo 查看,可以看到我们注册的接口的路径
    在这里插入图片描述

    3、继续查看,可以看还存在consumer和provider,查看consumer和provider,可以看到具体的注册中心,到这里说明我们已经注册完成了
    在这里插入图片描述
    在这里插入图片描述

    4.3.4 浏览器访问测试

    在这里插入图片描述

    官方中文文档

  • 相关阅读:
    如何在Spring Boot应用中使用Nacos实现动态更新数据源
    Square Pair
    关于Mac mini 10G网口的问题
    基于邻接矩阵的深度优先算法和广度优先算法
    业务中如何拓展微前端架构
    曹丕《燕歌行二首》其一赏析
    AIGC Midjourney 机器人绘画案例演示
    信号槽连接失败原因分析
    Android — 使用 Runtime 获取日志并保存至 download 目录
    js/vue/tsx 中获取dom元素的方法集合
  • 原文地址:https://blog.csdn.net/qq_41428418/article/details/133877438