Różnica między Apache Thrift a ZeroMQ

Rozumiem, że Apache Thrift i ZeroMQ to programy należące do różnych kategorii i nie jest łatwo zrobić porównanie, ponieważ jest to porównanie apple do orange. Ale nie wiem, dlaczego należą do różnych kategorii. Czy nie są one używane do przekazywania danych między różnymi usługami, które mogą, ale nie muszą, być napisane w różnych językach?

Kiedy należy używać Thrift i kiedy należy używać kolejki komunikatów?

Author: Joyce Babu, 2011-11-09

3 answers

Należą do różnych kategorii przede wszystkim dlatego, że są skierowane do różnych odbiorców o różnych problemach. Dlatego są lepsi w różnych rzeczach.

Apache Thrift podobny do Google Protocol Buffers ma być wysokopoziomowym, dość dobrze abstrakcyjnym sposobem przesyłania danych między procesami na różnych maszynach, być może w różnych językach. Celowo zapewniają warstwę IDL-owską do opisania wiadomości, być może z automatycznym lub półautomatyczne wersjonowanie i opcjonalne sekcje.

ZeroMQ konkretnie z drugiej strony, a nie kolejki wiadomości ogólnie (co byłoby zupełnie osobnym pytaniem), chodzi o szybkość. Skutecznie przenoszą bajty na drugi koniec. Jak najmniej przystanków po drodze. W związku z tym jesteś odpowiedzialny za serializację, wersjonowanie lub cokolwiek innego jest ważne dla Ciebie {12]} dewelopera. Oczywiście może to oznaczać złożoność, szczególnie jeśli komunikowanie się między różnymi platformami i językami, ale to część kary za brak abstrakcji.

Który wybrać? Zależy od Twojego projektu. Jeśli nie potrzebujesz absolutnej wydajności surowej, zestaw narzędzi wyższego poziomu prawdopodobnie spełni twój cel. Jeśli budujesz szybką aplikację o niskim opóźnieniu, i tak skończysz bliżej metalu.

Powodzenia

 44
Author: sdg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-12 05:09:21

Thrift definiuje jak reprezentować złożone dane, aby mogły być zapisywane i odczytywane przez różne języki (stąd ma IDL do definiowania typów, które będą transportowane). Definiuje również proste środki transportu takiego sformatowanego komunikatu między dwoma punktami końcowymi (aka transport thirft).

Z drugiej strony ZeroMQ świeci w sposób, w jaki można przenosić wiadomości między punktami końcowymi, aby uzyskać różne zachowania, takie jak jeden do jednego, jeden do wielu, wiele do wielu, i różne oczekiwania dotyczące prędkości i niezawodność takich transferów. A co do samej wiadomości to tylko blob do ZeroMQ, a aplikacje powinny znaleźć sposób na ich zakodowanie.

Więc jeśli masz złożone struktury danych, ale proste wzorce wiadomości, możesz oprzeć się na oszczędnej stronie. Jeśli masz proste dane, ale złożone wzorce wiadomości, możesz oprzeć się na ZeroMQ lub czymś takim (AMQP).

A jeśli potrzebujesz obu, możesz użyć THrift i ZeroMQ w parze, thrift sformatować wiadomość, a ZeroMQ do przetransportować.

 25
Author: Davorin Ruševljan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-14 10:28:02

Davorin wspomniał o używaniu Thrift i ZeroMQ w parze, a jeśli jesteś zainteresowany tym podejściem, sprawdź bazę kodu Thrift i poszukaj w sekcji thrift/contrib/zeromq demo Thrift przy użyciu ZermoMQ.

 7
Author: Amir Haghighat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-11 10:52:27