Kafka de preguntas comunes de entrevistas de big data

Directorio de artículos

1. La diferencia entre kafka y las colas de mensajes tradicionales

  • En primer lugar, Kafka particionará los mensajes recibidos, y los mensajes de cada tema tendrán particiones diferentes, de modo que por un lado, el almacenamiento de mensajes no estará limitado por el espacio de almacenamiento de un solo servidor, y por otro lado, el procesamiento de mensajes. También se puede ejecutar en paralelo en varios servidores
  • En segundo lugar, para garantizar una alta disponibilidad, cada partición tiene una cierta cantidad de réplicas, por lo que si algunos servidores no están disponibles, el servidor donde se encuentra la réplica se hará cargo para garantizar la continuidad de la aplicación.
  • Además, Kafka garantiza el consumo ordenado de mensajes dentro de la partición
  • Kafka también tiene el concepto de grupo de consumidores: cada partición solo puede ser consumida por un consumidor del mismo grupo, pero puede ser consumida por varios grupos.

Comparar con RabbitMQ:

  • 1. Modelo de arquitectura
  • RabbitMQ sigue el protocolo AMQP, se componen el brokerExchange, Binding y queue de RabbitMQ, donde el intercambio y el enlace forman la clave de enrutamiento del mensaje; el productor del cliente se comunica con el servidor a través del canal de conexión y el consumidor obtiene el mensaje de la cola para consumo (conexión larga, la cola tiene mensaje Se enviará al consumidor, y el consumidor leerá los datos del flujo de entrada en un bucle). RabbitMQ está centrado en el intermediario: un mecanismo de confirmación para los mensajes
  • Kafka sigue la estructura general de MQ. El productor, el corredor y el consumidor extraen datos del corredor en lotes de acuerdo con el punto de consumo, sin un mecanismo de confirmación de mensaje.
  • 2. Rendimiento
  • Kafka tiene un alto rendimiento, utiliza internamente el procesamiento por lotes de mensajes, el mecanismo de copia cero, el almacenamiento y la adquisición de datos son operaciones por lotes secuenciales del disco local, con complejidad O (1) y alta eficiencia de procesamiento de mensajes
  • RabbitMQ es ligeramente inferior a kafka en términos de rendimiento. Su punto de partida es diferente. RabbitMQ admite la entrega confiable de mensajes, admite transacciones y no admite operaciones por lotes. El almacenamiento basado en los requisitos de confiabilidad del almacenamiento puede usar memoria o disco duro
  • 3. Disponibilidad
  • rabbitMQ admite la cola de espejo, la cola principal falla y la cola de espejo se hace cargo
  • El corredor de Kafka admite el modo activo y en espera
  • 4. Equilibrio de carga del clúster
  • Kafka utiliza el guardián del zoológico para administrar los intermediarios y los consumidores en el clúster, y puede registrar temas en el guardián del zoológico. A través del mecanismo de coordinación del guardián del zoológico, el productor guarda la información del intermediario del tema correspondiente, que se puede enviar al intermediario al azar o mediante sondeo, y el productor se puede especificar en función de la semántica. Fragmentación, el mensaje se envía a un determinado fragmento del corredor.

Dos escenarios de aplicación de Kafka

  • Kafka es un sistema de mensajería de publicación y suscripción distribuido de alto rendimiento que puede procesar todos los datos de flujo de acción en sitios web a escala de consumidor. En pocas palabras, Kafka es como un buzón de correo, y el productor es la persona que envía el correo y el consumidor La persona es la persona que recibe el correo electrónico y Kafka se usa para almacenar cosas, pero proporciona algunos mecanismos para procesar correos electrónicos. Los escenarios de uso incluyen:
  • Recopilación de registros: una empresa puede utilizar Kafka para recopilar registros de varios servicios y abrirlos a varios consumidores en un servicio de interfaz unificada a través de Kafka.
  • Sistema de mensajes: desvinculación de productores y consumidores, almacenamiento en caché de mensajes, etc.
  • Seguimiento de la actividad del usuario: Kafka se utiliza a menudo para registrar diversas actividades de los usuarios web o de las aplicaciones, como navegar por la web, buscar, hacer clic y otras actividades. Varios servidores publican esta información de actividad en los temas de Kafka, y luego los consumidores se suscriben a estos temas. Para monitoreo y análisis en tiempo real, también se puede guardar en la base de datos
  • Indicadores operativos: Kafka también se usa a menudo para registrar datos de monitoreo operativo, incluida la recopilación de datos de varias aplicaciones distribuidas y la producción de comentarios centralizados para diversas operaciones, como alarmas e informes.
  • Streaming: como Sparkstreaming y Storm

