apache-kafka google-cloud-pubsub

apache kafka - Estoy evaluando Google PUB/SUB vs Kafka?



apache-kafka google-cloud-pubsub (2)

Además de que Google Pub / Sub es administrado por Google y Kafka es de código abierto, la otra diferencia es que Google Pub / Sub es una cola de mensajes (por ejemplo, Rabbit MQ) donde Kafka es más bien un registro de transmisión. No puede "releer" o "reproducir" mensajes con Pubsub.

Con Google Pub / Sub, una vez que se lee un mensaje de una suscripción y se le da ACK, se ha ido. Para tener más copias de un mensaje para ser leído por diferentes lectores, puede "expandir" el tema creando "suscripciones" para ese tema, donde cada suscripción tendrá una copia completa de todo lo que se incluye en el tema. Pero esto también aumenta el costo porque Google cobra el uso de Pub / Sub por la cantidad de datos leídos.

Con Kafka, establece un período de retención (creo que es de 7 días de forma predeterminada) y los mensajes permanecen en Kafka, independientemente de la cantidad de consumidores que lo lean. Puede agregar un nuevo consumidor (también conocido como suscriptor) y hacer que empiece a consumir desde el principio del tema cuando lo desee. También puede establecer el período de retención en infinito, y luego, básicamente, puede utilizar Kafka como un almacén de datos inmutable, como se describe aquí: http://stackoverflow.com/a/22597637/304262

Amazon AWS Kinesis es una versión administrada de Kafka, mientras que pienso en Google Pubsub como una versión administrada de Rabbit MQ. Amazon SNS con SQS también es similar a Google Pubsub (SNS proporciona el fanout y SQS proporciona la cola).

No he trabajado mucho en kafka, pero quería construir un canal de datos en GCE. Así que queríamos saber Kafka vs PUB / Sub. Básicamente, quiero saber cómo se mantiene la coherencia del mensaje, la disponibilidad del mensaje, la confiabilidad del mensaje tanto en Kafka como en Pub / sub

Gracias


Una gran diferencia entre Kafka vs. Cloud Pub / Sub es que Cloud Pub / Sub está totalmente administrado para usted. No tiene que preocuparse por las máquinas, la configuración de clústeres, los parámetros de ajuste fino, etc., lo que significa que se maneja una gran cantidad de trabajo DevOps y esto es importante, especialmente cuando necesita escalar.