블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 

'Binary protocol'에 해당되는 글 2

  1. 2015.04.01 grpc (google rpc)에 대한 분석 #1
  2. 2014.10.01 Thrift, Avro and Protocol Buffers
 

grpc (google rpc)에 대한 분석 #1

프로그래밍 | 2015.04.01 23:40 | Posted by 조대협

GRPC 분석 #1


앞글에서도 간단하게 GRPC에 대해서 소개했는데, 제법 괜찮은것 같아서 조금 더 분석해보기로 결정하였다.

주목할만한 특징 중의 크게 두가지가 있다.


모바일 지원 여부

먼저, 모바일이 지원된다. 안드로이드나, iOS (Object-C)를 지원하기 때문에, 모바일 클라이언트에서 호출이 가능하고, 바이너리 프로토콜을 사용하며, 하나의 Connection으로 RPC 호출을 처리하기 때문에, JSON/HTTP REST에 비해서 네트워크 대역폭 소모가 적고, 매번 커넥션을 열어야 하는 부담이 없기 때문에, 효율적이다. (속도는 당연히 빠를듯)


확인을 해봐야 겠지만, 양방향 스트리밍을 지원한다는 것을 봐서는 푸쉬같이 클라이언트쪽으로 메세지를 쏘는 기능도 가능할듯 하다.


Google Protocol Buffer 기반

안의 메세지는 구글의 PB를 기반으로 한다. PB는 Serialization 프레임웍으로, Message Q로 넘기거나, 또는 NoSQL등에 바로 저장할 수 있기 때문에, 내부 메세징 포맷으로도 바로 사용이 가능하다.


아쉬운 점은 아직까지 웹 브라우져 기반의 자바스크립트는 지원하지 않는다. (이것까지 되면, 웹 소켓까지 대체할 수 있을 듯한다. 약간 아쉬운듯)


구체적인 내용은 프로토타입핑을 해봐야 알 수 있을듯..

어쨌거나, 조금 지켜볼 필요가 있는 프레임웍인듯



Thrift에 대해서 잘 설명해놓은 글 http://thrift-tutorial.readthedocs.org/en/latest/thrift-stack.html

Thrift

RPC 지원

프로그래밍 언어 커버리지가 넓음

TLS 기반의 Secure 프로토콜 지원

Map,List 지원


PB

IDL 정의가 조금 더 직관적

"Serialize/Deserialize 전용 (Message 정의용) :그래서 다른 Transport 프로토콜이 필요함"-다른 Protocol을 통해 Tunneling 함 (HTTP,AMQP,심지어 Thrifit까지,Netty의 경우 확장 플러그인이 있음)

Map,List등을 지원하지 않음