현재 위치: > 최신 기사 목록> PHP 마이크로 서비스 실습 : 서비스 발견 및로드 밸런싱 구현을위한 안내서

PHP 마이크로 서비스 실습 : 서비스 발견 및로드 밸런싱 구현을위한 안내서

M66 2025-09-16

PHP 마이크로 서비스의 서비스 발견 및로드 밸런싱

서비스 발견 및로드 밸런싱은 분산 시스템을 구축 할 때 핵심 기능입니다. 서비스 검색은 시스템의 서비스 및 네트워크 위치를 자동으로 식별하는 데 사용되며로드 밸런싱은 시스템의 고 가용성 및 성능을 향상시키기 위해 여러 서비스 인스턴스에 요청을 합리적으로 배포하는 데 책임이 있습니다.

이 기사는 PHP 마이크로 서비스 에서이 두 기능을 구현하기위한 특정 방법과 예제 코드를 공유합니다.

서비스 발견

서비스 검색의 목적은 사용 가능한 모든 서비스 인스턴스를 찾고 네트워크 위치를 다른 서비스에 제공하는 것입니다. PHP 마이크로 서비스에서 서비스 인스턴스는 레지스트리를 통해 관리 할 수 ​​있습니다. 레지스트리는 시스템 및 네트워크 정보에 사용 가능한 모든 서비스를 기록하는 중앙 집중식 서비스입니다.

다음은 레지스트리를 사용하여 서비스 검색을 구현하는 방법을 보여주는 PHP 예입니다.

 클래스 레지스트리 {
    개인 정적 $ 서비스 = [];
    
    public static function registerservice ($ serviceName, $ host, $ port) {
        self :: $ 서비스 [$ serviceName] [] = [
            '호스트'=> $ host,
            '포트'=> $ 포트,
        ];
    }
    
    public static function getService ($ serviceName) {
        $ services = self :: $ services [$ serviceName] ?? [];
        $ index = mt_rand (0, count ($ services) -1);
        반품 $ 서비스 [$ index] ?? 널;
    }
}

레지스트리 :: 레지스터 서비스 ( '사용자 서비스', '로컬 호스트', 8001);
레지스트리 :: RegisterService ( '사용자 서비스', 'LocalHost', 8002);
레지스트리 :: 레지스터 서비스 ( 'Order-Service', 'localhost', 9001);

$ userervice = 레지스트리 :: getService ( '사용자 서비스');
$ orderservice = 레지스트리 :: getService ( 'Order-Service');

Echo "사용자 서비스 :". $ uservice [ 'host']. ":". ". $ uservice [ 'port']. "\N";
에코 "주문 서비스 :". $ Orderservice [ '호스트']. ":". ". $ Orderservice [ '포트']. "\N";

레지스트리 클래스는 서비스 등록 및 입수를위한 예에서 정의됩니다. 레지스터 서비스 메소드는 서비스 인스턴스를 등록하는 데 사용되며 getService 메소드는 특정 서비스의 임의 인스턴스를 얻는 데 사용됩니다. 개발자는 서비스 만료 날짜 또는 건강 점검 추가와 같은 수요에 따라 기능을 확장 할 수 있습니다.

로드 밸런싱

로드 밸런싱은 여러 서비스 인스턴스에 요청을 배포하여 시스템의 고 가용성 및 성능 최적화를 가능하게합니다. PHP 마이크로 서비스에서 일반적으로 사용되는 알고리즘에는 폴링, 무작위 선택 및 가중 무작위성이 포함됩니다.

다음은 폴링로드 밸런싱 알고리즘을 구현하는 PHP 예입니다.

 Class LoadBalancer {
    개인 정적 $ 서비스 = [];
    개인 정적 $ index = 0;
    
    공개 정적 함수 추가 서비스 ($ ServiceName, $ host, $ port) {
        self :: $ 서비스 [$ serviceName] [] = [
            '호스트'=> $ host,
            '포트'=> $ 포트,
        ];
    }
    
    public static function getService ($ serviceName) {
        $ services = self :: $ services [$ serviceName] ?? [];
        $ index = self :: $ index % count ($ services);
        self :: $ index ++;
        반품 $ 서비스 [$ index] ?? 널;
    }
}

LoadBalancer :: AddService ( '사용자 서비스', 'LocalHost', 8001);
LoadBalancer :: AddService ( '사용자 서비스', 'LocalHost', 8002);
LoadBalancer :: AddService ( 'Order-Service', 'LocalHost', 9001);

for ($ i = 0; $ i <10; $ i ++) {
    $ userervice = loadbalancer :: getService ( &#39;사용자 서비스&#39;);
    Echo "사용자 서비스 :". $ uservice [ &#39;host&#39;]. ":". ". $ uservice [ &#39;port&#39;]. "\N";
}

이 예에서는 LoadBalancer 클래스는 서비스 인스턴스와 설문 조사를 추가하여 서비스를받는 데 사용됩니다. 인덱스를 유지함으로써 다음 서비스 인스턴스는 GetService를 호출 할 때마다 차례로 반환되어 간단한 폴링로드 밸런싱을 달성합니다.

요약

서비스 발견 및로드 밸런싱은 PHP 마이크로 서비스 아키텍처의 기초입니다. 레지스트리를 사용하여 서비스 인스턴스를 균일하게 관리하고로드 밸런싱 알고리즘은 시스템 성능과 안정성을 향상시킬 수 있습니다. 이 기사에서 제공된 예제는 구현을 기반으로하며 개발자는 실제 비즈니스 요구에 따라 확장하고 최적화 할 수 있습니다.