Nacos-消费者服务调用生产者服务(负载均衡实现调用多个服务器)

本文详细介绍了如何在Spring Boot项目中使用Nacos实现服务提供者和服务消费者之间的远程调用,涉及多种调用方式,如RestTemplate、LoadBalancerClient、@LoadBalanced和FeignClient,并展示了配置管理和异常处理的实践。

业务描述

先创建两个项目module分别为服务提供者和服务消费者,两个都要注册到NacosServer中(本质上就是一个web服务,端口默认是8848),服务提供者可以为服务消费者提供远程调用服务.

在这里插入图片描述

调用方式

说明:

1.RestTemplate方式:定义URL直接调用 ,多个端口则需定义多个URL,使用自定义算法实现负载均衡(如随机).

2.RestTemplate+LoadBalancerClient方式:使用LoadBalancerClient帮助我们获取nacos服务列表,采用轮询方式实现负载均衡

3.RestTemplate+@LoadBalanced方式:采用@LoadBalanced注解,起一个拦截器的作用,拦截之后底层帮我们获取nacos服务列表.(相比方式2就有点耗时)

4.@EnableFeignClients+@FeignClient方式:@EnableFeignClients注解描述启动类时,用于告诉springboot在启动时,扫描启动类所在包或子包中的类,假如接口上有@FeignClient注解描述,则对这样的接口创建其实现类,在实现类内部帮我们进行远程服务调用.

生产者服务的创建

创建服务提供者工程

创建服务提供者工程(module名为sca-provider),继承parent工程(01-sca),添加相关依赖包,其pom.xml文件内容如下:

<?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">
    <parent>
        <artifactId>01-sca</artifactId>
        <groupId>com.jt</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>sca-provider</artifactId>
    <dependencies>
        <!--web服务-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--服务的注册和发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

</project>

创建配置文件application.yml

创建并修改配置文件application.yml(或者application.properties),实现服务注册,关键代码如下:

server:
  port: 8082
spring:
  application:
    name: sca-provider #服务名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #服务注册和发现(默认是注册到这里)

注意这里需要三个端口,分别为8080,8081,8082.服务名不要使用下划线(“_”),应使用横杠(“-”),这是规则。

配置idea同时启动多个服务

需要先进行如下配置,才能启动多个服务.

 进入编辑配置界面

创建启动类

创建启动类,并定义处理请求的控制层对象和方法,关键代码如下:

@SpringBootApplication
public class ProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
    @Value("${server.port}")
    private String server;
    @RestController
    public class ProviderController{
        @GetMapping(value = "/provider/echo/{msg}")
        public String doEcho(@PathVariable String msg){
            return server+"say:Hello Nacos Discovery"+msg;
        }
    }
}

刷新nacos服务

启动启动类,然后刷先nacos服务,检测是否服务注册成功,如图所示:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值