PHP에서 swoole과 rpc의 차이점

(*-*)浩
풀어 주다: 2019-12-14 14:17:01
원래의
2459명이 탐색했습니다.

PHP에서 swoole과 rpc의 차이점

RPC는 Remote Procedure Call의 약자입니다.

SAP 시스템에서 RPC 호출의 원리는 실제로 매우 간단합니다. 3계층 아키텍처와 유사한 일부 C/S 시스템은 타사 클라이언트 프로그램이 인터페이스를 통해 SAP 내의 표준 또는 사용자 정의 기능을 호출합니다. 나중에 표시하거나 인쇄하기 위해 함수에서 반환한 데이터를 얻습니다. (추천 학습: SWOOLE 비디오 튜토리얼 )

대체 통신(IPC)은 멀티 태스킹 운영 체제 또는 연결된 컴퓨터 간의 프로그램 및 처리에 사용되는 통신 기술입니다. 프로세스 간 통신(IPC)에는 두 가지 유형이 있습니다.

로컬 프로시저 호출(LPC) LPC는 멀티 태스킹 운영 체제에서 동시에 실행되는 작업이 서로 통신할 수 있도록 하는 데 사용됩니다. 이러한 작업은 메모리 공간을 공유하므로 작업이 서로 동기화하고 정보를 보낼 수 있습니다.

RPC(원격 프로시저 호출) RPC는 LPC와 유사하지만 온라인으로 작동합니다. RPC는 Sun Microsystems 및 HP의 UNIX 운영 체제를 실행하는 컴퓨터에 나타나기 시작했습니다.

Swoole 프레임워크에서 제공하는 RPC 서버는 PHP-FPM에서 단일 연결 동시성 및 장기 연결 유지 관리와 같은 기능을 지원합니다. Wheel Internet의 대규모 적용에서는 4계층 아키텍처의 서비스 지향 아키텍처가 구축되었습니다.

많은 회사에서 RPC 통신을 구현하기 위해 Http Rest를 사용합니다. 구현이 간단하고 이미 만들어진 많은 도구와 솔루션을 활용할 수 있습니다. 그러나 HTTP 통신 프로토콜에는 두 가지 심각한 결함이 있습니다.

Http는 단일 연결 동시성을 지원하지 않습니다. 동시에 많은 요청을 보내려면 많은 수의 TCP 연결을 생성해야 합니다. php-fpm이 500개의 프로세스를 시작하고 매번 128개의 동시성이 필요하다면 64,000개의 TCP 연결을 생성해야 합니다.

Http는 긴 연결을 충분히 지원하지 않습니다. 많은 Http 프로그램은 요청이 이루어질 때 TCP 연결이 생성되고 요청이 끝나면 추가 네트워크 통신 소비가 발생합니다. Swoole 프레임워크 클라이언트는 16바이트 고정 헤더 + 패키지 본문 통신 방법을 사용하고 단일 연결 동시성을 지원하며 php-fpm에서 긴 연결 열기를 지원합니다.

php-fpm 긴 연결

php-fpm에서 TCP 긴 연결을 유지하는 것은 주로 swoole 확장에서 제공하는 SWOOLE_KEEP 옵션에 의존합니다. 클라이언트가 이 옵션을 설정한 후에는 요청이 종료될 때 연결이 닫히지 않습니다. 새 요청이 도착하면 나중에 TCP 연결을 다시 사용할 수 있습니다. 또한 하단 레이어에는 긴 연결 감지 기능이 내장되어 있습니다.

$client->connect()를 실행하면 연결이 사용 가능한지 자동으로 감지합니다. 재사용된 연결이 만료된 경우 하위 계층은 새로운 TCP 긴 연결을 다시 생성합니다.

$client->connect() 실행 시 자동으로 정크 데이터를 정리하여 마지막 클라이언트 시간 초과의 잔여 데이터로 인한 서비스 예외를 방지합니다

$socket = new \swoole_client(SWOOLE_SOCK_TCP | SWOOLE_KEEP, WOOLE_SOCK_SYNC);
$socket->set(array(
    'open_length_check' => true,
    'package_max_length' => $this->packet_maxlen,
    'package_length_type' => 'N',
    'package_body_offset' => RPCServer::HEADER_SIZE,
    'package_length_offset' => 0,
));
로그인 후 복사

위 내용은 PHP에서 swoole과 rpc의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