文章目录

文章说明

一:版本控制

二:共有依赖声明于父项目

三:创建共有API

1:定义公共接口

2:定义Bean

四:创建Provider

1:引入公共API

2:创建实现类

3:定义启动类

4:定义配置文件

5:启动成功之后的现象

五:创建Consumer

 1:引入公共API

2:编写配置文件

3:定义启动类


文章说明

        安装完zookeeper之后,我们需要规范下开发, 我们之前基于 Spring方式展开介绍,好处就是完整了体会了调用关系不至于封装的那么厉害,但是这个跟主流的SpringBoot的方式还是有很大区别的。

        同样是基于SpringBoot开发,前端研究的时候, Springboot的父项目仍然是SpringBoot项目,因为实际的开发过程中SpringBoot的父项目不一定是SpringBoot项目,有可能是任意形式的父项目。

        本次我们构建项目就采用这种标准的形式,创建一个maven工程,删除src。在pom.xml里边设置我们所需要依赖的jar包的版本。在父项目的dependencyManagemeng中配置各种dependency选项,仅仅是对依赖版本进行了锁定,并不是对依赖进行了引入。如何证明这一点,只需要打开右侧maven的悬浮窗口刷新一下,看看有没有依赖引入进来即可。

一:版本控制

<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <dubbo.version>3.1.10</dubbo.version>
        <spring-boot.version>2.7.12</spring-boot.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-bom</artifactId>
                <version>${dubbo.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>

我们到这里仅仅是完成了依赖版本的锁定。

二:共有依赖声明于父项目

        同时,我们需要严格注意官方为我们提供的zookeeper和Dubbo版本依赖配对关系。

Dubbo动态实现多版本_zookeeper

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
        </dependency>

        <!--zk注册中心 需要的依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
            <version>${dubbo.version}</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <artifactId>zookeeper</artifactId>
                    <groupId>org.apache.zookeeper</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.8.1</version>
        </dependency>
    </dependencies>

        这个时候,我们可以看一下maven的悬浮窗口里边,真正的有了maven依赖这就代表了dependency才是真正的依赖导入窗口。

三:创建共有API

1:定义公共接口

        这个前边都玩过了,这里就不做详细介绍了,有兴趣翻一番前面文章!

2:定义Bean

        这个前边都玩过了,这里就不做详细介绍了,有兴趣翻一番前面文章!

四:创建Provider

1:引入公共API

<dependencies>
        <dependency>
            <groupId>com.suns</groupId>
            <artifactId>dubbo-protocol-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

2:创建实现类

@DubboService
public class UserServiceImpl implements UserService {
    @Override
    public boolean login(String name, String password) {
        System.out.println("UserServiceImpl.login name " + name + " password is " + password);
        return false;
    }
}

3:定义启动类

@SpringBootApplication
@EnableDubbo
public class ProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
}

4:定义配置文件

spring:
  application:
    name: DUBBO-PROTOCOL-PROVIDER

dubbo:
  protocol:
    name: dubbo
    port: -1
  registry:
    address: zookeeper://127.0.0.1:2181

        值得一提的是这里的注册中心address后边的zookeeper这个协议就代表了我们要使用zookeeper作为我们的注册中心。

        经过以上这样的处理之后,就可以让Dubbo扫描我们的impl并且发布成为一个RPC了。

5:启动成功之后的现象

        启动提供者之前,必须要先启动我们的注册中心。

        启动成功我们的Provider之后,对应的export和Register日志看到之后,我们可以打开我们的PrettyZoo连接上我们的zookeeper可以看见根节点下多了一个dubbo一个Services节点。这就代表注册起作用了。后续dubbo和Services节点会在后续进行介绍。

五:创建Consumer

 1:引入公共API

<dependencies>
        <dependency>
            <groupId>com.suns</groupId>
            <artifactId>dubbo-protocol-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

2:编写配置文件

spring:
  application:
    name: DUBBO-PROTOCOL-CONSUMER
dubbo:
  registry:
    address: zookeeper://127.0.0.1:2181

  application:
    qos-enable: false

3:定义启动类

@DubboReference
    private UserService userService;

    @Test
    void test1() {
        boolean ret = userService.login("xiaohei", "123456");
        System.out.println("ret = " + ret);
    }

        至此,我们对应Dubbo协议的使用,如何引入注册中心,如何基于SpringBoot标准化开发就介绍完了。