springboot启动客户端和服务端服务,RestFull接口请求验证

先贴上我的目录结构,一个客户端+两个服务端实例。

在这里插入图片描述

依赖

<properties>
        <java.version>8</java.version>
        <dubbo.version>2.7.8</dubbo.version>
        <nacos.version>1.3.2</nacos.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</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</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>${nacos.version}</version>
        </dependency>
    </dependencies>

demo-consumer

demo-consumer作为消费者通过Dubbo进行RPC远程调用providers实例,这里我写了一个get请求,遍历调用两个实例方法,查看调用过程。

spring:
  application:
    name: demo-consumer
server:
  port: 8001

demo-provider1 + demo-provider2

提供service服务方法,结合dubbo提供给consumer

spring:
  application:
    name: demo-provider2
server:
  port: 8003

dubbo进行RPC远程调用

服务端

在nacos注册服务

dubbo:
  registry:
    address: nacos://localhost:18848,localhost:18858,localhost:18868
  scan:
    base-packages: com.*.impl
  consumer:
    retries: 0
  protocol:
    name: dubbo
    port: -1
  provider:
    payload: 838860800

此处用的@DubboService注解
在这里插入图片描述

客户端

在nacos上获取服务

dubbo:
  registry:
    address: nacos://localhost:8004
  consumer:
    check: false # true必须存在服务 false注册中心中无服务也可以启动,在调用时检查
    retries: 0

通过@DubboReference注解注入服务接口,该接口文件需要写一份
在这里插入图片描述

nacos服务注册中心

单例模式

1、设置单例模式
方式一、修改/nacos/bin/startup.cmd, 设置模式为standalone,即单例模式,双击startup.cmd文件启动
在这里插入图片描述

方式二、不修改/nacos/bin/startup.cmd,启动命令使用 startup.cmd -m standalone
2、修改/nacos/conf/application.properties文件中的server.port端口号,也可以不改 默认8848
3、启动nacos,浏览器访问localhost:8848/nacos,进入nacos控制台
4、启动springboot程序,前面截图都是集群模式配置,单例模式需要修改springboot配置文件中的dubbo.registry.address 改为 nacos://localhost:8848, 这里我启动了demo-consumer、demo-provider1、demo-provider1,查看nacos控制台providers有两个实例,consumer一个客户端
在这里插入图片描述
5、springboot的RestFull接口查看调用过程, demo-consumer中写一个get请求接口,浏览器输入 http://localhost:8001/test/testHello/曾经被照亮,欣然变成光 。 查看两个实例的访问打印结果
在这里插入图片描述
在这里插入图片描述

集群模式

1、复制三份nacos,作为三个节点。 注: 集群要用单数不用双数 -> 自行查看raft协议一致性算法
在这里插入图片描述

2、修改/nacos/bin/startup.cmd,设置为集群模式cluster
3、这里需要用到数据库,新建一个数据库,执行/nacos/conf/mysql-schema.sql
4、修改/nacos/conf/application.properties文件中的server.port端口号分别为18848、18858、18868 (这里需要注意端口号不要连续,有可能会被其他节点占用启动不了),注: 有兴趣的可以看下18848、17848、19848多出的两个端口代表什么意思。
5、修改/nacos/conf/application.properties文件,增加mysql配置

 spring.datasource.platform=mysql
 db.num=1
 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_cluster?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
 db.user.0=root
 db.password.0=root

6、修改/nacos/conf/cluster.conf文件,目录下没有的话复制一份cluster.conf.example去掉.example后缀,此处的本机IP可查看ipconfig,注意这个位置一定不要写localhost或127.0.0.1,否则注册服务的时候会出现“receive invalid redirect request from peer 127.0.0.1”问题

本机IP:18848
本机IP:18858
本机IP:18868

7、以上配置每个节点都要修改
8、startup.cmd启动三个节点
9、浏览器访问http://localhost:18848/nacos、http://localhost:18858/nacos、http://localhost:18868/nacos
10、启动springboot程序,使用开始截图的集群模式配置,修改springboot配置文件中的dubbo.registry.address 改为 nacos://localhost:18848,localhost:18858,localhost:18868, 分别启动demo-consumer、demo-provider1、demo-provider1,查看nacos控制台
11、细心的话,springboot配置dubbo.registry.address只用一个节点,启动后nacos控制台每个节点服务列表都会同步

集群模式 + Nginx反向代理

1、修改/nginx/conf/nginx.conf文件

upstream nacos_cluster { 
		server localhost:18848;
		server localhost:18858;
		server localhost:18868;
}
    server {
        listen       8004;
        server_name  localhost;
		location /nacos {
			 proxy_pass http://nacos_cluster/nacos;
			 proxy_set_header Host $host;
			 proxy_set_header X-Real-IP $remote_addr;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

2、修改springboot配置文件中的dubbo.registry.address 改为 nacos://localhost:8004
3、启动nacos三个节点、nginx、springboot程序
4、浏览器访问 http://localhost:8004/nacos/ 会看到nacos的控制台,访问 http://localhost:8001/test/testHello/曾经被照亮,欣然变成光 看调用过程

源码获取: https://pan.baidu.com/s/1kR6g-rR7nm8QrEgCTzsOrg 提取码: YG6D

在服务提供者的启动类上加上@EnableDubbo注解

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