SpringBoot 28 服务注册实战

28.1 spring-boot-provider(提供者)


本章完全 参照 dubbo-samples-spring-boot 进行学习而记录。

  1. 还是老规矩,创建一个 springboot 项目(这次可能要创建两个,哈哈 ~ 因为 我们 要测试 远程调用嘛。

在这里插入图片描述

  1. 导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>top.muquanyu</groupId>
    <artifactId>springboot-12-dubbo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- 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.7.1</version>
<!--            排除 这个 slf4j-logj12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>
  1. application 的配置
server.port=8001

# 服务应用名字
dubbo.application.name=spring-boot-provider
# 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 哪些服务需要注册
dubbo.scan.base-packages=top.muquanyu.service
  1. 使用 @EnableDubbo 注解,否则 可能 Dubbo 无法生效。

在这里插入图片描述

  1. 写一个 服务 service 层 然后用 dubbo 的 @Service 去实现暴露 注意哟,不是 Spring 的 Service!!是 dubbo 的。

在这里插入图片描述

package top.muquanyu.service;


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

@Component
@Service // 这个注解 就可以 被 扫描到了,项目一起动,就会被自动注册到 zookeeper
public class TicketServiceImpl implements TicketService{
    @Override
    public String getTicket() {
        return "暴露服务测试";
    }
}

在这里插入图片描述

在这里插入图片描述


28.2 spring-boot-consumer(消费者)

  1. application 配置
server.port=8002

# 服务应用名字
dubbo.application.name=spring-boot-provider
# 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
  1. 写一个 跟暴露服务接口 一毛一样的接口,用来 接收 暴露的那个服务

在这里插入图片描述

  1. 使用 @Reference // 引用的意思 远程引入我们 暴露的接口
package top.muquanyu.service;

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

@Service
public class UserService {

    @Reference // 引用的意思
    // Pom 坐标,可以定义路径相同的 接口名
    TicketService ticketServer;

    public void test(){
        System.out.println(ticketServer.getTicket());
    }


}
  1. 进行 测试

在这里插入图片描述

远程调用成功!RPC 成功!


28.3 小结和细思极恐

我们 整个 RPC 的过程:首先 需要 一个 注册中心!然后 SpringBoot 整合 Dubbo 暴露 service 接口。再写 一个 引用 接口的 程序。只要 我知道 注册中心的 url 地址。我就可以 拿到 里面的 service!

思细级恐:想一想,如果 注册中心 是 搭建在 一台 服务器上!那么 我们 是不是 可以 用 这台服务器 做到 其它 计算机/服务器 的 分布式部署呢?因为 我们 可以通过它去 实现 RPC呀 ~ 答案是:肯定的!而且 这种 注册中心的 服务器 甚至 不需要 太高的性能和配置。毕竟 它 就是 一个 传话的。中间件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值