Thrift 프레임 워 크 소개

4393 단어 중간 부품

1.머리말
Thrift 는 언어 를 뛰 어 넘 는 서비스 배치 프레임 워 크 로 페 이 스 북 이 2007 년 에 개 발 했 고 2008 년 에 아파 치 오픈 소스 프로젝트 에 들 어 갔다.Thrift 는 중간 언어(IDL,인터페이스 정의 언어)를 통 해 RPC 의 인터페이스 와 데이터 형식 을 정의 한 다음 컴 파 일 러 를 통 해 서로 다른 언어의 코드(현재 C+,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C\#,Cocoa,Smalltalk,OCaml 지원)를 생 성하 고 생 성 된 코드 로 RPC 프로 토 콜 층 과 전송 층 의 실현 을 책임 집 니 다.
본 고의 조직 구 조 는 다음 과 같다.1)인용 2)구조 3)지원 하 는 데이터 전송 형식,데이터 전송 방식 과 서비스 모델 4)Thrift 설치 5)Thift 배치 서비스 이용
thrift 사용 방법 에 대한 소 개 는 이 글 을 참고 하 십시오:Thrift 사용 지침.
thrift client 와 server 의 작성 방법 에 대해 서 는 이 글 을 참고 하 십시오:Thrift RPC 를 사용 하여 프로그램 을 작성 합 니 다.
Thrift 내부 실현 원리 에 대해 참고 할 수 있 습 니 다.Thrift 내부 실현 원 리 를 말씀 드 리 겠 습 니 다.
2.구조
Thrift 는 실제 적 으로 C/S 모드 를 실현 하고 코드 생 성 도 구 를 통 해 인터페이스 정의 파일 을 서버 와 클 라 이언 트 코드(서로 다른 언어 로 사용 할 수 있 음)를 생 성하 여 서버 와 클 라 이언 트 의 언어 간 지원 을 실현 합 니 다.사용 자 는 Thirft 설명 파일 에서 자신의 서 비 스 를 설명 합 니 다.이 서 비 스 는 컴 파일 을 거 친 후에 해당 언어의 코드 파일 을 생 성 한 다음 에 사용자 가 서비스(클 라 이언 트 호출 서비스,서버 에서 서 비 스 를 제공)를 실현 하면 됩 니 다.그 중에서 protocol(프로 토 콜 층,데이터 전송 형식 을 정의 하고 바 이 너 리 나 XML 등)과 transport(전송 층,데이터 전송 방식 을 정의 하고 TCP/IP 전송,메모리 공유 또는 파일 공유 등)는 런 타임 라 이브 러 리 로 사 용 됩 니 다.위의 그림 의 상세 한 해석 은 인용 을 참고 한다[1].
3.지원 하 는 데이터 전송 형식,데이터 전송 방식 과 서비스 모델
(1)지원 하 는 전송 형식
TBinaryProtocol–바 이 너 리 형식.
TCompactProtocol–압축 형식
TJSONPROCOL–JSON 형식
TSimple JSONprotocol–JSON 은 프로 토 콜 만 쓰 고 생 성 된 파일 은 스 크 립 트 언어 로 쉽게 해석 할 수 있 습 니 다.
TDebugProtocol–debug 에 편리 하도록 읽 기 쉬 운 텍스트 형식 을 사용 합 니 다.
(2)지원 하 는 데이터 전송 방식
TSocket-블록 식 socker
TFramedTrans
port–frame 단위 로 전송 되 며,비 차단 식 서비스 에서 사용 합 니 다.
TFileTransport–파일 형식 으로 전송 합 니 다.
Tmemory Transport-메모 리 를 I/O.java 구현 시 내부 에 실제 적 으로 간단 한 ByteArray OutputStream 을 사 용 했 습 니 다.
TZlibTransport–zlib 를 사용 하여 압축 하여 다른 전송 방식 과 공동으로 사용 합 니 다.현재 자바 구현 이 없습니다.
(3)지원 하 는 서비스 모델
TSimple Server–간단 한 단일 스 레 드 서비스 모델 로 테스트 에 자주 사 용 됩 니 다.
TThreadPoolServer–다 중 스 레 드 서비스 모델,표준 블록 식 IO 를 사용 합 니 다.
TNonblockingServer–다 중 스 레 드 서비스 모델,비 차단 식 IO 사용(TFramed Transport 데이터 전송 방식 사용)
4.Thrift 설치
다운로드:http://incubator.apache.org/thrift/download/
설치 요구:
유 닉 스/linux 시스템,windows+cygwin
C++언어:g+,boost
자바 언어:JDK,Apache Ant
다른 언어:파 이 썬,PHP,펄 등...
컴 파일 설치:./configure–make–make install
1.Thrift 배치 서비스 이용
주요 프로 세 스:서비스 설명 을 작성 하여.thrift 파일 에 저장 합 니 다–필요 에 따라.thrift 파일 을 컴 파일 하고 해당 하 는 언어 소스 코드 를 생 성 합 니 다–실제 수요 에 따라 client 엔 드 와 server 엔 드 코드 를 작성 합 니 다.
(1).thrift 파일 작성
일반적으로 서 비 스 를.thrift 파일 에 넣 습 니 다.서비스의 작성 문법 은 C 언어 문법 과 대체적으로 일치 합 니 다.thrift 파일 에는 주로 다음 과 같은 몇 가지 내용 이 있 습 니 다.변수 성명,데이터 성명(struct)과 서비스 인터페이스 성명(service,다른 인 터 페 이 스 를 계승 할 수 있 습 니 다).
다음은 Thrift 의 tutorial 에 있 는 예 tutorial.thrift 를 분석 합 니 다.
헤더 파일 포함:
59 줄:include"shared.thrift"–
대상 언어 지정:
65 줄:namespace cpp tutorial–
정의 변수:
80 줄:const i32 INT32CONSTANT=9853–
정의 구조 체:
103 줄:struct Work{
1: i32 num1 = 0,
2: i32 num2,
3: Operation op,
4: optional string comment,
} —
정의 서비스:
service Calculator extends shared.SharedService {
void ping(),
i32 add(1:i32 num1, 2:i32 num2),
i32 calculate(1:i32 logid, 2:Work w) throws (1:InvalidOperation ouch),
oneway void zip()
}
        C++  :./thrift --gen cpp tutorial.thrift,       gen-cpp   
        java  :./thrift --gen java tutorial.thrift,       gen-java   
      ….. 

