목차
1. 로드 밸런싱 " > 1. 로드 밸런싱
2. 리본은 클라이언트 로드 밸런싱을 구현합니다" >2. 리본은 클라이언트 로드 밸런싱을 구현합니다
Java java지도 시간 Spring Cloud 클라이언트 로드 밸런싱 리본

Spring Cloud 클라이언트 로드 밸런싱 리본

Jun 26, 2017 am 09:31 AM
cloud spring 고객

1. 로드 밸런싱

로드 밸런싱 : 기존 네트워크 구조를 기반으로 구축되어 네트워크 장치 및 서버의 대역폭을 확장하고 처리량을 늘리며 네트워크 데이터를 향상시키는 저렴하고 효과적이며 투명한 방법을 제공합니다. 처리 기능을 제공하고 네트워크 유연성과 가용성을 향상시킵니다. 이는 웹 서버, FTP 서버, 엔터프라이즈 핵심 애플리케이션 서버 및 기타 미션 크리티컬 서버 등과 같은 여러 운영 단위에 실행을 할당하여 작업 작업을 함께 완료하는 것을 의미합니다.

1. 서버 측 로드 밸런싱: 클라이언트가 로드 밸런싱 서버에 요청하고, 로드 밸런싱 서버는 자체 알고리즘에 따라 실제로 비즈니스를 제공하는 서버에 요청을 전달합니다. 로드 밸런싱 서버 및 로드 밸런싱 서버는 최종적으로 클라이언트에 데이터를 반환합니다. (nginx)

2. 클라이언트 측 로드 밸런싱: 클라이언트 기반 로드 밸런싱은 간단히 말해서 클라이언트 프로그램에서 스케줄링 알고리즘을 설정하고, 서버에 요청할 때 먼저 스케줄링 알고리즘 계산을 수행하는 것입니다. 어느 서버에 요청을 보낸 다음 해당 서버에 요청을 보낼지 결정합니다.

클라이언트 로드 밸런싱 기반 특성:

  • 클라이언트 내부 프로그램에 의해 구현되며 로드 밸런서 소프트웨어 및 하드웨어에 대한 추가 투자가 필요하지 않습니다.

  • 비즈니스 서버를 사용할 수 없는 문제는 프로그램 내에서 해결해야 합니다. 서버 장애는 애플리케이션에 투명성이 거의 없습니다.

  • 비즈니스 서버 압박 문제는 프로그램 내에서 해결해야 합니다.

2. 리본은 클라이언트 로드 밸런싱을 구현합니다

스프링 부트를 사용하여 테스트합니다.

pom 파일:

<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 ">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jalja.org</groupId>
  <artifactId>spring-consumer-server-ribbon</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
   <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Camden.SR4</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>
로그인 후 복사

application.yml

stores:
  ribbon:
    listOfServers: www.baidu.com,www.jalja.org,www.163.com
로그인 후 복사

Ribbon의 로드 밸런싱 전략

1 RoundRobinRule(폴링 모드) 공개 클래스 RoundRobinRule은 AbstractLoadBalancerRule을 확장합니다. 서버를 선택하기 위한 roundRobin 방식 폴링 인덱스를 폴링하고 인덱스의 해당 위치에 있는 서버를 선택하는 전략이기도 합니다. 2. Random Rule(무작위 전략) public class RandomRule은 AbstractLoadBalancerRule을 확장합니다. 서버를 무작위로 선택합니다.

인덱스에서 무작위로 인덱스에 해당하는 서버를 선택합니다
.




SpringCloudRibbonApplication.java에