Tres. ¿Cómo puede Kafka evitar la pérdida y la duplicación de mensajes en el caso de alta concurrencia?

1. Solución de pérdida de mensajes

  • 1) Límite de velocidad en kafka
  • 2) Habilite el mecanismo de reintento y configure el intervalo de reintento para que sea más largo
  • 3) Kafak establece acks = all, es decir, después de que todas las particiones correspondientes en el ISR hayan confirmado la recepción del mensaje, la transmisión se considera exitosa

2. Solución de duplicación de mensajes

  • 1) El mensaje puede identificarse mediante una identificación única
  • 2) Productor (ack = all representa al menos una transmisión exitosa)
  • 3) Consumidor (la compensación se envía manualmente y la compensación se envía después de que la lógica empresarial se haya procesado correctamente)
  • 4) Tabla de eliminación (clave principal o índice único para evitar datos duplicados)
  • Procesamiento de lógica empresarial (seleccione la clave principal única para almacenar en Redis o mongdb, primero consulte si existe, si existe, no procese; si no existe, inserte Redis o Mongdb primero y realice el procesamiento de lógica empresarial)

4. ¿Cómo garantiza Kafka to sparkstreaming la integridad de los datos y cómo garantizar que los datos no se consuman repetidamente?

Asegúrese de que los datos no se pierdan (al menos)

  • El mecanismo interno de spark rdd puede garantizar datos al menos semántica
  • Modo receptor . Active WAL (registro de escritura anticipada), escriba los datos recibidos de Kafka en el archivo de registro y todos los datos se pueden recuperar de la falla.

Método directo :

  • a. Confíe en el mecanismo de control para garantizar
  • b. Para garantizar que los datos no se repitan, es decir, exactamente una vez semántica
  • Operación idempotente: la ejecución repetida no causará problemas, no se requiere trabajo adicional para garantizar que los datos no se repitan
  • El código comercial agrega operaciones de transacción, es decir, para los datos de cada partición, se genera un uniqueld. Solo si todos los datos de esta partición se consumen por completo, se considera exitoso; de lo contrario, se considera inválido y debe revertirse. La próxima vez que este uniqueld se repita, si Se ha ejecutado con éxito, omita

Cinco. Diferencia de API de alto y bajo nivel del consumidor de Kafka

  • Kafka proporciona dos API de consumidor: la API de consumidor de alto nivel y la API de SimpleConsumer. La API de consumidor de alto nivel proporciona una abstracción de alto nivel de los datos de consumo de Kafka, mientras que la API de SimpleConsumer requiere que los desarrolladores presten más atención a los detalles.

1.La API de consumidor de alto nivel

  • La API de consumidor de alto nivel proporciona la semántica del grupo de consumidores. Un mensaje solo puede ser consumido por un consumidor en el grupo, y el consumidor no presta atención al desplazamiento al consumir el mensaje. El último desplazamiento lo guarda el guardián del zoológico
  • El uso de la API de consumidor de alto nivel puede ser una aplicación de múltiples subprocesos, debe prestar atención a:
  • 1) Si el número de subprocesos del consumidor es mayor que el número de particiones, algunos subprocesos no pueden recibir mensajes
  • 2) Si el número de particiones es mayor que el número de subprocesos, algunos subprocesos reciben mensajes de múltiples particiones
  • 3) Si un hilo consume varias particiones, no se puede garantizar el orden de los mensajes que recibe y los mensajes dentro de una partición se ordenan

2.La API SimpleConsumer

  • Si desea tener más control sobre la partición, debe usar la API SimpleConsumer como:
  • 1) Leer un mensaje varias veces
  • 2) Solo consume parte del mensaje en una partición
  • 3) Utilice transacciones para asegurarse de que un mensaje solo se consuma una vez
  • Pero cuando usa esta API, el líder del corredor de compensación de partición, etc. ya no es transparente para usted, debe administrarlo usted mismo y necesita hacer mucho trabajo adicional
  • El desplazamiento debe rastrearse en la aplicación para determinar qué mensaje debe consumirse a continuación.
  • La aplicación necesita saber quién es el líder de cada partición a través del programa.
  • Necesito lidiar con los cambios de líder

