Dubbo 분산 아키텍처의 고가용성 관련 개념

        고가용성: 분산 시스템 또는 아키텍처에서 일련의 설계를 거쳐 시스템이 서비스를 제공할 수 없는 시간을 줄여 시스템 및 애플리케이션의 가용성을 향상시키는 것을 말합니다.

1. Zookeeper가 다운되어 Dubbo에 직접 연결되었습니다.

질문: 사육사 등록 센터가 다운되었습니다. 소비자가 공급자가 제공하는 서비스에 계속 전화할 수 있습니까? 등록 센터 없이 서비스를 호출할 수 있나요?

대답: 그렇습니다

이유:

견고성

1. 모니터링 센터의 가동 중단 시간은 사용에 영향을 미치지 않지만 일부 샘플링 데이터만 손실됩니다.

2. 데이터베이스가 다운된 후에도 등록 센터는 캐시를 통해 서비스 목록 쿼리를 계속 제공할 수 있지만 새 서비스를 등록할 수는 없습니다.

3. 등록 센터 P2P 클러스터 중 하나가 실패하면 자동으로 다른 클러스터로 전환됩니다.

4. 모든 등록 센터가 다운된 후에도 서비스 제공자와 서비스 소비자는 여전히 로컬 캐시를 통해 통신할 수 있습니다.

5. 서비스 제공자는 무국적(stateless)이므로, 둘 중 하나라도 다운되더라도 이용에는 영향을 미치지 않습니다.

6. 모든 서비스 공급자가 다운된 후에는 서비스 소비자 애플리케이션을 사용할 수 없으며 서비스 공급자가 복구될 때까지 무기한으로 다시 연결해야 합니다.

        등록 센터가 없더라도 Dubbo의 직접 연결 방식을 사용하여 소비자가 공급자가 제공하는 서비스를 참조할 수 있도록 할 수 있습니다. 공급자가 제공하는 방법을 원격으로 호출해야 하는 경우 @Reference 주석을 사용 하여 직접 연결 주입.

//    @Reference  //dubbo会自动去注册中心找这个暴露出来的服务
    @Reference(url = "172.0.0.1:20880")  //本机提供者应用的具体url
    UserService userService;

2. 로드 밸런싱 전략

        LB(Load Balance)는 고동시성, 고가용성 시스템에 없어서는 안 될 핵심 요소로, 특정 알고리즘을 이용해 네트워크 트래픽을 여러 서버에 고르게 분산시켜 시스템의 전반적인 응답 속도와 성능을 향상시키는 것이 목표입니다. .가용성.

        1. 랜덤(Random LoadBalance)

                서버는 무작위로 호출되지만 가중치에 따라 무작위 확률이 설정됩니다. 호출량이 많을수록 분포가 균일해지며, 확률에 따라 가중치를 사용한 후 가중치가 더 균일해지기 때문에 공급자 가중치를 동적으로 조정하는 데 유리합니다.

        2. 폴링(RoundRobin LoadBalance)

                각 서버는 루프로 호출되며, 가중치에 따라 라운드 로빈 비율도 설정할 수 있습니다(예를 들어). 그러나 공급자가 요청을 누적하는 속도가 느린 문제가 있습니다. 예를 들어 두 번째 시스템은 매우 느리지만 응답하지 않고 요청이 두 번째 시스템으로 전송되면 거기에서 멈춥니다. 시간이 지남에 따라 모든 요청이 멈춥니다. 두 번째 기계..

        3. LeastActive LoadBalance

                연결/요청 수가 가장 적은 후보 서버(현재 가장 적은 요청을 처리하는 서버)에 요청을 배포합니다.

        4. 일관성 있는 해시(CondependentHash LoadBalance)

                해시 분포에 따라 동일한 매개변수로 동일한 메소드를 호출하면 매번 동일한 서버를 호출하게 됩니다.

3. 서비스 다운그레이드

        서버 압력이 급격히 증가하는 경우 일부 서비스 및 페이지는 실제 비즈니스 상황 및 트래픽을 기반으로 전략적으로 처리되지 않거나 간단한 방식으로 처리될 수 있으므로 핵심 트랜잭션의 정상적이거나 효율적인 운영을 보장하기 위해 서버 리소스를 해제할 수 있습니다. 서비스 성능 저하 기능을 사용하면 오류가 발생한 중요하지 않은 서비스를 일시적으로 차단하고 성능 저하 후 반환 전략을 정의할 수 있습니다.

       간단히 말하면, 전체 상황을 보존하기 위해 한 사람을 희생하는 것입니다.

       예를 들어, 이제 서버가 많은 기능(주문 생성, 사용자 관리, 광고 등)을 실행하고 있어서 한계에 도달해 빠르게 되돌릴 수 없고, 프로세서 리소스를 해제하기 위해 광고 업무를 일시적으로 중단하거나 단순 처리할 수 있습니다. 보다 효율적인 운영을 달성하기 위해 다른 코어를 먼저 처리합니다.

        

         이때 dubbo의 시각적 인터페이스에서 "Shield" 또는 "Fault Tolerance"를 선택하여 서비스를 다운그레이드할 수 있습니다.

 

        (1) 차폐: 서비스에 대한 소비자의 메서드 호출이 직접 null 값을 반환하고 원격 호출이 시작되지 않음을 의미합니다. 중요하지 않은 서비스를 사용할 수 없을 때 영향으로부터 발신자를 보호하는 데 사용됩니다.

        (2) 내결함성: 소비자가 서비스 메서드 호출에 실패한 후 null 값을 반환하고 예외가 발생하지 않음을 의미합니다. 중요하지 않은 서비스가 불안정할 때 호출자에게 미치는 영향을 허용하는 데 사용됩니다.

추천

출처blog.csdn.net/weixin_64709241/article/details/129768445