TechBriefly ES
  • Tech
  • Business
  • Geek
  • How to
  • about
    • About Tech Briefly
    • Terms and Conditions
    • Privacy Policy
    • Contact Us
No Result
View All Result
TechBriefly ES
No Result
View All Result
Home Tech
Utilización de la aplicación Kafka: cómo usar subprocesos múltiples para los consumidores de Kafka

Utilización de la aplicación Kafka: cómo usar subprocesos múltiples para los consumidores de Kafka

byTechBriefly Newsroom
21/06/2022
in Tech
Reading Time: 7 mins read
Share on FacebookShare on Twitter

Apache Kafka es un almacenamiento de datos distribuido diseñado para la entrada y el procesamiento de datos de transmisión en tiempo real. La transmisión de datos es información generada continuamente por miles de fuentes de datos, todas las cuales transmiten registros de datos al mismo tiempo. Una plataforma de transmisión debe ser capaz de hacer frente a la entrada constante de datos y procesarlos de forma secuencial y progresiva.

¿Qué es Multithreading y por qué lo necesitamos?

La capacidad de una unidad central de procesamiento (CPU) (o un solo núcleo en un procesador multinúcleo) para proporcionar muchos subprocesos de ejecución al mismo tiempo, respaldados por el sistema operativo, se conoce como subprocesos múltiples. Los subprocesos múltiples se pueden usar para mejorar la velocidad de la aplicación en instancias en las que el trabajo se puede dividir en unidades más pequeñas que pueden operar en paralelo sin comprometer la consistencia de los datos. Kafka le permite hacer crecer su sistema distribuido mediante el uso de particiones, que son subconjuntos ordenados de mensajes en un tema.

Recientemente notó una tendencia en la que los desarrolladores, en lugar de garantizar que un cómputo pueda procesar eficientemente los datos de una sola partición, toman la ruta fácil de expandir las particiones/vms para obtener el rendimiento necesario. Es el equivalente a tirar dinero al problema.

Los temas de Kafka dividen los registros en partes más pequeñas llamadas particiones, que se pueden procesar individualmente sin comprometer la precisión de los hallazgos, sentando las bases para el procesamiento paralelo. Esto se logra comúnmente escalando, lo que implica el uso de muchos consumidores dentro del mismo grupo, cada uno de los cuales procesa datos de un subconjunto de particiones de temas y opera en un solo subproceso.

Porque leer y procesar mensajes en un solo hilo es suficiente para la mayoría Casos de uso de Kafkael apache consumidor kafka El paradigma de subprocesamiento es ampliamente utilizado. El ciclo de sondeo funciona sin problemas cuando el procesamiento no requiere actividades de E/S.

  Elon Musk podría renunciar como CEO de Twitter: FLOKI surge después de la pista

Consumidores de Kafka

Los consumidores que compran Kafka suelen hacerlo como parte de un grupo. Cuando muchos consumidores se suscriben a un tema y son miembros del mismo grupo de consumidores, cada consumidor recibe mensajes de un subconjunto de las particiones del tema.

Agregar consumidores adicionales a un grupo de consumidores es la técnica más común para escalar el consumo de datos de un tema de Kafka. Los consumidores de Kafka realizan con frecuencia acciones de alta latencia, como escribir en una base de datos o realizar un cálculo lento en los datos. Cuando un solo consumidor no puede seguir el ritmo al que fluyen los datos en un tema, escalamos agregando más consumidores que comparten la carga haciendo que cada consumidor posea solo un subconjunto de las particiones y los mensajes.

Beneficios de los subprocesos múltiples

Multithreading permite que muchas partes de un programa se ejecuten al mismo tiempo. Los subprocesos son procesos ligeros disponibles dentro del proceso. Multithreading permite realizar múltiples tareas para aprovechar al máximo la CPU.

Las siguientes son algunas de las ventajas de la programación multiproceso:

Compartir recursos

Los recursos de un proceso, incluida la memoria, los datos y los archivos, se comparten entre todos los subprocesos. Al compartir recursos, un solo programa puede tener varios subprocesos en el mismo espacio de direcciones.