6. ¿Cómo garantiza Kafka que los datos se consumen una sola vez?

  • Productor idempotente: se garantiza que el mensaje de una sola partición solo se enviará una vez, y no habrá mensajes duplicados
  • Transacción: para garantizar la escritura atómica en varias particiones, es decir, los mensajes escritos en varias particiones se realizan correctamente o se revierten

7. Kafka garantiza la coherencia y fiabilidad de los datos

1. Garantía de coherencia de datos

  • Definición de coherencia: si un mensaje es visible para el cliente, incluso si el líder muere, los datos aún se pueden leer sobre el nuevo líder
  • HW-HighWaterMark: el desplazamiento de mensaje máximo que el cliente puede leer del líder, incluso si el desplazamiento máximo es visible externamente, HW = max (réplica.offset)
  • Para el nuevo mensaje recibido por el líder, el cliente no puede consumirlo inmediatamente. El líder esperará a que el mensaje sea sincronizado por todas las réplicas en el ISR y actualice el HW. En este momento, el mensaje se puede consumir, lo que asegura que si el líder falla, el mensaje aún se puede consumir. Obtener del líder recién elegido
  • Para las solicitudes de lectura del Broker interno, no hay restricción de HW. Al mismo tiempo, el seguidor también mantendrá una copia de su propio HW, Follower.HW = min (Leader.HW, Follower.offset)

2. Garantía de fiabilidad de los datos

  • Cuando el productor envía datos al líder, el nivel de confiabilidad de los datos se puede configurar a través del parámetro acks
  • 0: Independientemente de si la escritura es exitosa o no, el servidor no necesita enviar una respuesta al productor. Si ocurre una excepción, el servidor terminará la conexión y activará al productor para que actualice los metadatos.
  • 1: Después de que el líder escribe correctamente, se envía la respuesta. En este caso, si el líder falla, los datos se perderán
  • -1: Espere a que todos los ISR reciban el mensaje antes de enviar una respuesta al productor, esta es la garantía más sólida

8. El trabajo en tiempo real de Spark no funciona, ¿qué debo hacer si se acumulan los datos del tema especificados por kafka?

  • 1.spark.streaming.concurrentJobs = 10: aumenta el número de trabajos simultáneos. Se puede observar en el código fuente que este parámetro especifica realmente el número de subprocesos centrales de un grupo de subprocesos. Cuando no se especifica, el valor predeterminado es 1
  • 2.spark.streaming.kafka.maxRatePerPartition = 2000: establezca el número máximo de registros obtenidos por partición por segundo, controle la cantidad de datos procesados ​​y garantice un procesamiento de datos uniforme
  • 3.spark.streaming.kafka.maxRetries = 50: al obtener líderes de partición de tema y sus compensaciones, aumente el número de reintentos
  • 4. Configure el reintento en el nivel de la aplicación. Spark.yarn.maxAttemps = 5 不能超过hadoop集群中yarn.resourcemanager.am.max-attempts
  • 5. Configuración del intervalo de validez para intentos fallidos. Spark.yarn.am.attempFailuresValidtyInterval = 1h

Nine.kafka proceso de lectura y escritura

1. Proceso de escritura

  • 1) Conéctese al clúster zk y obtenga la información de la partición del tema correspondiente y el líder de la partición de zk
  • 2) Conéctese con el corredor correspondiente al líder correspondiente
  • 3) Envíe el mensaje al líder de la partición.
  • 4) Otros seguidores copian datos del líder
  • 5) Vuelve a ack por turno
  • 6) El envío no se completa hasta que se escriben todos los datos en el ISR y finaliza todo el proceso de escritura.
  • Debido a que describe el proceso de escritura, la comunicación de latido entre la réplica y zk no se expresa. La comunicación de latido es para garantizar la alta disponibilidad de kafka. Una vez que el líder cuelga, o el tiempo de espera de sincronización del seguidor o la sincronización es demasiado lento, se informará a zk a través de la información de latido y zk Líder electoral o mover seguidor de ISR a OSR

2. Proceso de lectura

  • 1) Conéctese al clúster zk y obtenga la información de la partición del tema correspondiente y el líder de la partición de zk
  • 2) Conéctese con el corredor correspondiente al líder correspondiente
  • 3) El consumidor envía la compensación guardada al líder
  • 4) El líder ubica el segmento (archivo de índice y archivo de registro) de acuerdo con el desplazamiento y otra información
  • 5) De acuerdo con el contenido en el archivo de índice, ubique la posición de inicio correspondiente al desplazamiento en el archivo de registro, lea los datos de la longitud correspondiente y devuélvalos al consumidor