SpringCloudRibbonApplication.java
로그인 후 복사

   ="static"= loadBalancer.choose("stores"= URI.create(String.format("http://%s:%s" "static"
로그인 후 복사
추가 RoundRobinRule

동시 접속이 가장 적은 서버를 선택하세요. 요청 서버를 하나씩 검사하면 무시하고 ActiveRequestsCount구성 파일 application.yml에 com.netflix.loadbalancer.BestAvailableRule을 NFLoadBalancerRuleClassName 추가하세요.

SpringCloudRibbonApplication.java에

NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
로그인 후 복사

를 추가합니다. 6번 실행한 결과:

stores:
  ribbon:
    listOfServers: www.baidu.com,www.jalja.org,www.163.org
    #随机
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
로그인 후 복사

4. AvailabilityFilteringRule(서버 상태) 공개 클래스 AvailabilityFilteringRule은 PredicateBasedRule을 확장합니다. 지속적인 연결 실패로 인해 회로 트립으로 표시된 백엔드 서버를 필터링하고 동시성이 높은 백엔드 서버를 필터링합니다(활성 연결이 구성된 임계값을 초과함). AvailabilityPredicate를 사용하여 서버를 필터링하는 로직을 포함합니다. 실제로는 응답 시간이 길수록 가중치가 부여되는 상태에 기록된 각 서버의 실행 상태를 확인하는 것입니다. 무게가 나가고 선택될 가능성이 낮아집니다. 백그라운드 스레드는 주기적으로 상태로부터 평가 응답 시간을 읽고 각 서버에 대한 가중치를 계산합니다. 가중치 계산도 상대적으로 간단합니다. 각 서버의 평균 응답 시간에서 해당 응답 시간을 뺀 값이 서버의 가중치입니다. 작업이 막 시작되어 상태가 형성되지 않은 경우 루틴 전략을 사용하여 서버를 선택합니다.

6. RetryRule(정책 + 재시도에 따름)

public 클래스 RetryRule은 AbstractLoadBalancerRule을 확장하여 선택한 로드 밸런싱 정책에 대한 온머신 재시도 메커니즘을 제공합니다. 구성 기간 내에 서버 선택이 실패하면 항상 subRule을 사용하여 사용 가능한 서버를 선택하려고 시도합니다

7. ZoneAvoidanceRule(영역 상태 + 서비스 상태)

공개 클래스 ZoneAvoidanceRule은 PredicateBasedRule이 있는 영역에 대한 복합 판단을 확장합니다. 서버를 찾을 때 성능과 서버 가용성을 사용합니다. ZoneAvoidancePredicate 및 AvailabilityPredicate는 서버 선택 여부를 결정하는 데 사용됩니다. 전자는 영역의 실행 성능이 사용 가능한지 여부를 결정하고 사용 불가능한 영역(모든 서버)을 제거합니다. 과도한 연결을 필터링하는 데 사용됩니다.


4, 5, 6, 7은 위와 같은 방식으로 사용되며 여기서는 설명하지 않겠습니다


위 내용은 Spring Cloud 클라이언트 로드 밸런싱 리본의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

VMware Horizon Client를 열 수 없습니다. [수정] VMware Horizon Client를 열 수 없습니다. [수정] Feb 19, 2024 pm 11:21 PM

VMware Horizon Client를 사용하면 가상 데스크톱에 편리하게 액세스할 수 있습니다. 그러나 때로는 가상 데스크톱 인프라에 시작 문제가 발생할 수 있습니다. 이 문서에서는 VMware Horizon 클라이언트가 성공적으로 시작되지 않을 때 취할 수 있는 해결 방법에 대해 설명합니다. VMware Horizon 클라이언트가 열리지 않는 이유는 무엇입니까? VDI 구성 시 VMWareHorizon 클라이언트가 열려 있지 않으면 오류가 발생할 수 있습니다. IT 관리자가 올바른 URL과 자격 증명을 제공했는지 확인하세요. 모든 것이 정상이면 이 가이드에 언급된 해결 방법에 따라 문제를 해결하십시오. Windows 컴퓨터에서 VMW가 열리지 않는 경우 VMWareHorizon 클라이언트가 열리지 않는 문제 수정

연결하는 동안 VMware Horizon 클라이언트가 정지되거나 정지됨 [수정] 연결하는 동안 VMware Horizon 클라이언트가 정지되거나 정지됨 [수정] Mar 03, 2024 am 09:37 AM

VMWareHorizon 클라이언트를 사용하여 VDI에 연결할 때 인증 중에 애플리케이션이 정지되거나 연결이 차단되는 상황이 발생할 수 있습니다. 이 문서에서는 이 문제를 살펴보고 이 상황을 해결하는 방법을 제공합니다. VMWareHorizon 클라이언트에 정지 또는 연결 문제가 발생하는 경우 문제를 해결하기 위해 수행할 수 있는 몇 가지 작업이 있습니다. 연결하는 동안 VMWareHorizon 클라이언트가 멈추거나 멈추는 문제 해결 VMWareHorizon 클라이언트가 Windows 11/10에서 멈추거나 연결에 실패하는 경우 아래 언급된 해결 방법을 수행하십시오. 네트워크 연결 확인 Horizon 클라이언트 다시 시작 Horizon 서버 상태 확인 클라이언트 캐시 지우기 Ho 수정

Spring Boot가 OpenAI를 만났을 때 새로운 프로그래밍 패러다임 Spring Boot가 OpenAI를 만났을 때 새로운 프로그래밍 패러다임 Feb 01, 2024 pm 09:18 PM

2023년에는 AI 기술이 화두가 되면서 다양한 산업, 특히 프로그래밍 분야에 큰 영향을 미치고 있다. 사람들은 AI 기술의 중요성을 점점 더 인식하고 있으며 Spring 커뮤니티도 예외는 아닙니다. GenAI(일반 인공 지능) 기술이 지속적으로 발전함에 따라 AI 기능을 갖춘 애플리케이션 생성을 단순화하는 것이 중요하고 시급해졌습니다. 이러한 배경에서 AI 기능 애플리케이션 개발 프로세스를 단순화하고 간단하고 직관적이며 불필요한 복잡성을 피하는 것을 목표로 하는 "SpringAI"가 등장했습니다. 'SpringAI'를 통해 개발자는 AI 기능이 포함된 애플리케이션을 더욱 쉽게 구축할 수 있어 사용 및 운영이 더욱 쉬워진다.

Spring Boot 및 Spring AI를 사용하여 생성 인공 지능 애플리케이션 구축 Spring Boot 및 Spring AI를 사용하여 생성 인공 지능 애플리케이션 구축 Apr 28, 2024 am 11:46 AM

업계 리더인 Spring+AI는 강력하고 유연한 API와 고급 기능을 통해 다양한 산업에 선도적인 솔루션을 제공합니다. 이 주제에서는 다양한 분야의 Spring+AI 적용 사례를 살펴보겠습니다. 각 사례에서는 Spring+AI가 어떻게 특정 요구 사항을 충족하고 목표를 달성하며 이러한 LESSONSLEARNED를 더 넓은 범위의 애플리케이션으로 확장하는지 보여줍니다. 이 주제가 여러분이 Spring+AI의 무한한 가능성을 더 깊이 이해하고 활용하는 데 영감을 줄 수 있기를 바랍니다. Spring 프레임워크는 소프트웨어 개발 분야에서 20년 이상의 역사를 가지고 있으며, Spring Boot 1.0 버전이 출시된 지 10년이 되었습니다. 이제 봄이 왔다는 것에 대해 누구도 이의를 제기할 수 없습니다.

Spring 프로그래밍 방식 트랜잭션의 구현 방법은 무엇입니까? Spring 프로그래밍 방식 트랜잭션의 구현 방법은 무엇입니까? Jan 08, 2024 am 10:23 AM

Spring 프로그래밍 방식 트랜잭션을 구현하는 방법: 1. TransactionCallback 및 TransactionCallbackWithoutResult를 사용합니다. 3. Transactional 주석을 사용합니다. 4. @Transactional과 함께 TransactionTemplate을 사용합니다.

HAProxy에서 SSL 패스스루를 구현하는 방법 HAProxy에서 SSL 패스스루를 구현하는 방법 Mar 20, 2024 am 09:30 AM

웹 서버 로드 밸런싱을 유지하는 것은 가동 중지 시간을 방지하는 주요 방법 중 하나입니다. 로드 밸런서를 사용하는 것은 안정적인 접근 방식이며 HAProxy는 높은 평가를 받고 있습니다. HAProxy를 사용하면 로드 밸런싱 방식을 정확하게 구성하고 SSL Passthrough를 지원하여 클라이언트와 서버 간의 통신 보안을 보장할 수 있습니다. 먼저 HAProxy에서 SSL 패스스루 구현의 중요성을 살펴보고, 이 기능을 구현하는 데 필요한 단계와 더 나은 이해를 위한 예에 대해 자세히 설명합니다. SSL 패스스루란 무엇입니까? 왜 중요 함? 로드 밸런서로서 HAProxy는 구성된 서버 전체에서 웹 서버로 흐르는 로드를 수용하고 분산합니다. 부하 분산은 클라이언트 장치를 대상으로 하며

PHP MQTT 클라이언트 개발 가이드 PHP MQTT 클라이언트 개발 가이드 Mar 27, 2024 am 09:21 AM

MQTT(MessageQueuingTelemetryTransport)는 IoT 장치 간 통신에 일반적으로 사용되는 경량 메시지 전송 프로토콜입니다. PHP는 MQTT 클라이언트를 개발하는 데 사용할 수 있는 일반적으로 사용되는 서버측 프로그래밍 언어입니다. 이 기사에서는 PHP를 사용하여 MQTT 클라이언트를 개발하는 방법을 소개하고 다음 내용을 포함합니다. MQTT 프로토콜의 기본 개념 PHPMQTT 클라이언트 라이브러리의 선택 및 사용 예: PHPMQTT 클라이언트를 사용하여 게시 및

Baidu Netdisk 웹페이지에서 클라이언트를 시작할 수 없는 문제를 해결하는 방법은 무엇입니까? Baidu Netdisk 웹페이지에서 클라이언트를 시작할 수 없는 문제를 해결하는 방법은 무엇입니까? Mar 13, 2024 pm 05:00 PM

많은 친구들이 파일을 다운로드할 때 먼저 웹페이지를 탐색한 다음 클라이언트로 전송하여 다운로드합니다. 그러나 때때로 사용자는 Baidu Netdisk 웹 페이지에서 클라이언트를 시작할 수 없는 문제에 직면할 수 있습니다. 이 문제에 대해 편집자는 Baidu Netdisk 웹페이지에서 클라이언트를 시작할 수 없는 문제를 해결하기 위해 솔루션을 준비했습니다. 해결 방법 1. Baidu Netdisk가 최신 버전이 아닐 수 있습니다. Baidu Netdisk 클라이언트를 수동으로 열고 오른쪽 상단에 있는 설정 버튼을 클릭한 다음 버전 업그레이드를 클릭하세요. 업데이트가 없으면 다음 메시지가 나타납니다. 업데이트가 있으면 메시지에 따라 업데이트하세요. 2. Baidu Cloud Disk의 탐지 서비스 프로그램은 비활성화될 수 있습니다. 당사가 수동으로 또는 보안 소프트웨어를 사용하여 Baidu Cloud Disk의 탐지 서비스 프로그램을 자동으로 비활성화할 수 있습니다. 그것을 확인하시기 바랍니다

See all articles