En este artículo exploramos Apache Pulsar. En qué consiste este bróker de mensajería, qué ventajas ofrece y en qué se diferencia de tecnologías como Apache Kafka para Big Data.
Contenidos
¿Qué es Apache Pulsar?
Apache Pulsar es un sistema de mensajería de tipo Pub-Sub desarrollado y mantenido por la Apache Software Foundation como proyecto open source. La empresa StreamNative ofrece soporte y Pulsar como servicio. Las características más destacables son su alta escalabilidad y rendimiento. Además incorpora replicación geográfica y multi-tenancy.
Pulsar proporciona funciones (llamadas Pulsar Functions) que permiten implementar la lógica de procesamiento en los lenguajes de programación Java, Python y Go sin necesidad de depender de otras tecnologías como Spark o Storm. Estas funciones son similares a Kafka Streams. La diferencia es que ejecutan en el mismo broker.
Es posible desplegar Apache Pulsar en contenedores mediante Kubernetes y puede usarse como un bróker de mensajería, como hace Apache Kafka. Algunos de los casos de uso más frecuentes son como sistema de notificaciones, agregador de logs o como cola de trabajos.
Rendimiento
Apache Pulsar consigue latencias muy bajas (hasta 5ms) y un rendimiento de hasta 1 millón de mensajes por segundo según las pruebas de rendimiento realizadas. Además, garantiza que se cumple la entrega y el orden de los mensajes.
Escalabilidad
Es un sistema fácilmente escalable, en el que para aumentar la capacidad basta con añadir más nodos al clúster, que se usarán para distribuir los datos.
Pulsar también proporciona la capacidad para distribuir geográficamente el sistema en varios datacenters y así replicar sus datos. Se puede usar para soportar estrategias de disaster recovery de una manera sencilla desde el inicio.
Además de una alta escalabilidad, Apache Pulsar proporciona multi-tenancy: esto implica que varios servicios y clientes pueden compartir el mismo sistema. Para ello, Pulsar también ofrece y usa mecanismos de autenticación y autorización para proteger su seguridad y sus accesos a los datos.
Apache Pulsar vs Apache Kafka
En la actualidad, muchos ingenieros y arquitectos de datos se preguntan sobre los pros y contras de Apache Pulsar y cuándo es una buena opción frente a Apache Kafka. Es interesante desarrollar las diferencias más notables entre estas dos tecnologías.
1. Distribución de los Datos
Las diferencias principales entre estos dos sistemas de mensajería es la forma que tienen de distribuir los datos.
Pulsar consigue mantener los datos más balanceados que Kafka. En Kafka, todos los datos de una partición se encuentran en un bróker (nodo del sistema) y por tanto, su capacidad está limitada por el propio bróker en el que se encuentra.
Cuando se intenta escalar, es necesario realizar una operación de rebalanceo. Aunque no es obligatorio, si esta operación no se realiza, los datos podrían quedar distribuidos de una manera desbalanceada, y por tanto, no mantener todas las ventajas del sistema.
Pulsar, sin embargo, divide los datos de cada partición también en segmentos. Estas unidades son más pequeñas y se distribuyen de manera balanceada entre los brókers. Con esto, Pulsar consigue hacer innecesarias las operaciones de rebalanceo de datos y también que la capacidad no esté limitada por el bróker, ahorrando mantenimiento y carga adicional.
2. Replicación
En cuanto a replicación, Apache Kafka permite conseguir replicación geográfica con la herramienta externa Kafka Mirror Maker, lo que supone mantener un proceso adicional aparte del sistema principal. En Pulsar, la replicación geográfica está incorporada. Esto permite replicar datos entre datacenters, aumentando su disponibilidad.
Además, el algoritmo que usa Pulsar para la replicación está basado en quorum, no en líderes y seguidores como ocurre en Kafka. Este algoritmo disminuye las latencias y los tiempos de respuesta.
3. Seguridad
En cuanto a seguridad, Pulsar ofrece multi-tenancy, lo que permite a varios grupos de usuarios compartir el clúster. Es posible configurar control de acceso y distintos espacios de nombres (namespaces).
También, Pulsar incorpora cifrado completo extremo a extremo (end-to-end): entre los clientes y el almacenamiento. Esto no se encuentra disponible actualmente en Kafka.
Ejemplo de código para empezar con Apache Pulsar
A continuación tienes un ejemplo de código en Python que muestra cómo utilizar Apache Pulsar para crear un productor y consumidor de mensajes:
# Importa la librería de Apache Pulsar para Python from pulsar import Client # Crea una conexión al broker client = Client('pulsar://localhost:6650') # Crea un productor que envía mensajes a un topic producer = client.create_producer('my-topic') # Envía un mensaje al topic producer.send('Hola Mundo') # Crea un consumidor que recibe los mensajes del topic consumer = client.subscribe('my-topic') # Recibe un mensaje del topic message = consumer.receive() # Muestra el mensaje print(message.data()) #
ACK del mensajeconsumer.acknowledge(message) # Cierra el productor y el consumidor producer.close() consumer.close()
En este ejemplo se importa la biblioteca de cliente Python de Apache Pulsar y se crea una conexión al broker. Luego se crea un productor que envía mensajes a un topic y se envía un mensaje. Se crea un consumidor que recibe mensajes del tópico, se recibe un mensaje, se imprime y se confirma su recepción. Finalmente, se cierran el productor y el consumidor.
Conclusión Apache Pulsar
A menudo elegimos Apache Kafka como la tecnología que incluir en nuestros sistemas de streaming sin detenernos a analizar alternativas u otras opciones.
Apache Pulsar ofrece muchas ventajas únicas frente a tecnologías como Apache Kafka. Entre estas ventajas se encuentra la geo-replicación, brokers sin estado y multi-tenancy.
Debido a estas ventajas, podemos concluir que Apache Pulsar es un sistema más fácil de escalar y más flexible que Apache Kafka. Sin embargo, es una apuesta más arriesgada, puesto que debemos también tener en cuenta factores muy importantes como su madurez, la comunidad de desarrollo, de soporte y sus herramientas open source para tomar la decisión correcta en nuestro caso particular.
Siguiente Pasos y Formación
Aquí tienes dos cursos con los que podrás aprender Apache Pulsar y Apache Kafka desde cero. Muy recomendados:
Mejores libros de procesamiento en streaming:
Si estás interesado en otras tecnologías similares, puedes ver la entrada sobre RabbitMQ.
Preguntas Frecuentes – FAQ
¿Para qué se usa Apache Pulsar?
Apache Pulsar es un sistema de mensajería distribuido open source con muy baja latencia usado para agregar mensajes y datos en Big Data. Los casos de uso más comunes son sistema de notificaciones y agregador de logs.
¿Qué diferencias existen entre Pulsar y Kafka?
Pulsar mantiene los datos más balanceados en sus brokers que Apache Kafka. Además, tiene replicación geográfica integrada, convirtiéndolo en un sistema más flexible y escalable que Kafka.
A continuación el vídeo-resumen. ¡No te lo pierdas!