1

통신을 위해 Thrift 0.2 라이브러리를 사용하는 시스템을 업그레이드하려고합니다. 이 버전은 오히려 오래된 버전이므로 (최신 안정 0.5), 성능을 크게 향상시킬 것으로 예상됩니다 (0.4에서). 업그레이드하고 싶습니다. 그러나 기본 데이터 형식과 호환되지 않는 변경 사항이 있는지 여부에 대한 정보를 찾을 수 없었습니다. 버전 관리 체계에 따라, 사람은 거기에 없었 으면 좋겠다. 하지만 여전히 1.0 이전 버전이기 때문에 안정성에 대한 기대치가 낮을 수도 있습니다.Thrift 버전 간의 데이터 형식 호환성

데이터 형식 자체가 하위 호환성을 갖기를 희망하는 이유는 구성 요소를 하나씩 업그레이드하도록 허용하기 때문입니다.

어쨌든 : 더 많은 정보를 가진 사람이 올바른 문서를 가리킬 수 있기를 바랍니다.

+0

0.5.0으로 재생 한 후 생성 된 코드가 플러그 앤 플레이가 아닌 것으로 나타났습니다 - 구현이 확장되면서 다른 API를 사용하는 기본 클래스 -하지만 다행히도 와이어 포맷은 동일하게 보입니다 (크기는 적어도 변경되지 않았습니다) . – StaxMan

답변

2

... 바이너리 필드의 기본 데이터 유형으로 byte []를 사용하는 대신 ByteBuffer를 사용하도록 전환했습니다. 이는 비 직렬화 중에 불필요한 바이트 배열 할당과 복사본을 수행하지 않아도된다는 것을 의미합니다. 이 방법은 구식보다 2.5 배 빠르며 가비지 수집 시간을 줄이는데도 사용되지 않습니다. 업그레이드를 얻으려면 코드를 약간 변경해야하지만 여전히 가치가 있다고 생각해야합니다.

취재 "Thrift 0.4.0 Released" 문서. 관련 소스 코드 변경 : "Switch binary field implementation from byte[] to ByteBuffer".

+1

Btw; 마침내 새로운 버전의 Thrift로 게임 할 수있는 기회를 얻었습니다. 특정 부분을 변경하면 2.5 배 향상 될 수 있지만 사용 사례 읽기 부분에 대한 전반적인 향상은 + 50 %입니다 (즉, 동일한 양을 읽는 데 드는 시간이 33 % 단축되었습니다. 데이터의). 그것은 꽤 좋은 개선입니다. – StaxMan