2017-02-28 6 views
0

저는 중고 안경 서버 응용 프로그램과 아파치 절약을 통해 통신하는 다른 클라이언트 응용 프로그램이 있습니다.Singleton Apache Thrift 클라이언트는 여러 클라이언트 인스턴스보다 나은가요?

3 질문 :

1 - 중고품 클라이언트를 생성하고 통신을위한 전송을 열 때 내 클라이언트 응용 프로그램에서, 그것은 더 나은 일명 (전체 응용 프로그램 수명의 싱글과 같은 클라이언트 및 전송을 다시 사용하는 것입니다 항상 켜기), 전송을 열어 두거나, 새 클라이언트를 만들고, 전송을 열어 둔화 서버에 대한 각 호출을 완료 할 때 닫는 것이 좋습니다.

2 - 왜요?

3 - 성능면에서 (동일한 클라이언트를 통해 전송 및 데이터 처리량을 열고 닫는 오버 헤드를 고려하여) 무엇이 변경됩니까?

답변

2

'1 &'2. I/O 스택이있는 단일 Thrift 클라이언트 (프로토/전송)는 단일 연결을 나타냅니다. 연결은 설정 및 분리가 비교적 비쌉니다. 따라서 클라이언트를 정기적으로 사용하는 경우 일반적으로 유지하는 것이 좋습니다. 그러나 클라이언트 객체는 대개 스레드로부터 안전하지 않으므로 응용 프로그램이 다중 스레드 인 경우 RPC 요청/응답 작업이 직렬화되도록 클라이언트에 대한 액세스를 관리해야합니다.

'3. RPC 요청을 자주하면 연결을 열고 닫으면 많은 오버 헤드가 추가되므로 일반적으로 연결을 계속 열어 두는 것이 가장 좋습니다. 반대로 RPC 요청을 거의하지 않으면 연결을 열어두면 사용하지 않을 때 서버의 리소스를 묶어 버리기 때문에 각 스파 스 요청에 대해 열거 나 닫는 것이 가장 좋습니다.

독립된 스레드별로 하나의 클라이언트를 만드는 것이 좋습니다.하지만 진정한 대답은 각 사례를 실험하고 결과를 측정하여 가장 빠르고/가장 비싼 결과를 선택하는 것입니다.