이 기사는 Huawei Cloud 커뮤니티 " Java Chassis 3 Technology Decryption: Interface Dimension Load Balancing "(작성자: liubao68) 에서 공유되었습니다 .
Java Chassis 3 Technology Decrypted: Load Balancing Selector 에서는 성능 해결을 위해 Java Chassis 3 로드 밸런싱에서 제공하는 알고리즘을 복호화합니다. 이번에 복호화한 기술은 실제 고객 사례에서 나온 것입니다.
고객의 마이크로서비스 시스템에는 서로 다른 로직과 특수 액세스 모드를 가진 많은 인터페이스가 있으며 일부 인스턴스에는 스레드 풀 대기열이 심각한 반면 다른 인스턴스에는 로드가 낮은 로드 불균형 현상이 종종 있습니다. 예: 마이크로서비스 A가 마이크로서비스 B에 액세스합니다. 마이크로서비스 B에는 B1과 B2라는 두 개의 인스턴스와 OP1과 OP2라는 두 개의 인터페이스가 있습니다. 그 중 OP1 처리는 시간이 더 많이 걸리고 더 많은 CPU 시간을 차지하는 반면 OP2 처리는 더 빠릅니다. 마이크로서비스 A의 비즈니스 로직은 OP1, OP2, OP1, OP2...의 액세스 모드에서 마이크로서비스 B를 호출합니다. 고객 시스템에서는 OP1이 모두 B1에 액세스하고 OP2가 모두 B2에 액세스하는 경우가 종종 있습니다.
이 문제가 발생하는 이유는 라운드 로빈 알고리즘이 서로 다른 요청의 균형 요구 사항을 차등적으로 고려하지 않고 요청 순서에 따라 인스턴스를 할당하기 때문입니다. 이 문제를 해결하는 가장 간단하고 직접적인 방법은 Random 알고리즘을 사용하는 것입니다. 그러나 로드 밸런싱 알고리즘을 선택할 때 문제 위치 파악, 문제 분석 및 문제 회피에 예측 가능성이 매우 편리하므로 아직까지 Round Robin 알고리즘은 부족합니다. .지방을 위한 최선의 선택.
Java Chassis 3의 솔루션은 인터페이스 차원의 로드 밸런싱을 제공하는 것입니다.
기본 시나리오에서 Java 섀시는 각 계약(스키마)에 대한 로드 밸런서를 생성합니다. OP1과 OP2가 각각 UserService 및 LoginService에 속하면 위의 예제 시나리오에서 개발자는 어떤 구성도 수행할 필요가 없으며 트래픽은 자동으로 균형을 맞춥니다.
OP1과 OP2가 모두 LoginService에 속하고 OP1의 트래픽 균형을 확인해야 하는 경우 다음을 구성할 수 있습니다.
servicecomb.loadbalance.${마이크로서비스 B}.${계약 이름}.${인터페이스 이름}.strategy.name=RoundRobin
예를 들어:
servicecomb.loadbalance.B.LoginService.login.strategy.name=RoundRobin
시간이 많이 걸리는 요청 OP1(로그인)에 대해 다른 로드 밸런싱을 설정합니다.
심도 깊은 논의
위의 로드 밸런싱 원칙에서 볼 수 있듯이 마이크로서비스 X가 M개의 마이크로서비스에 액세스하고 각 마이크로서비스에 평균 N개의 계약이 있다고 가정하면 X는 M * N 로드 밸런싱을 생성합니다. 대부분의 시스템에서 이 크기 순서는 1K 이내입니다. 일반적으로 시간이 많이 걸리는 요청에 대한 트래픽 균형을 보장하려면 시간이 많이 걸리는 인터페이스에 독립적인 로드 밸런싱만 할당하면 됩니다. 트래픽 밸런싱 문제를 해결하는 것 외에도 Java 섀시의 구성 방법은 다른 특수 시나리오에 대한 매우 간단한 구성 솔루션을 제공할 수도 있습니다. 예를 들어 다음을 통해 구성할 수 있습니다.
servicecomb.loadbalance.${마이크로서비스 B}.${계약 이름}.${인터페이스 이름}.strategy.name=SessionStickiness
특정 인터페이스에 대한 세션 고정 정책을 지정합니다.
요약하다
Java Chassis 3는 인터페이스 차원 로드 밸런싱 정책 설정을 통해 다양한 애플리케이션 시나리오에 대한 매우 강력한 로드 밸런싱 관리 기능을 제공하여 로드 불균형 및 세션 고정과 같은 애플리케이션 로드 문제를 해결하는 데 도움을 줍니다.
화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~
RustDesk는 만연한 사기로 국내 서비스 Taobao(taobao.com)를 중단하고 웹 버전 최적화 작업을 재개했으며 Apple은 M4 칩을 출시했으며 고등학생들은 성인식으로 자신의 오픈 소스 프로그래밍 언어를 만들었습니다. 네티즌들은 다음과 같이 논평했습니다. 변호인인 Yunfeng은 Alibaba에서 사임했으며 향후 Windows 플랫폼의 Visual Studio Code 1.89를 독립 게임 프로그래머를 위한 대상인 Huawei에 의해 공식적으로 발표되었습니다. Yu Chengdong의 직업 조정은 "FFmpeg Pillar of Shame"에 포함되었습니다. ” 15년 전, 오늘 그는 우리에게 감사해야 합니다. Tencent QQ Video가 이전의 수치심을 복수한다고요? 화중과기대학교 오픈소스 미러 스테이션이 외부 네트워크 접속에 공식적으로 개방되었습니다.