0
点赞
收藏
分享

微信扫一扫

SpringCloud项目实例3--通信服务负载均衡

我阿霆哥 2023-05-12 阅读 76

只是在pom.xml文件中添加了spring-cloud-starter-loadbalancer依赖并且在RestTemplate类中添加了一个@LoadBalance的注解。这就是另外一种负载均衡的实现方案

Spring Cloud LoadBalancer 介绍

这种方案有什么优点呢?

  1. 减少整个系统的复杂度,不需要额外部署负载均衡软件
  2. 可以减少不必要的网络开销,因为请求不需要额外经过Nginx等负载均衡软件的一层转发。可用的目标实例信息都存储在本实例的serviceInfoMap变量中,选择其中一个直接发起请求即可。
    在这里插入图片描述

负载均衡器的功能演示

spring-cloud-alibaba-load-balance-demo,root节点的pom.xml文件内容也修改掉
复制nacos-provider-demo,分别命名为nacos-provider-demo2和nacos-provider-demo3
root节点中pom.xml的文件内容最终如下所示:

<modelVersion>4.0.0</modelVersion>
<groupId>ltd.newbee.cloud</groupId>
<artifactId>spring-cloud-alibaba-load-balance-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-cloud-alibaba-load-balance-demo</name>
<packaging>pom</packaging>
<description>Spring Cloud Alibaba Load Balance Demo</description>

<modules>
  <module>nacos-provider-demo</module>
  <module>nacos-provider-demo2</module>
  <module>nacos-provider-demo3</module>
  <module>nacos-consumer-demo</module>
</modules>

在这里插入图片描述
为了与其它章节做一个区分,把各个Module中application.properties配置文件中的启动端口号也进行了一些简单的修改。nacos-consumer-demo中的REST测试类也做了修改,代码如下:

package ltd.newbee.cloud.api;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@RestController
public class LoadBalancerTestController {

    @Resource
    private RestTemplate restTemplate;

    private final String SERVICE_URL = "http://newbee-cloud-goods-service";

    // 测试loadbalancer负载均衡
    @GetMapping("/loadBalancerTest")
    public String loadBalancerTest() {
        return restTemplate.getForObject(SERVICE_URL + "/goodsServiceTest", String.class);
    }
}

接下来,需要启动Nacos Server,然后依次启动这4个项目。如果未能成功启动,开发者需要查看控制台中的日志是否报错,并及时确认问题和修复。启动成功后进入Nacos控制台,点击“服务管理”中的服务列表,可以看到列表中已经存在三条newbee-cloud-goods-service的服务信息和一条newbee-cloud-goods-service-consumer的信息在这里插入图片描述
http://localhost:8105/loadBalancerTest

举报

相关推荐

0 条评论