2011-10-12 18 views
13

Veo Thrift y Protocol Buffers mencionado mucho, pero realmente no entiendo para qué se usan. Desde mi punto de vista limitado, básicamente se usan cuando se desea realizar una serialización en varios idiomas, es decir, cuando se tienen estructuras de datos en un idioma que se desean enviar a otro programa escrito en otro idioma.¿Para qué se utilizan las memorias intermedias Apache Thrift y Google Protocol?

¿Es esto correcto? ¿Se usan para cualquier otra cosa?

(de mi nuevo entendimiento limitado, creo Ahorro y tampones protocolo son básicamente dos versiones diferentes de la misma cosa - no dude en corregirme o elaborado.)

+2

Son unos formatos de mensaje "escrito" para la codificación binaria de manera eficiente un conjunto de tipos de datos primitivos (sin necesidad de un codificador de encargo explícito ya que emplean generadores de mensajes). Útil como mecanismo de intercambio o almacenamiento (serialización). Dado que el formato está bien definido, se puede compartir entre los idiomas (dada la existencia de una implementación), compartido por procesos remotos que utilizan el mismo idioma o utilizado para la serialización (o lo que sea) en un solo proceso. Y sí, están luchando efectivamente por el mismo mercado (así como por Avro y otros). –

+0

Creo que estos deberían estar vinculados: [¿Las diferencias más grandes de Thrift versus Protocol Buffers?] (Http://stackoverflow.com/q/69316/320399) – blong

Respuesta

18

Son protocolos de serialización, principalmente. Cada vez que necesite transferir datos entre máquinas o procesos, o almacenarlos en un disco, etc., debe ser serializado.

XML/JSON/etc trabajar bien, pero tienen ciertos gastos generales que los hacen indeseables - además de las características limitadas, que son relativamente grandes y caros computacionalmente para procesar en cualquier dirección. El tamaño puede mejorarse por compresión, pero eso agrega aún más al costo de procesamiento. Tienen la ventaja de ser legibles por los humanos, pero la mayoría de los datos no son leídos por humanos.

Ahora la gente podía edades pasa las escrituras manualmente formatos tediosas, Bugs-montados, sub-óptimo, no portátiles que son menos detallado, o pueden utilizar formatos de serialización de propósito general bien probados que están bien documentados, multiplataforma, de bajo costo y diseñada por personas que gastan ahora demasiado tiempo preocupándose por la serialización para ser amigables, por ejemplo, tolerante a la versión. Idealmente, también permitiría una capa de descripción neutral de plataforma (piense en "wsdl" o "mex") que le permita decir fácilmente "así es como se ven los datos" a cualquier otro desarrollador (sin saber qué herramientas/lenguaje/plataforma están usando), y hacer que consuman los datos sin problemas sin escribir un nuevo serializador/deserializador desde cero. .

Eso es donde protobuf y el ahorro vienen en

En la mayoría de los casos al volumen se refiere, no me habría importado esperar que ambos extremos para estar en la misma tecnología en la misma empresa: simplemente, necesitan obtener datos de A a B con el mínimo esfuerzo y sobrecarga, o necesitan almacenarlo y volver a cargarlo más tarde (por ejemplo, usamos protobuf dentro de blobs de redis como caché secundaria).

+4

¿Son esencialmente como Json o XML pero en formato binario? – Gautam

+4

@GautamK esencialmente, sí. –

+2

Gracias, Esta respuesta realmente resolvió muchas dudas que tenía. – Gautam

Cuestiones relacionadas