2011년 1월 17일 월요일

using thrift

thrift 는 간단히 말하면, IDL 을 정의해서, 서버/클라이언트간 통신을 손쉽게 해주는 소스 생성기 입니다. RPC 라이브러리라고 생각해도 됩니다.
놀라운 것은 C++이외에도 많은 언어를 지원해줍니다.
C#,ErLang,OCaml,Haskell,Java,C/Cocoa,PHP,Python,Perl,Ruby까지~
기본적인 async operation도 지원합니다.
게다가,Binary Protocol과 JSon Protocol을 모두 지원하네요.

아쉬운 점은 thrift 자체가 robust한 서버를 위한 것은 아니라서,
외부 인터넷 클라이언트가 접속하는 서버용은 아니라는 점이죠.
향후 발전 되길 바라구요.
아직 알아보지 못했지만, protocol header 와 protocol의 내용의 암/복호화를
정의할 수 있어야 할텐데, 가능한지 아직 모르겠네요.

어쨌든, 서버 프로세스간 통신하기에는 안성맞춤입니다.
트위터가 사용한 flockdb에서도 thrift를 사용했습니다.

사용방법도 매우 간단합니다.

http://wiki.apache.org/thrift/ThriftUsageC%2B%2B

MacOSX에서의 설치도 간단한 편입니다.
boost의 설치가 먼저 필요합니다.
http://wiki.apache.org/thrift/ThriftInstallationMacOSX

haskell binding은설치하다가 에러가 납니다.
haskell을 굳이 쓰지 않는다면,
lib/Makefile에서 hs부분을 제거하고 설치하시면 됩니다.

Nonblocking Socket방식의 통신을 원한다면,
libevent를 설치해야 합니다.
http://monkey.org/~provos/libevent/

flockdb를 사용하기 위해서는 thrift 0.2.0을 사용해야 하네요.
조심하시길..

저도 앞으로 서버간 통신에는 thrift를 사용하려고 합니다.
제가 아쉬웠던 점을 commit할 수 있는 영광이 있으면 더 좋겠네요. ^^

도움이 되셨다면, 광고 클릭을 ㅎㅎ ^^