현재 위치: > 최신 기사 목록> 【PHP 마이크로 서비스 아키텍처 실무】 분산 메시지 대기열 및 서비스 간의 커뮤니케이션 실현을위한 포괄적 인 전략

【PHP 마이크로 서비스 아키텍처 실무】 분산 메시지 대기열 및 서비스 간의 커뮤니케이션 실현을위한 포괄적 인 전략

M66 2025-06-22

소개

인터넷 비즈니스의 지속적인 확장으로 시스템의 복잡성도 증가하고 있습니다. 더 높은 가용성, 유지 관리 및 확장 성을 달성하기 위해 점점 더 많은 기업이 마이크로 서비스 아키텍처를 채택하기 시작했습니다. 이 아키텍처에서 메시지 대기열은 서비스 간의 비동기 통신을위한 중요한 메커니즘이됩니다. 이 기사는 PHP 마이크로 서비스 아키텍처를 사용하여 분산 메시지 대기열 및 통신 방법을 구현하고 RabbitMQ, HTTP 및 RPC와 함께 자세한 설명을 제공하는 방법을 자세히 살펴 봅니다.

마이크로 서비스 아키텍처 개요

마이크로 서비스는 모 놀리 식 애플리케이션을 소규모 서비스 그룹으로 분할하는 건축 모델입니다. 각 서비스는 특정 비즈니스 기능을 중심으로 구축되며 독립적 인 데이터베이스, 배포 및 유지 보수 프로세스가 있습니다. 가벼운 통신 메커니즘은 HTTP, RPC 또는 메시지 대기열과 같은 서비스간에 상호 작용하는 데 사용됩니다. 이 아키텍처는 시스템 유연성, 결함 분리 기능 및 전반적인 응답 속도를 향상시키는 데 도움이됩니다.

PHP에서 분산 메시지 대기열의 구현

분산 환경에서 메시지 대기열은 요청을 비동기 적으로 처리하는 데 사용되어 시스템 처리량 및 안정성을 향상시킵니다. RabbitMQ는 현재 널리 사용되는 분산 메시징 미들웨어이며 여러 프로토콜 및 언어를 지원하며 동시성 시나리오에 적합합니다.

RabbitMQ 설치 및 사용

먼저 RabbitMQ를 설치해야하며 운영 체제를 기반으로 공식 웹 사이트에서 설치 지침을 얻을 수 있습니다. 설치가 완료되면 기본 생산자 및 소비자 모델을 다음 PHP 코드를 통해 구현할 수 있습니다.

RabbitMQ 생산자 및 소비자 사례

require_once __dir __. '/vendor/autoload.php';

phpamqplib \ connection \ amqpStreamConnection을 사용합니다.
phpamqplib \ message \ amqpmessage를 사용하십시오.

// producer $ connection = new AMQPStReamConnection ( 'localhost', 5672, 'Guest', 'Guest');
$ 채널 = $ connection-> 채널 ();
$ 채널-> queue_declare ( 'hello', false, false, false, false);

$ msg = 새로운 amqpmessage ( 'Hello World!');
$ 채널-> basic_publish ($ msg, '', 'hello');

echo "[x]는 'Hello World!'\ n"을 보냈습니다.

$ 채널-> close ();
$ connection-> close ();
// 소비자 $ connection = new AMQPStReamConnection ( 'localhost', 5672, 'Guest', 'Guest');
$ 채널 = $ connection-> 채널 ();
$ 채널-> queue_declare ( 'hello', false, false, false, false);

echo "[*] 메시지를 기다리고 있습니다. 종료하려면 ctrl+c \ n을 누르십시오";

$ Callback = function ($ msg) {
  echo '[x] 수신', $ msg-> body, "\ n";
};

$ 채널-> basic_consume ( 'hello', '', false, true, false, false, $ 콜백);

while ($ channel-> is_conssoring ()) {
  $ 채널-> 대기 ();
}

생산자와 소비자를 운영하십시오

터미널에서 다음 명령을 실행하십시오.

PHP Producer.php
PHP Consumer.php

달리기 후 생산자는 메시지를 대기열로 보냅니다. 소비자는 메시지를 듣고 처리합니다. 이 메커니즘은 다중 소비자 동시 처리를 지원하고 시스템 성능을 향상시킵니다.

PHP 마이크로 서비스 통신 방법

마이크로 서비스 간의 통신은 시스템 작동의 핵심 링크입니다. 다음은 세 가지 주류 커뮤니케이션 방법입니다.

1. 서비스 통신을 위해 HTTP를 사용하십시오

HTTP는 무국적 요청에 적합한 가장 일반적인 서비스 통신 프로토콜입니다. PHP에서 일반적으로 사용되는 HTTP 클라이언트는 Guzzle입니다.

'공급 업체/autoload.php'가 필요합니다.

guzzlehttp \ client를 사용하십시오.

$ client = new Client ();
$ response = $ client-> request ( 'get', 'https://example.com');
echo $ response-> getbody ();

2. RPC 프로토콜을 사용하여 효율적인 호출을하십시오

RPC (원격 절차 호출)를 사용하면 로컬 기능과 같은 마이크로 서비스간에 원격 서비스를 호출 할 수 있습니다. PHP에서 RPC를 지원하는 라이브러리에는 GRPC 및 중고품이 포함됩니다.

require_once '공급 업체/autoload.php';

Helloworld \ Hellorequest를 사용하십시오.
helloworld \ greeterclient를 사용하십시오.

$ Client = New GreeterClient ( 'localhost : 50051', [
  'Credentials'=> grpc \ ChannelCredentials :: createInsecure (),
]);

$ request = 새로운 hellorequest ();
$ request-> setName ( 'world');

$ response = $ client-> sayHello ($ request);
echo $ response-> getMessage ();

3. 메시지 대기열과의 비동기 통신

이전 기사는 RabbitMQ를 사용하여 서비스 간의 비동기 통신을 구현하는 것을 보여줍니다. 이 방법은 강한 디커플링, 높은 결함 공차 및 우수한 확장 성의 장점이 있습니다. 작업 대기열, 로깅 및 주문 처리와 같은 시나리오에 적합합니다.

요약

PHP를 통해 마이크로 서비스 아키텍처를 구축하고 분산 메시지 대기열 및 통신 메커니즘을 통합하는 것은 현대식 고성능 시스템을 구축하는 중요한 방법입니다. RabbitMQ는 서비스 간의 느슨하게 결합 된 커뮤니케이션을 구현하고 HTTP는 정기 서비스 호출에 적합하며 RPC는 저하 및 고주파 상호 작용에 적합합니다. 이러한 기술을 결합하면 시스템의 견고성과 응답 성을 크게 향상시킬 수 있습니다.