2014-06-15 2 views
3

우리는 실행 파일 중 하나에 의해 노출 된 여러 서비스를 정의하기 위해 Apache thrift (우리의 경우에는 Windows에서)를 사용합니다. 우리는 일반적으로 새 메소드로 하나의 서비스 인터페이스를 확장합니다. 그렇지 않으면 새 정의 된 "쓰레드 서비스"를 서비스하기 위해 새 스레드를 생성해야하기 때문에 (적어도 하나는)Thrift (Apache)는 동일한 스레드 풀 또는 스레드에서 다중 서비스를 사용합니다.

다중 쓰레드 서비스 정의를 처리하는 방법이 있습니까? 절약에 동일한 기본 스레드?

+1

http://stackoverflow.com/questions/6905737/id-like-to-use-multiple-ser-on-one-transport-thrift/16071414#16071414 및 http://stackoverflow.com/의 가능한 복제본 질문/19614648/service-multiplexing-using-apache-thrift – JensG

답변

1

0.9.x부터 Thrift는 일부 언어에 대해 멀티플렉싱 프로토콜을 지원합니다. 그 이후로 다른 언어에 대한 구현이 몇 가지 추가되었습니다.

평소대로 따라야 할 경로는 매우 유사합니다. 양쪽에 TMultiplexedProtocol을 전송 스택에 추가합니다. 코드베이스에는 몇 가지 예가 있습니다.

이와 함께 몇 가지 의미가 있습니다 TMultiplexedProtocol 이후

  • 이 계층 프로토콜, 모든 서비스는 같은 엔드 포인트 프로토콜 (예를 들어, 이진) 및 전송 (예를 들어, 소켓)를 공유 할 수 있습니다. 대부분의 경우 이것이 정확히 원하는 것입니다. 다른 전송 또는 엔드 포인트 프로토콜이 필요한 경우에도 여전히 다른 서비스를 설정해야합니다.

  • 멀티플렉싱 된 서버로 서버를 교체하는 것은 이론적으로 가능하지만 아직 모든 언어에 대해 완전히 구현되지는 않았습니다 (아래 참조). 자세한 내용은 THRIFT-1915에서 확인할 수 있습니다.

대하여 호환성 : 새로운 다중화는 구분 문자를 사용한다. 기존 코드는 이름에서 구분 기호가 발견되지 않을 때마다 호출되는 기본 서비스 (이전의 다중 서비스가 될 수 있음)가있는 방식으로 수정 될 수 있습니다. 기본값이 null이거나 비어 있으면 코드는 실제 솔루션과 동일하게 작동합니다.

선택한 언어에 대해 비교할 수있는 간단한 수정이 필요하고 패치를 제공하고자하는 경우 기꺼이 검토하고 통합 할 것입니다.

관련 문제