10. ¿Por qué Kafka solo permite que el líder lea y escriba

  • Kafka solo tiene al líder responsable de leer y escribir, y el seguidor solo es responsable de la copia de seguridad. Si el líder cae, Kafka mantiene dinámicamente un conjunto de réplicas sincronizadas (un conjunto de réplicas sincronizadas), denominado ISR, y hay nodos f + 1 en ISR. , Se permite no perder mensajes y brindar servicios con normalidad cuando f nodos están inactivos. Los miembros de ISR son dinámicos. Si se elimina un nodo. Cuando vuelve a alcanzar el estado de "sincronización", puede Vuelva a unirse al ISR. Entonces, si el líder cae, simplemente elija un seguidor del ISR.
  • Después de que Kafka introduce la replicación, la misma partición puede tener múltiples réplicas y, en este momento, se debe seleccionar un líder entre estas replicaciones. El productor y el consumidor solo interactúan con este líder, y otras réplicas copian datos del líder como seguidores, porque Es necesario garantizar la coherencia de los datos entre varias réplicas de la misma partición (después de que una de ellas deja de funcionar, las otras réplicas deben poder seguir funcionando y no causar duplicación ni pérdida de datos). Si no hay un líder, todas las réplicas pueden ser Para leer / escribir datos al mismo tiempo, es necesario asegurarse de que múltiples réplicas sincronizan datos entre sí (n * n rutas). La consistencia y el orden de los datos son muy difíciles de garantizar, lo que aumenta en gran medida la complejidad de la implementación de la replicación y también aumenta Después de la introducción del líder, solo el líder es responsable de leer y escribir datos, y el seguidor solo obtiene datos (n canales) al líder secuencialmente, el sistema es más simple y más eficiente

11. Para evitar que el disco se llene, Kafka borrará periódicamente los mensajes antiguos ¿Cuáles son las estrategias de borrado?

  • Hay dos estrategias de retención en Kafka
  • Uno se basa en el tiempo de retención del mensaje, cuando el mensaje se guarda en Kafka por más del tiempo especificado, se puede eliminar
  • El otro se basa en el tamaño de los datos almacenados en el tema. Cuando el tamaño del archivo de registro ocupado por el tema es mayor que un umbral, puede comenzar a eliminar los mensajes más antiguos.
  • Kafka iniciará un hilo en segundo plano para comprobar periódicamente si hay mensajes que se puedan eliminar
  • La configuración de la política de retención es muy flexible, puede tener una configuración global o puede configurarse para que un tema anule la configuración global.

12. El principio de alta disponibilidad de datos de Kafka

1. Formato de almacenamiento de datos

  • La garantía de alta confiabilidad de Kafka proviene de su sólida estrategia de replicación. Un tema se puede dividir en múltiples particiones y una partición se compone físicamente de múltiples segmentos.
  • El segmento se divide en 2 partes: archivo de índice y archivo de datos. El archivo de índice guarda los metadatos y registra el desplazamiento del mensaje en el archivo de datos. El mensaje tiene una estructura física fija para garantizar la longitud de lectura correcta
  • Los beneficios de los archivos de segmentos: facilitan la limpieza de los archivos caducados. Solo necesita eliminar los segmentos caducados en su totalidad. Escriba los mensajes de forma adjunta y escriba en el disco de forma secuencial, lo que mejora enormemente la eficiencia
  • El paso de leer un determinado mensaje de compensación se convierte en: Buscar el segmento donde se encuentra la compensación mediante la búsqueda binaria. A través del archivo de índice del segmento, busque la compensación física del archivo de datos donde se encuentra la compensación y lea los datos

