Ribbon+Nacos+RestTemplate使用记录

今天使用Ribbon+Nacos+RestTemplate测试负载均衡 然后依然是踩了好多坑,因为是小白吧,记录一下。

误区

最开始,我以为服务注册中心那边是区分服务提供者和服务消费者的,比如说消费者叫订阅,提供者叫注册,后来才知道服务中心并不区分什么消费者和提供者,比如服务1和服务2,都是以相同的方式注册,他们甚至可以互为消费者。

正文

项目结构

下图是我的代码结构,有订单和商品两个服务,其中,我用订单做消费者,商品做服务提供者:

注册到注册中心

在消费者和提供者的pom文件中,都要引入Nacos依赖:

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.0.RELEASE</version>
        </dependency>

然后配置文件中,都要配置注册中心地址:

cloud:
  nacos:
    discovery:
      server-addr: localhost:8848
消费者配置负载均衡

在order中引入依赖:

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

声明RestTemplate

controller中调用商品服务: 商品服务先用8081端口启动,然后再用8086端口启动,多次请求时,就会实现负载均衡

小技巧:

idea中设置服务启动多个

低能坑

我开始把商品的controller放在和启动类不同的包里,这个之前的文章里说过,就会报404,然后我放在了启动类的包下,可是订单的又报错。后来发现,订单是从商品复制过去的代码,订单的包名和商品的一样,导致冲突,就出现移动订单的包,商品的包就变位置的诡异现象,多蠢!

经验分享 程序员 微信小程序 职场和发展