Thrift 의 결 과 를 알 기 쉽게 패키지 합 니 다.

6011 단어
1. thrift 복귀 결과 패키지                                                                             
  • Thrift 파일 에 버 전 번 호 를 추가 하여 thrift 버 전 을 제어 할 수 있 습 니 다. 
  • 서비스 와 되 돌아 오 는 데이터 형식 을 분리 하여 정의 합 니 다.   

  •      프로젝트 에서 Thrift 를 사용 하여 RPC 서 비 스 를 제공 할 때 저 희 는 돌아 온 결 과 를 패키지 하고 자신의 데이터 구조 가 필요 하 다 고 정의 하 는 경우 가 많 습 니 다.thrift 파일 의 가 독성 을 높이 기 위해 데이터 구조 와 서 비 스 를 통 하지 않 는 파일 로 나 누 어 정의 합 니 다. 。이런 방식 을 통 해 호출 자 에 게 우호 적 인 사용 체험 을 제공한다.
         thrift_datatype. thrift 에서 데이터 형식 을 정의 합 니 다:
    namespace java com.wy.service.thriftdatatype
    /*thrift    */
    const string VERSION = "1.0.1"
    
    /* ThriftResult                */
    /****************************************************************************************************
    *      :
    *     ThriftResult,      ,     ;    ,       
    *                  ,           :"Result" + "        ",           :
    *          ThriftResult  result,      ,       ,   ,         
    *          value,         
    *****************************************************************************************************/
    enum ThriftResult
    {
      SUCCESS,           /*  */
      SERVER_UNWORKING,  /*      Working  */
      NO_CONTENT,           /*       */
      DATA_NOT_COMPLETE,  /*     */
      PARAMETER_ERROR,     /*    */
      EXCEPTION,          /*      */
      INDEX_ERROR,         /*          */
      INNER_ERROR,          /*    */
      UNKNOWN_ERROR      /*    */
    }
    
    /*bool      */
    struct ResultBool 
    {
      1: ThriftResult result,
      2: bool value
    }
    
    /*int      */
    struct ResultInt
    {
      1: ThriftResult result,
      2: i32 value
    }
    
    /*String      */
    struct ResultStr
    {
      1: ThriftResult result,
      2: string value
    }
    
    /*long      */
    struct ResultLong
    {
      1: ThriftResult result,
      2: i64 value
    }
    
    
    
    /*double      */
    struct ResultDouble
    {
      1: ThriftResult result,
      2: double value
    }
    
    /*list<string>      */
    struct ResultListStr 
    {
      1: ThriftResult result,
      2: list<string> value
    }
    
    /*Set<string>      */
    struct ResultSetStr 
    {
      1: ThriftResult result,
      2: set<string> value
    }
    
    /*map<string,string>      */
    struct ResultMapStrStr 
    {
      1: ThriftResult result,
      2: map<string,string> value
    }

         thrift_서비스. thrift 파일 에서 서비스 인터페이스 함 수 를 정의 합 니 다.
    namespace java com.wy.service.thriftservice
    
    include "thrift_datatype.thrift"
    
    service ThriftService
    {
        /*value                */
        thrift_datatype.ResultStr getStr(1:string srcStr1, 2:string srcStr2),
        thrift_datatype.ResultInt getInt(1:i32 val)
    }

     
    2. thrift 파일 에서 흔히 볼 수 있 는 문제                                                                            
  • Thrift 의 서버 쪽 과 클 라 이언 트 가 사용 하 는 통신 방식 이 같 아야 합 니 다. 그렇지 않 으 면 정상 적 인 통신 을 할 수 없습니다
  •       서버 에서 사용 하 는 작업 모드 가 TNonblockingServer 라면 이 작업 모드 에서 사용 해 야 할 전송 방식 은 TFramed Transport 입 니 다. 즉, 통신 과정 에서 tcp 의 바이트 흐름 을 하나의 프레임 으로 밀봉 합 니 다. 이 때 는 클 라 이언 트 프로그램 도 이렇게 해 야 합 니 다. 그렇지 않 으 면 통신 에 실패 합 니 다.
    ERROR [Thread-11] [AbstractNonblockingServer.java:348] - Read an invalid frame size of -2147418111. Are you using TFramedTransport on the client side?

         2.  계승 클래스 의 접근 권한 축소
          접근 권한 확대     
    Cannotreduce the visibility of the inherited method fromProcessFunction

         3.  추상 함수 존재
          추상 함수 에 빈 함수 체 를 추가 합 니 다.
    The typeTestThriftService.Processor<I>.getStr<I> must implement theinherited abstract methodProcessFunction

         4.  thrift 클 라 이언 트 가 호출 기간 에 독점 연결
          다 중 스 레 드 작업 모드 에서 Thrift 의 연결 은 서비스 호출 자 에 게 독점 되 는 것 임 을 주의해 야 합 니 다.따라서 서비스 호출 자의 효율 을 높이 기 위해 앞에서 우리 가 한 것 처럼 연결 이나 대상 을 풀 화 합 니 다.
     
    3. thrift 서비스 로그                                                                                     
       1. 완전한 RPC 콜백 과정 을 기록 하고 완전한 로그 기록 을 출력 합 니 다. (시간, 출처, 입력 매개 변수, 출력 매개 변수, 중간 에 겪 은 하위 과정, 시간 소모) 2. logid 를 도입 하여 여러 서비스 간 에 유일한 전체 과정 을 호출 하 는 근거 로 합 니 다.
       좋 은 참고 사상:http://www.cnblogs.com/mumuxinfei/p/3876190.html?utm_source=tuicool&utm_medium=referral
     
    본인 의 경험 이 유한 하기 때문에 글 에 오류 가 있 을 수 있 습 니 다. 글 을 읽 은 당신 이 지적 하거나 다른 관점 을 가지 고 공동으로 토론 하 십시오!

    좋은 웹페이지 즐겨찾기