Spring boot2X 부하 균형 과 역방향 에이전트 실현 과정 분석

이 글 은 주로 Spring boot2X 부하 균형 과 역방향 대리 실현 과정 에 대한 분석 을 소개 하 였 으 며,예시 코드 를 통 해 매우 상세 하 게 소개 되 어 있 으 며,여러분 의 학습 이나 업무 에 대해 어느 정도 참고 학습 가치 가 있 으 므 로 필요 한 분 들 은 참고 하 시기 바 랍 니 다.
zuul 은 넷 플 릭 스 가 오픈 한 API Gateway 서버 입 니 다.
장치 나 사이트 에서 오 는 모든 요청 은 Zuul 을 거 쳐 백 엔 드 에 도착 하 는 넷 플 릭 스 애플 리 케 이 션 입 니 다.
경계 적 인 응용 프로그램 으로서 Zuul 은 동적 경로,모니터링,탄성 부하 와 안전 기능 을 제공 합 니 다.
역방향 대리 실현

1.서비스 등록 발견 센터 컨설팅
시동 을 걸다

consul agent -dev
2.서버
provider 와 provider 1
spring boot 버 전 2.2.1.RELEASE
(1)의존 도 추가

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-consul-discovery</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>
(2)설정

server.port=8010

spring.application.name=service-provider
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.health-check-path=/actuator/health
spring.cloud.consul.discovery.service-name=${spring.application.name}
spring.cloud.consul.discovery.heartbeat.enabled=true

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
(3)테스트 방법

package com.xyz.provider.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class demoController {
  @RequestMapping("/hello")
  public String Hello(){
    return "hello,provider";
  }
}
(4)시작 클래스

package com.xyz.provider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient
@SpringBootApplication
public class ProviderApplication {
  public static void main(String[] args) {
    SpringApplication.run(ProviderApplication.class, args);
  }
}
provide 1 의
server.port=8011
테스트 방법

package com.xyz.provider1.controller;

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

@RestController
public class demoController {
  @RequestMapping("/hello")
  public String Hello(){
    return "hello,another provider";
  }

}
3.게 이 트 웨 이
  • zuul
  • Spring boot version 2.1.8.RELEASE위 에 사 용 된 Spring boot 버 전 은 2.2.1.RELEASE 입 니 다.
    그러나 시작 할 때 오류 가 발생 하여 이 버 전 으로 바 뀌 었 다.
    (1)의존 도 추가
    
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
    
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-consul-discovery</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>
    (2)설정 추가
    
    server.port=8090
    
    spring.application.name=service-zuul
    spring.cloud.consul.host=localhost
    spring.cloud.consul.port=8500
    spring.cloud.consul.discovery.service-name=${spring.application.name}
    spring.cloud.consul.discovery.instance-id=${spring.application.name}:${server.port}
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    
    zuul.routes.api.path=/api/**
    zuul.routes.api.serviceId=service-provider
    (3)시작 클래스
    
    package com.xyz.zuul;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
    
    @EnableZuulProxy
    @SpringBootApplication
    public class ZuulApplication {
    
      public static void main(String[] args) {
        SpringApplication.run(ZuulApplication.class, args);
      }
    }
    시작 컨설팅
    provider,provider 1 시작
    시작 zuul
    방문 하 다.http://127.0.0.1:8090/api/hello
    결과 출력:
    hello,provider 와 hello,another provider
    결과 가 교체 되 어 나타 난 것 은 부하 이퀄 라이저 가 폴 링 방식 을 채택 한 것 이다.
    예시  https://gitee.com/babybeibeili/zuul_consul.git
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기