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

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

Spring Cloud LoadBalancer 介绍

这种方案有什么优点呢?

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

负载均衡器的功能演示

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

<modelVersion>4.0.0modelVersion>
<groupId>ltd.newbee.cloudgroupId>
<artifactId>spring-cloud-alibaba-load-balance-demoartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>spring-cloud-alibaba-load-balance-demoname>
<packaging>pompackaging>
<description>Spring Cloud Alibaba Load Balance Demodescription>

<modules>
  <module>nacos-provider-demomodule>
  <module>nacos-provider-demo2module>
  <module>nacos-provider-demo3module>
  <module>nacos-consumer-demomodule>
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的信息SpringCloud项目实例3--通信服务负载均衡_第2张图片
http://localhost:8105/loadBalancerTest

你可能感兴趣的:(后端,Spring,微服务,spring,cloud,负载均衡,java)