Springboot整合Dubbo、Zookeeper

本文详细介绍了如何使用Dubbo框架实现微服务的提供与消费,包括配置注册中心、服务发现及远程调用的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 提供者(provider)提供服务
    1. 导入依赖
    2. 配置注册中心地址,以及服务发现名、要扫描的包
    3. 在想要被注册的服务上加一个@Service注解(该注解是dubbo下的,不是spring的)。
  2. 消费者(consumer)消费服务
    1. 导入依赖
    2. 配置注册中心地址、服务名
    3. 远程注入服务

具体实现:

项目分为两个moudle,一个消费者,一个提供者
在这里插入图片描述

提供者端
  1. 导入依赖
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

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

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.3</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

2.配置注册中心、服务名和扫描的包

server.port=8001

#服务应用名字
dubbo.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#哪些服务要被注册
dubbo.scan.base-packages=com.example.provider.service

  1. 给想要被注册的服务加注解
package com.example.provider.service;

import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

/**
 * @Author Roy Yang
 * @Date 2020/3/27 21:37
 * @Version 1.0
 */
//zookeeper:服务发现与注册

@Service    //可以被扫描到,一启动就自动注册到注册中心
@Component  //最好不要用@Service
public class TicketServiceImpl implements TicketService {
    public String getTicket() {
        return "Roy Yang";
    }
}

  1. 打开zookeeper
    在这里插入图片描述
  2. 再开启提供者端,去dubbo-admin下确认服务是否被注册
  3. 通过java -jar 命令打开 dubbo-admin-0.0.1-SNAPSHOT.jar包,访问localhost:7001,默认登陆用户名和密码均为root。

在这里插入图片描述
发现提供的服务已被注册

消费者端
  1. 导入依赖,同上
  2. 配置注册中心地址、服务名
server.port=8002

#服务应用名字
dubbo.application.name=consumer-server

#注册中心地址(去此处取数据)
dubbo.registry.address=zookeeper://127.0.0.1:2181

  1. 编写一个类,从zookeeper中拿到想要的服务(TicketService)
    注:此处是通过将provider项目中的TicketService接口原封不动的放到consumer项目中
package com.example.consumer.service;

import com.example.provider.service.TicketService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

/**
 * @Author Roy Yang
 * @Date 2020/3/28 8:21
 * @Version 1.0
 */

@Service        //这里是spring的@Service,目的是取到服务将其注入到spring容器中方便后续使用
public class UserService {

    //想要provider的提供的服务,要去注册中心拿
    //消费者处只给了一个接口,具体实现还在提供者处
    @Reference
    TicketService ticketService;

    public void catchTicket(){
        String ticket = ticketService.getTicket();
        System.out.println("在注册中心拿到的ticket为:"+ticket);
    }
}

  1. 编写测试,看是否拿到服务
 @Test
    void contextLoads() {
        userService.catchTicket();
    }
  1. 控制台输出结果为:

在这里插入图片描述
也可以开启服务端,看dubbo-admin中消费端是否存在

在这里插入图片描述
说明消费端也被检测到

希望对您有帮助,谢谢!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值