Construya el balanceo de carga de los microservicios springcloud (3)

Agregue equilibrio de carga al controlador del proyecto de microservicio springcloud-account de la persona que llama:

 SpringcloudAccountApplication: agregue @LoadBalanced en RestTemplate 

package com.org.springcloudaccount;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.bus.event.RefreshListener;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableEurekaClient
//@EnableDiscoveryClient
//@EnableFeignClients
//@EnableHystrix
public class SpringcloudAccountApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudAccountApplication.class, args);
    }
    @Bean
    @LoadBalanced        // 开启负载均衡
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

}
package com.org.springcloudaccount;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class MyController {
    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/a2b")
    public String memTest() {
        String str = restTemplate.getForObject("http://bill-server/billTest", String.class);
        return str;
    }
}

Cree el proyecto springboot springcloud-bill de la misma manera que eureka y regístrelo en eureka

application.yaml

eureka:
  client:
    serviceUrl:
#      eureka的注册中心地址
      defaultZone: http://localhost:8888/eureka/
server:
#  此项目端口号
  port: 8890
spring:
  application:
#    注册进eureka的名字
    name: bill-server

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.org</groupId>
    <artifactId>springcloud-bill</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springcloud-bill</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR6</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 

MyController: 

package com.org.springcloudbill;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {
    @RequestMapping("billTest")
    public String orderTest(){
        String instance = System.getProperty("instance");
        return "this is bill"+System.currentTimeMillis()+"--" +instance;
    }
}

 SpringcloudBillApplication:

@SpringBootApplication
@EnableEurekaClient
public class SpringcloudBillApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringcloudBillApplication.class, args);
    }

}

 

Se agregó un parámetro de inicio:

-Dinstance=11 -Dserver.port=8891

 Se agregó otro parámetro de inicio:

-Dinstance=22 -Dserver.port=8892

Al mismo tiempo, inicie dos microservicios, springcloudbill-11 y springcloudbill22, y 4 microservicios, springcloudaccount y springcloudeureka.

Visita: http: // localhost: 8889 / a2b

El resultado es que a veces llama al 11 ya veces al 22, lo que demuestra que el equilibrio de carga es exitoso.

¡Se completa un simple equilibrio de carga!

Supongo que te gusta

Origin blog.csdn.net/x18094/article/details/114783030
Recomendado
Clasificación