domingo, 3 de septiembre de 2017

Que es Apache Kafka?

Apache Kafka se ha vuelto cada vez más popular, pero porque utilizar kafka?

Apache Kafka es generalmente utilizado en arquitecturas real-time que utilizan Stream de datos, para proporcionar análisis en tiempo real. Kafka es un sistema de mensajería publicación-suscripción rápido, escalable, duradero y tolerante a fallos.

Kafka se usa en casos de uso donde JMS, RabbitMQ y AMQP no pueden ni siquiera ser considerados debido al volumen y a la capacidad de respuesta. Kafka tiene mayor rendimiento, fiabilidad y características de replicación, lo que hace que sea aplicable para cosas como el seguimiento de las llamadas de servicio (rastrea cada llamada) o el seguimiento de los datos de sensores IoT donde una MOM tradicional puede no ser considerada.

Kafka puede trabajar con Flume / Flafka, Spark Streaming, Storm, HBase, Flink y Spark para la consumo, análisis y procesamiento en tiempo real de los datos de transmisión. Kafka es un flujo de datos utilizado para alimentar bases que utiliza Hadoop para análisis BigData. Además, Kafka Streaming (un subproyecto) se puede utilizar para análisis en tiempo real.

Kafka se utiliza para procesamiento de secuencias, seguimiento de actividades de sitios web, recopilación y monitoreo de métricas, agregación de registros, análisis en tiempo real, CEP, carga de datos en Spark, administración de datos en Hadoop, CQRS, computación en memoria (microservicios).

Kafka es una plataforma de streaming distribuida que se utiliza para sistemas stream publicar-suscribirse. Kafka se utiliza para el almacenamiento tolerante a fallos. Kafka replica particiones de registro de temas en varios servidores. Kafka está diseñado para permitir que tus aplicaciones procesen registros a medida que ocurren. Kafka es rápido y utiliza IO de forma eficiente mediante el batching y la compresión de registros. Kafka se utiliza para desacoplar flujos de datos. Kafka se utiliza para transmitir datos en lagos de datos, aplicaciones y sistemas de análisis de flujo en tiempo real.

Y para colmo es compatible para varios lenguajes como C#, Java, C, Python, Ruby (entre otros)...

Kafka permite construir en tiempo real de flujo de tuberías de datos. Kafka habilita micro-servicios en memoria (es decir actores, Akka, Baratine.io, QBit, reactores, reactivos, Vert.x, RxJava, Spring Reactor). Kafka le permite crear aplicaciones de streaming en tiempo real que reaccionan a los flujos para hacer análisis de datos en tiempo real, transformar, reaccionar, agregar, unir flujos de datos en tiempo real y realizar procesamiento de eventos complejos (CEP).

Puede utilizar Kafka para ayudar en la recopilación de métricas / KPIs, agregando estadísticas de muchas fuentes e implementando la generación de eventos. Puede utilizarlo con microservices (en memoria) y sistemas de actor para implementar servicios en memoria (log de confirmación externa para sistemas distribuidos).

Puede utilizar Kafka para replicar datos entre nodos, volver a sincronizar para nodos y restaurar estado. Aunque Kafka se utiliza principalmente para el análisis de datos en tiempo real y el procesamiento de secuencias, también puede utilizarse para la agregación de registros, mensajería, seguimiento de clics, pistas de auditoría y mucho más.

En un mundo donde la ciencia de los datos y el análisis es cada vez mas utilizado, la captura de datos para alimentar las bases de datos y sistemas de análisis en tiempo real también es un gran problema. Y aqu{i es donde Kafka se vuelve muy relevante.

Dejo link: https://dzone.com/articles/what-is-kafka?edition=316422&utm_source=Zone%20Newsletter&utm_medium=email&utm_campaign=big%20data%202017-08-17
https://kafka.apache.org/