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 파일 에서 흔히 볼 수 있 는 문제
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
본인 의 경험 이 유한 하기 때문에 글 에 오류 가 있 을 수 있 습 니 다. 글 을 읽 은 당신 이 지적 하거나 다른 관점 을 가지 고 공동으로 토론 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.