클라우드 컴퓨팅 및 마이크로 서비스 아키텍처가 증가함에 따라 고 가용성 시스템을 구축하는 것이 특히 중요해졌습니다. 이 기사는 PHP 및 RabbitMQ를 사용하여 사용 가능한 마이크로 서비스 아키텍처를 만드는 방법을 심층적으로 탐색합니다. 우리는 RabbitMQ를 메시지 중개인으로 사용하여 메시지 대기열을 통해 마이크로 서비스 간의 통신을 실현하고 PHP 코드를 작성하여 서버와 클라이언트 간의 상호 작용을 달성 할 것입니다.
시작하기 전에 이미 다음 환경 조건이 있는지 확인하십시오.
먼저, 마이크로 서비스 간의 통신을위한 메시지 큐를 만들어야합니다. 다음은 RabbitMQ 및 AMQP 확장을 사용하여 메시지 큐를 생성하는 코드입니다.
$ queuename = 'microService_queue'; $ connection = 새로운 amqpconnection ([[ '호스트'=> 'localhost', '포트'=> '5672', 'vhost'=> '/', '로그인'=> '게스트', '암호'=> '게스트' ]); $ 채널 = $ connection-> 채널 (); $ channel-> queue_declare ($ queueName, false, true, false, false);
이 코드는 'microService_queue'라는 큐를 생성합니다.이 큐는 마이크로 서비스 사이의 메시지를 전달하는 것과 함께 사용합니다.
마이크로 서비스 아키텍처에서 서버는 요청을 처리하고 결과를 반환 할 책임이 있습니다. 기본 서버 측 코드 예는 다음과 같습니다.
$ channel-> basic_consume ($ queuename, '', false, false, false, false, function ($ msg) { $ message = json_decode ($ msg-> body, true); $ result = processRequest ($ 메시지); // 프로세스 비즈니스 로직 $ 응답 = 새로운 amqpmessage (json_encode ($ result)); $ msg-> delivery_info [ 'Channel']-> Basic_publish ($ response, '', $ msg-> get ( 'Reply_to')); $ msg-> delivery_info [ 'Channel']-> Basic_ack ($ msg-> vevelip_info [ 'delivery_tag']); });
위의 코드에서는 Basic_Consume () 함수를 통해 메시지 큐를 듣고 메시지를 수신 한 후 콜백 함수를 실행하고 요청을 처리하고 결과를 클라이언트로 다시 보냅니다.
마이크로 서비스 아키텍처에서 클라이언트는 요청을 보내고 서버로부터 응답을받을 책임이 있습니다. 다음은 클라이언트 코드의 예입니다.
$ request = [ 'method'=> 'get', 'url'=> '/user', 'data'=> [ 'id'=> 1] ]; $ response = $ channel-> call ($ queuename, json_encode ($ request)); $ result = json_decode ($ response-> body, true); echo $ 결과;
위의 코드는 요청 배열을 구성하고 Call () 함수를 통해 요청을 서버로 보냅니다. 응답을 기다리고 결과를 구문 분석합니다.
위의 코드 예제를 사용하면 사용 가능한 마이크로 서비스 아키텍처를 신속하게 구축 할 수 있습니다. RabbitMQ의 메시지 큐를 사용하여 다른 서버에 여러 서버 및 클라이언트를 배포함으로써 효율적인 통신을 달성 할 수 있습니다.
RabbitMQ가 올바르게 구성되고 테스트하기 전에 실행되었는지 확인하고 필요에 따라 연결 매개 변수를 수정하십시오.
PHP와 RabbitMQ를 통해, 우리는 고도로 사용 가능한 마이크로 서비스 아키텍처를 빠르고 유연하게 구축 할 수 있습니다. RabbitMQ는 신뢰할 수있는 메시지 대기열, 마이크로 서비스 간의 통신을 단순화하고 PHP의 AMQP 확장을 제공하면 RabbitMQ와 완벽하게 통합 할 수 있습니다.
이 기사에서는 PHP 및 RabbitMQ를 사용하여 사용 가능한 마이크로 서비스 아키텍처를 구현하는 방법을 소개합니다. 이러한 코드 예제는 기본 기능을 다루었지만 실제 응용 프로그램에서는 마이크로 서비스 아키텍처를 개선하기 위해 서비스 검색 및로드 밸런싱과 같은 요소도 고려해야합니다.