Sensibilidad

La capacidad de respuesta del programa permite que un programa continúe funcionando incluso si una parte del mismo se detiene debido a subprocesos múltiples. Si el proceso está haciendo una operación larga, esto también se puede hacer.

  ¿Cómo reparar el código de error de Roblox 0 "Error de autenticación fallida"?

Arquitectura multiprocesador

Los subprocesos múltiples permiten que cada subproceso en una arquitectura multiprocesador se ejecute en un procesador diferente en paralelo. Esto mejora la concurrencia del sistema. En un sistema de un solo procesador, solo se puede ejecutar un proceso o subproceso a la vez.

¿Qué es el subproceso por modelo de consumidor?

Se crea una instancia de cada subproceso y se conecta al agente de Kafka en el subproceso por modelo de consumidor. El agente kafka asigna las particiones cuyos mensajes se enviarán a estos subprocesos.

Un solo subproceso se conecta a Kafka en modo de consumidor de subprocesos múltiples y puede adquirir datos de varias particiones o particiones individuales. Una vez que se han proporcionado los datos al subproceso, el subproceso puede distribuir los mensajes a otros grupos de subprocesos para su procesamiento en paralelo. En este método, el subproceso del consumidor determina qué subproceso secundario manejará qué tipos de mensajes. Sin embargo, en esta circunstancia, la gestión de compensaciones se vuelve extremadamente difícil.

Spring puede generar fácilmente varios subprocesos para conectarse a Kafka. Veamos cómo los dos se comportan de manera diferente. Tenemos un solo tema de prueba con diez particiones y una sola VM que ejecuta una sola aplicación Spring concurrente.

Subproceso por modelo de consumidor


/**
* Consumer configuration for email topics
*
* @return
*/
@Bean
public ConsumerFactory<String, String> consumerFactory()
{
Map<String, Object> props = new HashMap<>();
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ConsumerConfig.GROUP_ID_CONFIG, EMAIL_STATUS_CONSUMER_GROUP);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,
StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,
StringDeserializer.class);
return new DefaultKafkaConsumerFactory<>(props);
}

/**
* Establece la concurrencia para el oyente kafka
*
* @devolver
*/
@Frijol
KafkaListenerContainerFactory pública concurrente kafkaListenerContainerFactory()
{
ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory());
fábrica.setConcurrency(1);
fábrica de vuelta;
}

Utilización de la aplicación Kafka Cómo usar subprocesos múltiples para los consumidores de KafkaEsta división está siendo escuchada por el grupo de consumidores spring-group. A continuación se muestra cómo se comporta la concurrencia única:

GRUPO TEMA PARTICIÓN CONSUMIDOR ID HOST CLIENTE ID

  Se anuncia MediaTek Dimensity 7200

grupo de primavera tema de prueba 8 consumidor-1-01a5779b-940b-44cf-b8c6-2e414aa38eb1 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 2 consumidor-1-01a5779b-940b-44cf-b8c6-2e414aa38eb1 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 1 consumidor-1-01a5779b-940b-44cf-b8c6-2e414aa38eb1 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 4 consumidor-1-01a5779b-940b-44cf-b8c6-2e414aa38eb1 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 5 consumidor-1-01a5779b-940b-44cf-b8c6-2e414aa38eb1 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 6 consumidor-1-01a5779b-940b-44cf-b8c6-2e414aa38eb1 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 3 consumidor-1-01a5779b-940b-44cf-b8c6-2e414aa38eb1 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 7 consumidor-1-01a5779b-940b-44cf-b8c6-2e414aa38eb1 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 9 consumidor-1-01a5779b-940b-44cf-b8c6-2e414aa38eb1 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 0 consumidor-1-01a5779b-940b-44cf-b8c6-2e414aa38eb1 /172.22.0.1 consumidor-1

Si observa detenidamente el resultado anterior, notará que la identificación del consumidor de la aplicación es la misma para las 10 particiones, lo que indica que es un solo hilo que las conecta a todas.

