간단한 학습 Thrift

2132 단어
thrift는 RPC 프레임워크로 일반적으로 원격 인터페이스 호출을 제공하는 데 사용된다. 즉, 서버로서 다른 클라이언트를 호출하는 것이다. 이 클라이언트는 다른 서버를 가리킬 수도 있다.예를 들어 많은 전자상거래 백엔드는 논리와 서버로 나뉘어 많은 공용 모듈을 하나의 서비스로 하고 대외적으로 인터페이스를 제공하여 다른 모듈을 호출할 수 있다.

1.thrift 설치


https://thrift.apache.org/docs/BuildingFromSource

2thrift 설명 파일


thrift는protobuffer와 유사하여 서열화 방식을 제공합니다. 먼저 설명 파일을 정의해야 하고,thrift는 정의를 해야 합니다.thrift 파일.형식은 다음과 같습니다.
struct Info {
1:requred i32 uid,
2:optional i32 age,
}
service nameserver {
i32 getAge(1:i32 uid);
}

위 코드에서 i32는 int32비트 즉 네 바이트를 나타내고 i64 Info는 사용자 정의 형식입니다.required는 이 필드에 값을 부여해야 하고,optional은 있어도 되고 없어도 된다는 것을 표시합니다.서비스는 대외 인터페이스를 정의하는 서비스 모듈을 표시합니다.1:i32uid는 첫 번째 인자가 int 인자 이름이 uid라는 것을 나타낸다.이 함수의 반환값은 i32비트입니다.

3 구체적인 사용


thrift는 C++/python/java/erlang/perl 등 다양한 언어를 지원합니다.구체적인 언어 코드를thrift 도구를 통해 생성해야 합니다.C++를 예로 들면 (또한 blade는thrift 컴파일도 지원합니다):
thrift --gen cpp test.thrift

gen-cpp 디렉터리를 생성하고 디렉터리에 생성된 파일을 저장합니다. 각각thrift 파일은 다음과 같은 네 개의 파일을 생성합니다.
{thrift_name}_constants.h,{thrift_name}_constants.cpp,{thrift_name}_types.h,{thrift_name}_types.cpp######
서비스가 있는thrift 파일에 대해 두 개의 파일을 추가로 생성합니다. 각각
{service_name}.h, {service_name}.cpp######
서비스가 있는thrift 파일에 사용할 수 있는 서버 말뚝이 생성됩니다: {service_name}._server.skeleton.cpp** {thrift_name}_types는 사용자 정의 유형에 대한 구체적인 실현입니다.일반적으로 다른 파일은 이 형식을 사용해야 하며, 헤더 파일만 인용하면 된다.사용자 정의 유형을 사용할 때 {thrift_name}_ 보기types.h가 발견하고,
typedef struc _Info_isset {
  _Info_isset():age(false) {}
  bool age:1;
}_Info__isset;
_Info_isset __isset;

thrift는required와optional을 구분하기 위해 필드가optional로 설정되어 있다면.Info에는 멤버 변수 __ 가 있습니다.isset;안에 있는 age는 false로 Info를 나타냅니다.age는 값을 부여하지 않았습니다.true는 값을 표시합니다.사용자 정의 필드의 기본 구성원 속성은 모두public입니다. 대상을 통해 직접 접근할 수 있지만 옵션의 필드: 1) Info의 속성 정보에 접근해야 합니다. 통과할 수 없습니다Info info; int b = info.age info.__ 의 경우 이 필드가 기본값인지 먼저 체크해야 합니다.isset.age =false, 기본값 0입니다.2) 필드 값을 수정하려면 info를 직접 사용할 수 없습니다.age = 25, info.__ 필요set_age()에서 수정합니다. 이 함수에서도 info.__isset.age의 값입니다.thrift는 다른 __set_age () 를 수정하면 전송 과정에서 age의 값이 기본값으로 복원됩니다.

좋은 웹페이지 즐겨찾기