2016-07-22 5 views
1

몇 가지 다른 메시징 및 RPC 시스템을 사용한 후에 나는 궁극적으로 항상 전통적인 RPC, 푸시 이벤트가 필요하다는 결론에 도달했습니다. 그렇지 않으면 필연적으로 폴링 해킹으로 끝납니다.콜백을 허용하는 Thrift 스타일의 RPC 시스템이 있습니까?

예를 들어, HTTP는 원래 RPC 스타일의 메소드 만 지원했습니다 (GET 및 POST는 즉시 응답을 반환합니다). 사람들은 푸시 이벤트가 필요하므로 긴 폴링을 사용하여 해킹 당했다는 것을 알게되었습니다. 결국 이것은 Server-Sent Events으로 수정되었습니다.

CoAP (HTTP의 경량 UDP 기반 버전)는 GET 요청에 'monitor'옵션을 추가하여 푸시 이벤트를 지원합니다. 꽤 우아한 솔루션입니다.

그러나 둘 다 Thrift 스타일의 RPC로 인터페이스 정의 파일을 작성한다는 의미는 아니며 인터페이스를 원하는 언어로 기본 코드로 컴파일하는 도구가 있습니다. 그 후 원격 프로 시저를 마치 로컬 프로세스 인 것처럼 거의 호출 할 수 있습니다.

제 질문은 푸시 이벤트에 가입하고 이벤트가 도착하면 콜백 (call call)을 호출 할 수있는 Thrift 스타일 RPC 시스템이 있습니까?

+0

당신이 GRPC 봤어? 콜백을 기반으로합니다 (가입 모델 일 필요는 없지만 하나의 핸들러 만 가질 수 있다고 생각하기 때문에). 그리고 protobuf를 지원하고 있으며, 이제는 FlatBuffers도 지원하기 시작했습니다. – Aardappel

답변

1

예 :

  • gRPC 실제로 각 방향에서 여러 메시지를 포함 할 수있는 하나의 논리적 RPC 호출을 의미한다 "스트리밍"을 지원합니다.
  • Cap'n Proto은 연결의 양쪽에서 개체 참조를 다른쪽에 보내고 호출 할 수있는 개체 기능을 지원합니다. 예를 들어, 클라이언트는 서버에서 메소드를 호출하고 메소드 매개 변수 중 하나로서 콜백 객체를 제공 할 수 있습니다. 콜백 객체는 미리 정의 된 RPC 인터페이스를 구현합니다. 서버가 콜백 객체를 호출하면 클라이언트가 다시 콜백 객체를 호출합니다. 실제로 Cap'n Proto 연결은 완전히 대칭입니다. 클라이언트와 서버 간의 프로토콜 수준에는 차이가 없습니다.

(공시 : 나는 캡의 프로토의 저자, ​​나는이 gRPC와 제휴하지 오전하지만, 또한 프로토콜 버퍼 (V2)의 저자이다.)

+0

완벽한, 감사합니다! – Timmmm