Veamos qué sucede cuando la concurrencia aumenta a 2,

GRUPO TEMA PARTICIÓN CONSUMIDOR ID HOST CLIENTE ID

grupo de primavera tema de prueba 8 consumidor-2-8ab0213d-683c-4f92-b3c8-767701905994 /172.22.0.1 consumidor-2

spring-group test-topic 5 consumidor-2-8ab0213d-683c-4f92-b3c8-767701905994 /172.22.0.1 consumidor-2

grupo de primavera tema de prueba 6 consumidor-2-8ab0213d-683c-4f92-b3c8-767701905994 /172.22.0.1 consumidor-2

grupo de primavera tema de prueba 7 consumidor-2-8ab0213d-683c-4f92-b3c8-767701905994 /172.22.0.1 consumidor-2

grupo de primavera tema de prueba 9 consumidor-2-8ab0213d-683c-4f92-b3c8-767701905994 /172.22.0.1 consumidor-2

grupo de primavera tema de prueba 4 consumidor-1-886f1a6e-f316-4e17-90d2-599a582682e4 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 2 consumidor-1-886f1a6e-f316-4e17-90d2-599a582682e4 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 3 consumidor-1-886f1a6e-f316-4e17-90d2-599a582682e4 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 1 consumidor-1-886f1a6e-f316-4e17-90d2-599a582682e4 /172.22.0.1 consumidor-1

grupo de primavera tema de prueba 0 consumidor-1-886f1a6e-f316-4e17-90d2-599a582682e4 /172.22.0.1 consumidor-1

Como puede ver en la captura de pantalla anterior, ahora hay dos subprocesos, cada uno con cinco particiones.

Kafka intentará distribuir las particiones de manera uniforme entre los subprocesos que pertenezcan al mismo grupo de consumidores. Tendremos un hilo dedicado para cada partición si creamos diez hilos concurrentes.

Conclusión

En este artículo, entendemos algunas cosas sobre subprocesos múltiples y aprendemos el modelo de subprocesos.

Related Posts

Bitcoin cae un 3% a 87.300 dólares a medida que caen las altcoins

Bitcoin cae un 3% a 87.300 dólares a medida que caen las altcoins

LG presentará su Gallery TV en CES 2026

LG presentará su Gallery TV en CES 2026

Los altos costos de RAM debido al auge de la IA podrían retrasar las próximas Xbox y PlayStation

Los altos costos de RAM debido al auge de la IA podrían retrasar las próximas Xbox y PlayStation

HP prepara la presentación del monitor OMEN OLED para CES 2026

HP prepara la presentación del monitor OMEN OLED para CES 2026

Bitcoin cae un 3% a 87.300 dólares a medida que caen las altcoins
Tech

Bitcoin cae un 3% a 87.300 dólares a medida que caen las altcoins

LG presentará su Gallery TV en CES 2026
Tech

LG presentará su Gallery TV en CES 2026

Los altos costos de RAM debido al auge de la IA podrían retrasar las próximas Xbox y PlayStation
Tech

Los altos costos de RAM debido al auge de la IA podrían retrasar las próximas Xbox y PlayStation

HP prepara la presentación del monitor OMEN OLED para CES 2026
Tech

HP prepara la presentación del monitor OMEN OLED para CES 2026

Leaker revela los planes de Xiaomi para un dispositivo eSIM de alta gama en 2026
Tech

Leaker revela los planes de Xiaomi para un dispositivo eSIM de alta gama en 2026

TechBriefly ES

© 2021 TechBriefly is a Linkmedya brand.

  • About
  • About Tech Briefly
  • Blog
  • Contact
  • Contact Us
  • Cover Page
  • Privacy Policy
  • TechBriefly
  • Terms and Conditions

Follow Us

No Result
View All Result
  • Tech
  • Business
  • Geek
  • How to
  • about
    • About Tech Briefly
    • Terms and Conditions
    • Privacy Policy
    • Contact Us

This website uses cookies. By continuing to use this website you are giving consent to cookies being used. Visit our Privacy and Cookie Policy.