comparison - Diferencia entre Apache Thrift y ZeroMQ
message-queue (3)
Entiendo que Apache Thrift y ZeroMQ son softwares que pertenecen a diferentes categorías, y no es fácil hacer una comparación ya que es una comparación de manzana a naranja. Pero no sé por qué pertenecen a diferentes categorías. ¿No se usan ambos para pasar datos entre diferentes servicios, que pueden o no estar escritos en diferentes idiomas?
¿Cuándo debo usar Thrift y cuándo debo usar una cola de mensajes?
Davorin mencionó el uso de Thrift y ZeroMQ en par y, en caso de que esté interesado en ese enfoque, compruebe la base de código de Thrift y busque en thrift / contrib / zeromq una demostración de Thrift con ZermoMQ.
Pertenecen a diferentes categorías principalmente porque están dirigidas a diferentes audiencias con diferentes preocupaciones. Por lo tanto son mejores en cosas diferentes.
Apache Thrift similar a Google Protocol Buffers pretende ser un medio de alto nivel, razonablemente bien resumido para enviar datos entre procesos en diferentes máquinas, posiblemente en diferentes idiomas. A propósito, proporcionan una capa IDL-ish para describir el mensaje, tal vez con versiones automáticas o semiautomáticas y secciones opcionales.
ZeroMQ otra parte, ZeroMQ específicamente, no las colas de mensajes en general (lo que sería una pregunta completamente separada), tiene que ver con la velocidad. Ellos mueven eficientemente los bytes al otro extremo. Tan pocas paradas en el camino como sea posible. Como tal, usted es responsable de la serialización, el control de versiones o cualquier otra cosa que sea importante para usted, el desarrollador. Por supuesto, esto puede significar complejidad, especialmente si se está comunicando entre diferentes plataformas e idiomas, pero eso es parte de la pena por falta de abstracción.
¿Qué elegir? Depende de tu proyecto. Si no necesita un rendimiento bruto absoluto, un conjunto de herramientas de nivel superior probablemente le servirá perfectamente. Si está construyendo una aplicación de alta latencia y baja latencia, de todos modos va a terminar más cerca del metal.
Buena suerte
Thrift define cómo representar datos complejos para que puedan ser escritos y leídos por diferentes idiomas (por lo tanto, tiene IDL para definir los tipos que se transportarán). También define medios simples para transportar dicho mensaje formateado entre dos puntos finales (también conocido como transporte Thirft).
Por otro lado, ZeroMQ brilla de manera en que puede transportar mensajes entre puntos finales para adquirir diferentes comportamientos como uno a uno, uno a muchos, muchos a muchos y diferentes expectativas de velocidad y confiabilidad de tales transferencias. Y en cuanto al mensaje en sí, es solo un blob para ZeroMQ, y las aplicaciones deberían encontrar una forma de codificarlos.
Entonces, si tiene estructuras de datos complejas pero patrones simples de mensajería, puede apoyarse en el lado de ahorro. Si tiene datos simples pero patrones de mensajería complejos, puede apoyarse en el ZeroMQ o algo así (AMQP).
Y si necesita ambos, puede usar THrift y ZeroMQ en par, thrift para formatear el mensaje y ZeroMQ para transportarlo.