php 에서 유행 하 는 rpc 프레임 워 크 상세 설명

8530 단어 phprpc프레임
RPC 프레임 이란 무엇 입 니까?
일반적으로 우 리 는 phop 의 방법 을 호출 합 니 다.예 를 들 어 이러한 함수 방법:localAdd(10,20),localAdd 방법의 구체 적 인 실현 은 사용자 가 정의 하거나 phop 라 이브 러 리 함수 에서 자체 적 으로 가 져 온 것 입 니 다.즉,localAdd 방법의 코드 가 로 컬 에서 이 루어 진 것 이 라 고 할 수 있 습 니 다.이것 은 로 컬 호출 입 니 다!
원 격 호출 원리
예 를 들 어 A(client)가 B(server)가 제공 하 는 reoteAdd 방법 을 호출 합 니 다.
1.먼저 A 와 B 사이 에 TCP 연결 을 만 듭 니 다.
2.그리고 A 는 호출 할 방법 명(여 기 는 remoteAdd)과 방법 매개 변수(10,20)를 바이트 흐름 으로 정렬 하여 보 냅 니 다.
3.B.A 가 보 낸 바이트 흐름 을 받 아들 인 다음 에 목표 방법 명,방법 파 라 메 터 를 역 직렬 화하 여 해당 하 는 방법 으로 호출(local Add 일 수 있 음)하고 결 과 를 30 으로 되 돌려 줍 니 다.
4.A 원 격 호출 결 과 를 받 아들 여 30 을 출력 한다.
RPC 프레임 워 크 는 내 가 방금 말 한 이 몇 가지 세부 사항 을 밀봉 하여 사용자 에 게 간단 하고 우호 적 인 API 사용 을 노출 시 키 는 것 이다.
원 격 호출 의 장점
디 결합:server 가 방법 내 수정 이 필요 할 때 client 는 전혀 감지 되 지 않 고 변경 하지 않 아 도 됩 니 다.이런 방식 은 부 서 를 뛰 어 넘 고 회 사 를 뛰 어 넘 을 때 자주 사용 되 며 방법의 제공 자 는 우 리 는 흔히 서비스의 노출 이 라 고 부른다.
RPC 와 Socket 은 어떤 차이 가 있 습 니까?
위의 간단 한 설명 을 통 해 RPC 와 Socket 이 비슷 한 것 같 습 니 다.모두 원 격 으로 호출 하 는 방법 입 니 다.모두 client/server 모드 입 니 다.저도 전에 글 을 썼 습 니 다.socket 을 자세히 말 하면 그들 은 어떤 차이 가 있 습 니까?
RPC(원 격 프로 세 스 호출)는 클 라 이언 트/서버 모드 로 두 프로 세 스 간 의 상호 통신 을 실현 합 니 다.socket 은 RPC 가 자주 사용 하 는 통신 수단 중 하나 로 RPC 는 Socket 을 바탕 으로 이 루어 집 니 다.socket 보다 더 많은 네트워크 와 시스템 자원 이 필요 합 니 다.Socket 을 제외 하고 RPC 는 http,운영 체제 자체 의 파이프 등 기술 로 원 격 프로그램 에 대한 호출 을 실현 하 는 다른 통신 방법 도 있다.마이크로소프트 의 윈도 시스템 에서 RPC 는 명칭 파 이 프 를 이용 하여 통신 을 한다.
RPC 와 REST 는 어떤 차이 가 있 습 니까?
RPC 를 알 아 본 후에 우 리 는 RPC 가 client/server 모드 라 는 것 을 알 게 되 었 습 니 다.원 격 으로 호출 하 는 방법 입 니 다.REST 도 우리 가 잘 아 는 API 호출 프로 토 콜 방법 입 니 다.이것 도 client/server 모드 를 바탕 으로 원 격 으로 호출 하 는 방법 입 니 다.그러면 그들 둘 은 어떤 차이 가 있 습 니까?
REST API 와 RPC 는 모두 서버 에서 하나의 함 수 를 인터페이스 로 봉 하여 노출 시 켜 클 라 이언 트 에서 호출 할 수 있 습 니 다.그러나 REST API 는 HTTP 프로 토 콜 을 기반 으로 합 니 다.REST 는 http 프로 토 콜 의 POST/GET/PUT/DELETE 등 방법 과 가 독성 이 강 한 URL 을 통 해 http 요청 을 제공 하 는 데 주력 합 니 다.RPC 는 HTTP 프로 토 콜 을 기반 으로 하지 않 을 수 있 습 니 다.
따라서 백 엔 드 두 언어 가 서로 호출 된다 면 RPC 로 더 좋 은 성능(HTTP 헤더 등 일련의 것 을 생략)을 얻 을 수 있 고 쉽게 설정 할 수 있 을 것 이다.프론트 엔 드 가 AJAX 를 통 해 백 엔 드 를 호출 하 는 것 이 라면 REST API 형식 을 사용 하 는 것 이 좋 습 니 다(HTTP 라 는 고 비 를 도저히 피 할 수 없 기 때 문 입 니 다).
php 에서 유행 하 는 rpc 프레임 워 크 는 어떤 것 이 있 습 니까?
phop 이 세계 에서 가장 좋 은 언어 인 만큼 phop 에서 유행 하 는 RPC 프레임 워 크 는 어떤 것 이 있 습 니까?
먼저 다음 열거:phprpc,yar,thrift,gRPC,swoole,hprose
시간 과 정력 이 제한 되 어 있 기 때문에 하나씩 공부 하고 사용 할 수 없습니다.저 는 세상 에서 가장 많이 쓰 는 몇 개 를 골 라 서 사용 하 겠 습 니 다.RPC 원 리 는 같 기 때문에 모두 Client/server 모드 이 고 프레임 마다 사용 방식 이 다 를 뿐 입 니 다.
주로 phprpc 와 yar 를 설명해 주세요.
phprpc
먼저 홈 페이지 에서 최신 안정 판 phprpc:링크 를 다운로드 하여 압축 을 풀 어 줍 니 다.
설치 하 다.
우 리 는 안에 많은 파일 과 폴 더 가 있 는 것 을 발견 할 것 이다.구 조 는 다음 과 같다.
  • dhparams/
  • pecl/
  • bigint.php
  • compat.php
  • phprpc_date.php
  • xxtea.php
  • dhparams.php
  • phprpc_server.php
  • phprpc_client.php
  • 그 중에서 dhparams 와 pecl 은 폴 더 이 고 pecl 에 있 는 것 은 phop 의 xxtea 확장 입 니 다.홈 페이지 의 설명 에 따라 설치 할 수도 있 고 설치 하지 않 아 도 되 며 phoprpc 를 설치 하지 않 아 도 실행 할 수 있 습 니 다.하지만 더 빠 른 암호 화 처리 능력 이 필요 하 다 면 설치 할 수 있 습 니 다.
    그냥 설치 할 게 요.암호 화 능력 이 빠 르 기 때문에 좋 은 일이 다.
    설치 절 차 는 다음 과 같 습 니 다.먼저 pecl 아래 의 xxtea 폴 더 를 phop 소스 코드 의 etx 디 렉 터 리 로 복사 합 니 다./lamp/phop-5.4.11/ext 아래.그리고 phpize 로 확장 해서 다시 컴 파일 합 니 다.
    [root@localhost /]# cd /lamp/php-5.4.11/ext/xxtea
    [root@localhost xxtea]# /usr/local/php/bin/phpize
    [root@localhost xxtea]# ./configure --enable-xxtea=shared --with-php-config=/usr/local/php/bin/php-config
    make && make install
    OK,컴 파일 이 완료 되 었 습 니 다.xx tea.so 가/usr/local/phop/lib/phop/extensions/no-debug-zts-2010525/xx tea.so 에 있 음 을 알려 줍 니 다.
    다음은 php.ini 의 마지막 에 이 xxtea.so 를 더 해 야 합 니 다.
    [root@localhost /]# vi /usr/local/php/etc/php.ini 
    [xxtea]
    extension=xxtea.so
    추가 후,우 리 는 apache 나 phop-fpm 를 다시 시작 해 야 합 니 다.
    apache 다시 시작
    [root@localhost /]# /usr/local/apache/bin/apachectl restart
    php-fpm 부 드 럽 게 다시 시작
    kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
    재 부팅 이 끝 난 후 phopinfo()페이지 를 열 고 검색 하면 xxtea 를 볼 수 있 을 것 입 니 다.
    사용 시작
    먼저 간단 한 예 를 들 면 phprpc 도 서버 쪽 과 클 라 이언 트 로 나 뉜 다.그래서 폴 더 에 대응 하 는 것 은 phprpcserver.php 와 phprpcclient.php
    우 리 는 홈 페이지 의 몇 가지 예 를 참고 하여 연습 해 보 자.
    server.php 서버:이렇게 쓰 면 가장 간단 한 helloword 인 터 페 이 스 를 완성 합 니 다.
    
    <?php
    
    include ("phprpc/phprpc_server.php");
    
    function HelloWorld() {
    
       return 'Hello World!';
    
    }
    
    $server = new PHPRPC_Server();
    
    $server->add('HelloWorld');
    
    $server->start();
    server.php 를 실행 하 다 니,잘못 보고 하 다 니!!!
    PHP Strict Standards:  Non-static method PHPRPC_Server::initSession()....
    Cannot redeclare gzdecode().....
    구 글 은 먼저 phprpc 를server.php 의 413 줄 initSession()을 static function 으로 변경 합 니 다.
    
    static function initSession() {
    
       ****
    
    }
    이렇게 큰 오류,phprpc 는 어떻게 발 표 했 습 니까!!
    copat.phop 의 71 번 째 줄 의 gzdecode()함수 에서 phop 5.4 는 이미 이 함 수 를 실현 하 였 습 니 다.이렇게 함 수 는 다시 써 서 잘못 보 고 했 기 때문에 판단 을 추가 합 니 다.
    
    if (!function_exists('gzdecode')) {
    
        // gzdecode      
    
    }
    server.php 를 다시 실행 합 니 다.잘못 신고 하지 않 습 니 다.출력:
    phprpc_functions="YToxOntpOjA7czo5OiJoZWxsb3dvcmQiO30=";
    우 리 는 다음 에 클 라 이언 트 client.php 를 써 서 어떻게 쓰 는 지 볼 까요?
    
    <?php
    
    include ("phprpc/phprpc_client.php");
    
    $client = new PHPRPC_Client('http://127.0.0.1/server.php');
    
    echo $client->HelloWorld();
    
    ?>
    우 리 는 다음 client.php 를 실행 하고 있 습 니 다.원 하 는 출력 을 실 행 했 습 니 다:
    Hello Word!
    이렇게 간단 한 서버/렌즈 를 교부 하면 됩 니 다.비록 중간 에 약간의 착오 가 생 겼 지만,전체적으로 말하자면 매우 간단 하고 이해 하기 쉽다.
    다른 더 고 급 스 러 운 용법 은 홈 페이지 를 참고 할 수 있다.
    yar
    Yr 는 국내 에서 유명한 phop 대신 새 형 혜 신 왕 의 대작 으로 웨 이 보 제품 에서 이미 사용 되 기 시작 했다.그것 도 rpc 프레임 워 크 입 니 다.순수 C 로 작 성 된 phop 확장 을 사용 하기 때문에 효율 이 높 을 것 입 니 다.또한 비동기 병행 을 지원 한 다 는 점 이 좋 습 니 다.
    다운로드 설치
    홈 페이지 다운로드:http://pecl.php.net/package/yar최신 버 전
    그리고 php 원본 코드 에 복 사 된 etx 디 렉 터 리:/lamp/php-5.4.11/ext 아래.그리고 phpize 로 확장 해서 다시 컴 파일 합 니 다.
    [root@localhost yar-1.2.4]# /usr/local/php/bin/phpize
    [root@localhost yar-1.2.4]# ./configure --with-php-config=/usr/local/php/bin/php-config
    그런데 문제 가 생 겼 어 요.힌트,curl 에 문제 가 있어 요.
    configure: error: Please reinstall the libcurl distribution - easy.h should be in /include/curl/
    제 가 이 컴퓨터 curl 에 문제 가 있 는 것 같 습 니 다.그럼 yum 으로 설치 해 주세요.
    yum -y install curl-devel
    curl 을 설치 한 후에 계속 컴 파일 하고 설치 하면 문제 가 없습니다.
    [root@localhost yar-1.2.4]# /usr/local/php/bin/phpize
    [root@localhost yar-1.2.4]# ./configure --with-php-config=/usr/local/php/bin/php-config
    [root@localhost yar-1.2.4]# make && make install
    성공 후,Yr.so 확장 이/usr/local/phop/lib/phop/extensions/no-debug-zts-2010525/에 있 음 을 알려 줍 니 다.
    우리 vi 는 phop.ini 를 편집 하고 맨 뒤에 Yr.so 확장 을 추가 한 다음 apache 나 phop-pfm 를 다시 시작 하면 됩 니 다.
    [root@localhost /]# vi /usr/local/php/etc/php.ini 
    [yar]
    extension=yar.so
    네.추가 후,우 리 는 apache 나 phop-fpm 를 다시 시작 해 야 합 니 다.
    apache 다시 시작
    [root@localhost /]# /usr/local/apache/bin/apachectl restart
    php-fpm 부 드 럽 게 다시 시작
    kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
    재 부팅 이 끝 난 후 phopinfo()페이지 를 열 고 검색 하면 Yr 를 볼 수 있 을 것 입 니 다.
    사용 시작
    다른 rpc 프레임 워 크 와 마찬가지 로 Yr 도 server/client 모드 이기 때문에 우리 도 마찬가지 로 간단 한 예 를 들 어 어떻게 호출 하 는 지 설명 하기 시작 합 니 다.
    yar_server.php 는 서버 쪽 을 표시 합 니 다.
    
    <?php
    
    class API {
    
       public function api($parameter, $option = "foo") {
    
           return $parameter;
    
       }
    
       protected function client_can_not_see() {
    
       }
    
    }
    
    $service = new Yar_Server(new API());
    
    $service->handle();
    자,브 라 우 저 에서 실행 하면 다음 그림 과 같은 출력 이 나타 납 니 다.고 급 스 러 워!!새 형 은 이렇게 하 는 용 도 는 이 rpc 가 얼마나 많은 인 터 페 이 스 를 제공 하 는 지 한눈 에 알 수 있 고 api 문 서 를 생략 할 수 있다 고 말 했다.

    자,우리 yar 쓰기 시작 합 시다.client.php 이것 은 클 라 이언 트 입 니 다:
    
    $client = new Yar_Client("http://127.0.0.1/yar_server.php");
    
    echo $client->api('helo word');
    다른 swoole,hprose 등 은 기본적으로 이 원리 입 니 다.누구의 기능 이 더 좋 고 사용 하기에 더 편 할 뿐 입 니 다.
    이상 은 phop 에서 유행 하 는 rpc 프레임 워 크 에 대한 상세 한 내용 입 니 다.phop 에서 유행 하 는 rpc 프레임 워 크 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기