2. Replicación y sincronización

  • Desde el exterior, la partición es similar a una matriz que crece y almacena mensajes. Cada partición tiene un archivo similar al binlog de MySQL para registrar la escritura de datos. Hay dos términos nuevos, HW (HighWatermark) significa que el consumidor actual puede ver la partición La posición de desplazamiento, LEO (LogEndOffset) representa el desplazamiento del último mensaje de la partición actual, y cada copia se mantiene por separado. Para mejorar la fiabilidad del mensaje, la partición tiene n copias
  • Entre n réplicas, hay un líder y los n-1 seguidores restantes. Las operaciones de escritura de Kafka solo se realizan en la réplica del líder. Por lo general, hay dos formas de escribir este tipo de réplica
  • 1) Si el líder escribe el archivo de registro correctamente, devuelve el resultado correcto. De esta manera, si el seguidor cae antes de que se sincronicen los datos, los datos se pierden. Este método brinda una mayor eficiencia
  • 2) El líder espera que el seguidor escriba con éxito el registro y reciba los acks devueltos antes de devolver el éxito. De esta manera, el líder está caído. El líder reelegido es consistente con los datos del líder caído y los datos no se pierden. Pero debido a que tiene que esperar a que el seguidor regrese, la eficiencia es más lenta Generalmente, se adopta el método de elección según el cual la minoría obedece a la mayoría. Si desea lidiar con el tiempo de inactividad de f réplicas, necesita al menos 2f + 1 réplicas y hacer que f + 1 de ellas se escriban correctamente. Kafka no usa el mecanismo anterior. Implementa ISR (En -Sync Replication) mecanismo

13. ¿Dónde se almacena la compensación de Kafka, por qué?

  • Desde la versión de kafka-0.9, el grupo de consumidores y la información de compensación de kafka no se almacenan en zookeeper, sino que se almacenan en el servidor del corredor, por lo que si especifica un nombre de grupo de consumidores (group.id) para un consumidor Luego, una vez que se inicia el consumidor, el nombre del grupo de consumidores y la información de compensación del tema que desea consumir se registrarán en el servidor del corredor.

1. Información general

  • La versión de Kafka [0.10.1.1] ha movido la compensación de consumo a un tema llamado __consumer_offsets en Kafka de forma predeterminada. De hecho, ya en la versión 0.8.2.2, se admitía almacenar la compensación de consumo en el tema, pero en ese momento El valor predeterminado es almacenar el desplazamiento consumido en el clúster del zookeeper. Ahora, el valor predeterminado oficial es almacenar el desplazamiento consumido en el tema de kafka. Al mismo tiempo, también conserva la interfaz almacenada en zookeeper, que se establece a través de la propiedad offsets.storage.

2. Contenido

  • De hecho, la recomendación oficial como esta también es razonable. En la versión anterior, Kafka en realidad tiene un peligro oculto relativamente grande, que es usar zookeeper para almacenar y registrar el progreso de consumo de cada consumidor / grupo. Aunque, en el proceso de uso, JVM nos ayuda a completar Se han realizado algunas optimizaciones, pero los consumidores necesitan interactuar con el guardián del zoológico con frecuencia, y el uso de la API de zkClient para operar la escritura con frecuencia del guardián del zoológico es en sí mismo una acción relativamente ineficiente, y también es un dolor de cabeza para la expansión horizontal posterior. El clúster cambia y el rendimiento del clúster de kafka también se ve afectado. Después de esto, el funcionario propuso el concepto de migrar a kafka muy temprano, pero se ha almacenado en el clúster del guardián del zoológico de forma predeterminada antes y debe configurarse manualmente. Si, Si no está muy familiarizado con el uso de Kafka, aceptamos el almacenamiento predeterminado.En la nueva versión de Kafka y posteriores, las compensaciones consumidas por Kafka se almacenarán de manera predeterminada en un tema llamado __consumer_offsets en el clúster de Kafka.

14. Cómo garantizar el orden de los mensajes de Kafka

  • Kafka solo puede garantizar que los mensajes de una partición están en orden cuando los consume un determinado consumidor. De hecho, desde la perspectiva del tema, cuando hay varias particiones, los mensajes aún no están ordenados globalmente.

15. Número de particiones kafka

  • La cantidad de particiones no es la mejor. Generalmente, la cantidad de particiones no debe exceder la cantidad de máquinas de clúster. Cuantas más particiones, mayor será la memoria ocupada (ISR, etc.). Cuantas más particiones haya en una concentración de nodo, cuando está inactivo, el sistema se verá afectado. Cuanto mayor sea el impacto
  • El número de particiones generalmente se establece en: 3-10

16. Estrategia de asignación de particiones de Kafka

  • Hay dos estrategias de asignación de particiones predeterminadas en Kafka: Range y RoundRobin

1.Rango

  • La estrategia predeterminada, Rango es para cada tema (es decir, la división de cada tema). Primero, las particiones en el mismo tema se ordenan por número de serie y los consumidores se ordenan alfabéticamente. Luego, use las particiones de las particiones Divida el número por el número total de subprocesos consumidores para determinar cuántas particiones consume cada subproceso consumidor. Si no se divide, los subprocesos consumidores anteriores consumirán una partición más.
  • Por ejemplo: tenemos 10 particiones, dos consumidores (C1, C2), tres hilos consumidores, 10/3 = 3 e inagotables
  • C1-0 consumirá 0,1,2,3 particiones
  • C2-0 consumirá 4, 5 y 6 particiones
  • C2-1 consumirá 7, 8 y 9 particiones

