2017-04-12 9 views
1

아래 시나리오에서 어떤 일이 일어날 지 궁금하십니까?정의 된 Thrift API를 폐기하는 것이 가장 좋습니다.

  1. 정의 된 API는 최신 쓰루 프 서비스 정의에서 제거됩니다.
  2. 서버 측 구현이 최신 정의로 업그레이드됩니다 (즉, 제거 된 API에 대한 구현이 더 이상 없음).
  3. 일부 클라이언트는 여전히 오래된 서비스 정의를 유지하고 삭제 된 API에 대한 트래픽을 가질 수 있습니다.

더 일반적인 질문으로 기존 API를 폐기하는 것이 좋습니다 (즉 .thrift 파일에 정의 된 경우).

+0

시도한 결과 TApplicationException이 발생합니다. "org.apache.thrift.TApplicationException : 잘못된 메소드 이름 : 'xxx'at ..." – QRush

+0

"* 시간이 없습니다. 누군가 다른 사람이 나를 위해 그것을 할 수 있겠습니까? " 그런 접근 방식이 실제로 시간을 절약 할 수 있을까요? – JensG

답변

0

그건 저스트 리 전용 기능이 아닌 소프트 버전 관리의 이점 중 하나입니다. API는 시간이 지남에 따라 변경 될 수 있으며 매우 제한적인 특정 규칙이 적용되는 한 애플리케이션이 작동하는 잘 정의 된 방식이 있습니다.

Thrift와 관련하여 이러한 규칙에는 주어진 구조체 멤버 또는 인수의 특정 필드 ID 유형을 절대로 변경해서는 안됩니다. 서비스 이름과 메소드 이름도 마찬가지입니다. 숫자 필드/인수 ID와 서비스/메소드 이름은 와이어의 데이터에 사용되는 식별자입니다. 필드/인수 변화의 종류, 숫자 ID도에합니다 (IDL에서하지 주석 제거되어야 사용되지

  • 필드 및 방법을 변경해야하는 경우 이에

    ,

    언급 할 가치가 마지막 포인트는 required의 사용에 관한 것입니다) 나중에 재사용되는 것을 방지 :이 속성은 게시 된 API 구조체의 멤버, because of the way of how the required semantics work에서 제거되지 않을 수 있습니다.

    그렇지 않으면 이전 클라이언트가 새 서비스를 호출 할 때 호환성 문제가 발생합니다. 반대의 경우도 마찬가지입니다.