(2)client 단 과 server 단 코드 작성
client 단 과 sever 단 코드 는 컴 파일.thrift 에서 생 성 된 중간 파일 을 호출 합 니 다.
다음은 cpp 파일 아래 의 CppClient.cpp 와 CppServer.cpp 코드 를 분석 합 니 다.
클 라 이언 트 쪽 에 서 는 사용자 가 Calculator Client 형식의 대상(사용자 가.thrift 파일 에서 설명 한 서비스 이름 이 Calculator 이면 생 성 된 중간 코드 의 주 류 는 Calculator Client)입 니 다.이 대상 에 서 는 각종 서 비 스 를 패키지 하여 직접 호출 할 수 있 습 니 다(예 를 들 어 client.ping().그리고 thrift 는 포 장 된 rpc 를 통 해 server 쪽 의 같은 이름 의 함 수 를 호출 합 니 다.
server 쪽 에 서 는 클 라 이언 트 가 보 낸 요청 을 처리 하기 위해'thrift 파일 에 설 명 된 서비스 에 있 는 모든 기능 을 실현 해 야 합 니 다.
[참고 자료]1.http://wiki.apache.org/thrift/ 2、 http://jnb.ociweb.com/jnb/jnbJun2009.html 3、 http://blog.rushcj.com/tag/thrift/ 4、 http://www.vvcha.cn/c.aspx?id=31984 5、 http://www.thoss.org.cn/mediawiki/index.php/Thrift%E7%9A%84%E9%80%9A%E4%BF%A1%E6%9C%BA%E5%88%B6%E5%8F%8A%E5%85%B6%E5%9C%A8cassandra%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8
동 블 로그
원본 링크 주소:http://dongxicheng.org/search-engine/thrift-framework-intro/

좋은 웹페이지 즐겨찾기