Posts

Showing posts with the label Streaming de eventos

Apache Kafka - V - Consumer Groups

Image
Versión en inglés / English version Un solo consumidor, teniendo que recibir y procesar mensajes en un solo thread , puede volverse rápidamente un cuello de botella. Este problema se acrecenta al aumentar la cantidad de topics y particiones. Kafka resuelve esta limitación permitiendo que varios consumidores repartan su carga de manera equitativa fijando el mismo valor en la propiedad group.id al momento de su creación. Haciendo esto, pasan a pertenecer al mismo consumer group . Cuando un conjunto de consumidores tiene el mismo id de grupo, un broker dentro del cluster es asignado automáticamente como el coordinador del grupo. Su objetivo será monitorear a los consumidores del grupo y llevar cuenta de su pertenencia al mismo. El coordinador del grupo también se comunica con Zookeeper para balancear consumidores y particiones: idealmente, cada consumidor leerá una partición distinta del topic . Cada consumidor envía periódicamente un heartbeat al cluster ...

Apache Kafka - IV - Consumidores

Image
Versión en inglés / English version Una aplicación consumidora básica, usando la misma biblioteca que en la parte 3 , podría ser: public class KafkaConsumerApp{ public static void main([]String args) { Properties props = new Properties(); props.put("bootstrap.servers", "BROKER-1:9092, BROKER-2:9093"); props.put("key.deserializer", "org.apache.common.serialization.StringDeserializer"); props.put("value.deserializer", "org.apache.common.serialization.StringDeserializer"); KafkaConsumer myConsumer = new KafkaConsumer(props); myConsumer.subscribe(Arrays.asList("my-topic")); try{ while (true) { ConsumerRecords<String, String> records = myConsumer.poll(100); processRecords(records); } } catch (Exception ex) { ex.printStackTrace(); } finally { myConsumer.c...

Apache Kafka - I - Arquitectura y conceptos de alto nivel

Image
Versión en inglés / English version En primer lugar, ¿qué es Apache Kafka ? Una definición inicial sería "un sistema distribuido de mensajería de alto throughput ". Descomponiendo: Alto throughput : Una traducción aproximada de throughput, en el contexto de sistemas informáticos, sería "rendimiento". Sin embargo, es necesario aclarar que cuando se habla de throughput , se está aludiendo concretamente a la cantidad de elementos procesados por unidad de tiempo. Uno de los objetivos principales de Kafka es precisamente procesar la mayor cantidad posible de mensajes por unidades de tiempo, de forma escalable y tolerante a fallas. Por ejemplo, LinkedIn , que es donde se originó Kafka, necesita lograr throughputs del orden de 20 millones de mensajes por segundo, y 3 GB de datos por segundo.. Sistema distribuido de mensajería: En un sistema distribuido genérico, múltiples computadoras en red colaboran con un objetivo en común. En el caso particular de Ka...