2012-03-16 13 views
47

Głównym celem firmy Thrift jest umożliwienie wydajnej i niezawodnej komunikacji w językach programowania. ale myślę, że HTTP-RPC może to zrobić, programista stron internetowych prawie każdy wie, jak pracować na http i łatwiej jest zaimplementować HTTP-RPC (json) niż Thrift,Dlaczego oszczędzać, dlaczego nie HTTP RPC (JSON + gzip)

Może Thrift-RPC jest szybszy, to kto może powiedz mi różnicę w ich perfekcji?

Odpowiedz

88

kilka powodów innych niż prędkość:

  1. Thrift generuje kod klienta i serwera w całości, w tym struktur danych jesteś przejazdem, więc nie mamy do czynienia z czymś innym niż pisanie teleskopowe i wywoływanie klienta. i wszystko, łącznie z parametrami i zwrotami, jest automatycznie sprawdzane i analizowane. więc dostajesz kontrolę stanu zdrowia danych za darmo.

  2. Thrift jest bardziej kompaktowy niż HTTP i może być łatwo rozszerzona na wsparcie rzeczy jak szyfrowanie, kompresja, nie blokując IO itp

  3. Thrift może być skonfigurowany do korzystania z protokołu HTTP i JSON dość łatwo, jeśli chcesz go (powiedz, jeśli twój klient jest gdzieś w Internecie i musi przepuścić firewalle)

  4. Thrift obsługuje stałe połączenia i unika ciągłych uścisków dłoni TCP i HTTP, które powoduje HTTP.

Osobiście używam zapobiegliwości do wewnętrznej sieci LAN RPC i HTTP, kiedy muszę połączeń z zewnątrz.

Mam nadzieję, że to wszystko ma dla ciebie sens. Możesz przeczytać prezentację dałem o oszczędności tutaj:

http://www.slideshare.net/dvirsky/introduction-to-thrift

Ma linki do kilku innych alternatyw dla oszczędności.

+0

Świetna odpowiedź Dvir! Bardzo lubię też Oszczędzanie i wolę go w większości przypadków. Największą trudnością jest zainstalowanie kompilatora Thrift, ale po zrobieniu i połączeniu z odpowiednią wtyczką maven, jesteś gotowy. Kompaktowy kod serwera/klienta, który jest potrzebny, jest niesamowicie seksowny! –

+0

@JacoVanNiekerk dziękuję, skompilowałem oszczędzanie tyle razy, że wydaje mi się banalne :). Największą wadą z mojej perspektywy jest to, że serwery Pythona nie grają tak ładnie z oszczędnością, z ograniczeniami GIL (w rzeczywistości jeden z serwerów Pythona w oszczędzaniu jest conrupibution, który zrobiłem, który próbuje rozwiązać ten problem). ale dla C++ lub Java jest po prostu niesamowity. –

+1

Większość klientów HTTP obsługuje również funkcję podtrzymywania aktywności :) – Xorlev

5

Oto dobry zasób porównania wydajności różnych serializers: https://github.com/eishay/jvm-serializers/wiki/

Speaking konkretnie Thrift vs JSON: Thrift wydajność jest porównywalna do najlepszych bibliotek JSON (Jackson, protostuff), a także w odcinkach rozmiar jest nieco niższa.

IMO, najsilniejsze cechy oszczędnościowe to wygodne, interoperacyjne wywołania RPC i wygodna obsługa danych binarnych.

Powiązane problemy