2.Robin Redondo

  • Requisito previo: el número de streams (el número de hilos de consumo del consumidor) de todos los consumidores en el mismo grupo de consumidores debe ser igual, y los temas suscritos por cada consumidor deben ser los mismos
  • Redacte todas las particiones de tema en una lista TopicAndPartition, luego ordene la lista TopicAndPartition de acuerdo con hashCode y, finalmente, envíela a cada hilo consumidor de forma de sondeo

Cálculo del volumen de datos de Seventeen.kafka

  • El volumen total de datos por día es de 100 g, se producen 100 millones de registros todos los días, 100 millones / 24/60/60 = 1150 registros / seg.
  • Promedio por segundo: 1150
  • Valle bajo por segundo: 400 bares
  • Pico por segundo: 1150 * (2-20 veces) = 2300-23000
  • Cada tamaño de registro: 0.5-2k
  • Cuántos datos por segundo: 2.3M-20M

18. Registro de datos de mensajes de Kafka, cómo lidiar con la capacidad de consumo insuficiente de Kafka

  • Si la capacidad de consumo de Kafka es insuficiente, puede considerar aumentar la cantidad de particiones temáticas y aumentar la cantidad de consumidores en el grupo de consumidores al mismo tiempo, la cantidad de consumidores = la cantidad de particiones
  • Si el procesamiento de datos posterior no es oportuno, aumente el número de extracciones en cada lote y el número de lotes es demasiado pequeño (extracción de datos / tiempo de procesamiento <velocidad de producción), lo que hace que los datos procesados ​​sean más pequeños que los datos de producción, lo que también generará datos Reserva

19. La realización del alto rendimiento de Kafka

1. Lectura y escritura secuencial

  • Los mensajes de Kafka se añaden continuamente al archivo. Esta función permite a Kafka hacer un uso completo del rendimiento secuencial de lectura y escritura del disco. La lectura y escritura secuencial no requiere el tiempo de búsqueda del cabezal del disco duro y solo requiere un pequeño tiempo de rotación de sector, por lo que la velocidad es mucho más rápida que la lectura y escritura aleatoria.

2. Copia cero

  • Después del kernel 2.2 de Linux, apareció un mecanismo de llamada al sistema llamado "copia cero", que consiste en omitir la copia del "búfer de usuario" y establecer una asignación directa entre el espacio en disco y la memoria, y los datos ya no se copian en "Búfer de modo de usuario". La copia cero no requiere copia, pero reduce el número de copias innecesarias. Por lo general, se encuentra en el proceso de lectura y escritura de E / S. La "tecnología de copia cero" solo necesita copiar los datos del archivo de disco al caché de la página una vez y luego enviar los datos del caché de la página directamente a la red.

3. Partición

  • El tema de la cola de Kafka se divide en varias particiones, y cada partición se divide en varios segmentos, por lo que los mensajes en una cola se almacenan en N archivos de fragmentos múltiples de forma segmentada. Cada operación de archivo Todas son operaciones en un archivo pequeño, que es muy portátil y también aumenta la capacidad de procesamiento paralelo.

4. Envío por lotes

  • Kafka permite enviar mensajes en lotes. Los mensajes primero se almacenan en la memoria caché y luego se envían en lotes en una solicitud. Por ejemplo, puede especificar que los mensajes almacenados en caché se envíen cuando se alcance una cierta cantidad, o se envíen después de un período de tiempo fijo, como 100 mensajes. Los mensajes se envían o se envían cada 5 segundos. Esta estrategia reducirá en gran medida la cantidad de E / S en el servidor.

5. Compresión de datos

  • Kafka también admite la compresión de colecciones de mensajes. Producer puede comprimir colecciones de mensajes en formato GZIP o Snappy. La ventaja es reducir la cantidad de datos transmitidos y reducir la presión sobre la transmisión de la red.

Equilibrio de carga del consumidor

  • Cuando un consumidor se une o abandona un grupo, se activará el equilibrio de las particiones. El objetivo final del equilibrio es mejorar la capacidad de consumo concurrente de los temas.

Supongo que te gusta

Origin blog.csdn.net/sun_0128/article/details/108069129
Recomendado
Clasificación