如何搭建Spring Boot+Dubbo微服务_qq_35529931的博客-CSDN博客

记录一下这周末搭建dubbo的过程。
公司一直使用的是dubbo框架,但是自己却一直停留在了使用的地位上,不知道如何搭建一个dubbo项目。
首先瞄了下dubbo的结构,多分一点可以分为3个模块;一个模块是common,这里面放的内容包括一些公用的DTO,或者dao层的一些。一个模块是provider,服务的提供者,这里面主要提供接口和逻辑层的处理内容。供给这个项目进行调用或者其他项目进行调用。第三个模块是consumer,服务的消费者,主要是处理前端传过来的url,消费provider提供的服务。
zookeeper的安装,是用于dubbo接口的注册。(https://blog.csdn.net/qq_35529931/article/details/83045372)
最开始新建一个父模块,这里使用的是spring boot的创建模式,不进行描述。然后将其中的src删掉。接下来描述下第一部分common的模块创建过程:
第一步:在该项目下创建一个Module,之后选择的方式依旧是spring boot即可,里面的与第一步相同,不描述了。
在这里插入图片描述
由于本次只写个DTO,所以没有配置dao的相关配置。同时,也用不到启动的主函数,也删除了。
在这里插入图片描述
如果在之后的启动项目中,找不到DTO啥的,可以在pom.xml添加一下这段话(坑一):

  <configuration>
                    <classifier>exec</classifier>
                </configuration>

在这里插入图片描述

第二部分:接下来就是开始创建provider模块了:
第一步,与上个模块基本一致。进行命名创建一个spring boot模块;
第二部,添加pom.xml依赖,需要用到dubbo和zookeeper,以及上个common的依赖

<!-- dubbo依赖-->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

        <!-- zookeeper依赖 -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
        <dependency>
            <groupId>com.order</groupId>
            <artifactId>order-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

在这里插入图片描述
第三步,写接口和接口的实现。这里需要注意的是注解@Service使用的是dubbo注解。
在这里插入图片描述

import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
@Component
@Service(version = "1.0.0")

到这里,这个接口就完成了,可以对本项目以及其他项目提供服务了。第四步,同理,我们需要把它的dubbo服务发布出去,需要在.properties中进行配置,

spring.application.name=spring-boot-dubbo-order-provider
spring.dubbo.server=true
spring.dubbo.registry=zookeeper://IP:端口
spring.dubbo.protocol.port=20880

server.port=8081

在这里插入图片描述
需要注意的是这个端口号和消费者的端口号不能相同。
第五步:在启动类里面配置dubbo的启动项配置:

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
@EnableDubboConfiguration

在这里插入图片描述

第三部分:接下来创建的是消费者consumer模块
第一步,创建生产的模式依旧一样,不描述。
第二步,引入pom.xml的依赖,因为是Web服务,所以需要多引入一个容器(或者创建的时候添加Web,springboot会自带tomcat),还要多引入一个provider的依赖。

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
                <!--<exclusion>-->
                <!--<groupId>org.springframework.boot</groupId>-->
                <!--<artifactId>spring-boot-starter-logging</artifactId>-->
                <!--</exclusion>-->
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>

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

        <!-- dubbo依赖-->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

        <!-- zookeeper -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

        <dependency>
            <groupId>com.order</groupId>
            <artifactId>order-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>com.order</groupId>
            <artifactId>order-provider</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

在这里插入图片描述

第四步:在controller层中使用@Reference注解进行调用接口
在这里插入图片描述

import com.alibaba.dubbo.config.annotation.Reference;
@RestController
public class DubboConsumerController {

    @Reference(version = "1.0.0")
    private OrderService orderService;

    @RequestMapping("/")
    public UserInfo index(){
        return  orderService.getUserById(Long.valueOf(1));
    }
}

第五步:在.properties中进行配置zookeeper和端口号

server.port=8080
spring.application.name=spring-boot-consumer-provider
spring.dubbo.registry=zookeeper://IP:端口

在这里插入图片描述
第六步,在启动类里面添加dubbo的启动项配置:

@EnableDubboConfiguration

在这里插入图片描述
启动项目后,在网页进行测试,成功返回了字符串。
在这里插入图片描述
最后,在dubbo-admin进行查看服务提供者和服务消费者,会发现两者都正常。
消息提供者provider:
在这里插入图片描述
服务消费者:consumer

在这里插入图片描述

最后,分享下代码。源码传到了github上;
https://github.com/virtuousOne/dubbo


Original url: Access
Created at: 2020-08-28 10:35:50
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论