apache-kafka - apache pulsar vs kafka
¿Cuáles son las ventajas y desventajas de Kafka sobre Apache Pulsar? (4)
Es muy extraño que esta pregunta haya sido rechazada, ya que es una pregunta legítima que pide comparar 2 proyectos de transmisión de datos de Apache
Apache Kafka es más maduro (ha existido por más tiempo) y tiene API de nivel superior (es decir, KStreams). Es la madurez, sin embargo restringe la fluidez y la flexibilidad, es decir, ~ 500 PR abiertas en github
Apache Pulsar ha estudiado a fondo las decisiones de diseño de Apache Kafka y ha incorporado un diseño mejorado y un conjunto de capacidades interesantes, es decir, la idea de los temas de espacios de nombres , y permitir que ACL o las cuotas se apliquen en un nivel de espacio de nombres parece un bien tan profundo Idea, para proporcionar mejor soporte multi-tenancy . Algunas otras características interesantes de Pulsar son la geo-replicación , así como la unificación de colas y streaming.
Yahoo desarrolló Pulsar, el sistema de mensajería pub-sub y lo convirtió en código abierto. Ahora es el proyecto de incubación de Apache. Desde Kafka también se utiliza para el mismo propósito. Quiero saber, puntos más y menos importantes de Kafka sobre Pulsar.
Jugué un poco con ambos últimamente, y esto es lo que he reunido.
Neutral:
- Iba a hacer que Kafka ganara en la comunidad / documentación, etc. Pero no pude encontrar respuestas a las preguntas que tenía sobre Kafka fácilmente, algunas eran antiguas y confusas (dirigidas a la API heredada). Pero la documentación de Pulsar es lo suficientemente buena, los desarrolladores son muy receptivos en Slack (hola @Matteo Merli :)), y las piezas subyacentes (Zookeeper, Bookkeeper) también tienen una documentación decente si desea sumergirse en los aspectos internos.
- Kafka apunta a un alto rendimiento, Pulsar para baja latencia. Ambos proporcionan ajustes para controlarlo.
- Ambos están listos para la producción y probados en varias empresas.
Pro pulsar:
- Desde mi experiencia, la API es más fácil de usar. En Kafka, el corredor es tonto y los consumidores hacen el trabajo de estructurar las comunicaciones como mejor les parezca. Esta flexibilidad viene a cargo del usuario de Kafka que tiene que entender cómo encajar las piezas. Supongo que el beneficio deseado es una mayor flexibilidad, pero como Pulsar fue capaz de replicar la API de Kafka Consumers (y con bastante poco código), le doy eso como profesional a Pulsar.
- puede hacer cosas que no son fáciles de hacer (o tal vez imposibles en Kafka): multi-tenancy (seguridad, aislamiento ...), gestión de recursos (limitación de temas, cuotas), geo-replicación
- Tiene algunas características de las que Kafka carece actualmente, como buscar un MessageId particular
- Pulsar escala a millones de temas, mientras que Kafka está limitado por la forma en que estructura los datos en Zookeeper
- Implementación más fácil. Un Pulsar independiente iniciará su propio Zookeeper local, y personalmente encontré que la configuración es más fácil de entender
- escrito en Java, frente a una mezcla de Scala heredado y código Java. También encontré el código base bien organizado y mucho más fácil de seguir. En parte porque se basa en Zookeeper y Bookkeeper, que son proyectos externos con su propia documentación / comunidad / desarrolladores, etc. (tenga en cuenta que también están en la fundación Apache y que también vienen de Yahoo para que funcionen bien juntos).
Pro Kafka:
- Kafka tiene cosas construidas en la parte superior como Kafka Streams (nunca lo usé, así que no puedo decir si hay un equivalente)
También lea:
Necesitábamos una plataforma de transmisión con temas persistentes, una latencia razonable y un alto rendimiento. Recientemente, evaluamos si deberíamos ir con Kafka o Pulsar y, a diferencia de @nha, ahora estamos a favor de Apache Kafka. Aquí están nuestros hallazgos:
Pulsar - Pros
- rico en funciones: temas persistentes / no persistentes, multitenancy, ACL, replicación de múltiples DC, etc.
- API de cliente más flexible, incluyendo CompletableFutures, interfaces fluidas, etc.
- Los componentes del cliente java son seguros para subprocesos: el consumidor puede reconocer mensajes de diferentes subprocesos
Pulsar - Contras
- El cliente java tiene poco o ningún javadoc
- comunidad pequeña - 8 preguntas de actualmente
- Concepto de MessageId vinculado a BookKeeper: los consumidores no pueden posicionarse fácilmente sobre el tema en comparación con el desplazamiento de Kafka, que es una secuencia continua de números.
- El lector no puede leer fácilmente el último mensaje del tema; debe hojear todos los mensajes hasta el final.
- sin transacciones
- mayor complejidad operativa - Zookeeper + nodos Broker + BookKeeper - todos agrupados
- Latencia cuestionable: hay una llamada remota adicional entre el nodo Broker y BookKeeper (en comparación con Kafka)
Kafka - Pros
- javadoc muy rico y útil
- Kafka Streams
- comunidad madura y amplia
- Más sencillo de operar en producción: menos componentes: el nodo intermediario también proporciona almacenamiento
- transacciones - lecturas y escrituras atómicas dentro de los temas
- Las compensaciones forman una secuencia continua: el consumidor puede buscar fácilmente el último mensaje
Kafka - Contras
- el consumidor no puede reconocer el mensaje de un hilo diferente
- sin multitenidad
- no hay replicación Multi-DC robusta - (ofrecida en Confluent Enterprise)
No tengo una comparación directa característica por característica, aunque hemos estado escribiendo algunas publicaciones de blog que ilustran algunas de las ventajas de Apache Pulsar.
¿Por qué Apache Pulsar?
Geo-replicación