Kafka sucinta

K 1. Afka esbozó

 

1.1 Definiciones

 

Kakfa es una base de publicación / suscripción modelo distribuido de colas de mensajes (cola de mensajes), utilizados principalmente en el procesamiento de datos de gran tamaño en tiempo real.

 

1.2 Message Queuing

 

1.2.1 nueva cola de mensajes tradicional y el modo de cola de mensajes

 

 

Lo anterior es la cola de mensajes tradicionales, tales como la información de registro a un usuario, cuando la información de usuario se escribe en la base de datos, y hay una serie de otros procesos, tales como el envío de mensajes, etc. Estos procesos requieren el procesamiento se ha completado, y luego se devuelven al usuario. La nueva cola, tales como información de registro de usuario, los datos directamente echado en la base de datos, directamente regresado al éxito de usuario.

 

1.2.2 Los beneficios del uso de Message Queue Server

 

  • desacoplamiento

  • recuperabilidad

  • buffer

  • La flexibilidad y la capacidad pico

  • La comunicación asíncrona

 

1.2.3 Modo de cola de mensajes

 

1) modo punto a punto

 

Un productor de mensajes envía un mensaje a la cola de mensajes y el consumidor mensaje y el consumidor se elimina de la cola de mensajes, el mensaje se consume, no se almacenan en la cola. Para que los consumidores no pueden consumir noticias se ha consumido a las noticias, hay soporte para múltiples colas de los consumidores, pero para un mensaje, sólo será un consumidor puede consumir; si quieres múltiples clientes, se necesita más de tiempo para enviar un mensaje de ese artículo.

 

2) de publicación / suscripción modelo (uno a muchos, el mensaje no se borra después de los datos de gasto de los consumidores)

 

productor de mensajes publica un mensaje con el tema, mientras que hay múltiples mensajes a los consumidores (suscripción) consumen el mensaje. Y el punto a punto de diferentes maneras, un mensaje publicado en el tema será consumida por todos los abonados, pero el período de retención de datos es, el valor predeterminado es de 7 días, ya que no se almacena en el sistema. Kafka es este modelo. Hay dos maneras, una es que los consumidores toman la iniciativa para pasar (pull) el mensaje, en lugar de los productores empujar mensajes a los consumidores, mientras que otro está empujando un mensaje de forma activa los productores a los consumidores, similar al número público.

 

1.3 Infraestructura Kafka

 

 

infraestructura de Kafka principalmente agente, productor, grupos de consumidores constituyen el actual también incluye ZooKeeper.

 

 

El productor es responsable de enviar mensajes, agente responsable de los mensajes almacenados temporalmente, corredor puede crear tema, y ​​cada tema hay replicación del concepto de partición.

 

Los grupos de consumidores responsables de procesar el mensaje, el mismo grupo de consumidores en un consumidor no puede consumir datos de una sola partición. El grupo principal consumidor es mejorar el poder adquisitivo, tal como un consumidor antes de los datos de consumo 100, ahora es de 2 100 datos de gasto de los consumidores, puede mejorar la capacidad de gasto. Por lo tanto, el número de consumidores de los grupos de consumidores es menor que el número de partición, de lo contrario no habrá partición de los consumidores puede consumir, lo que resulta en pérdida de recursos.

 

Nota: Los consumidores diferentes grupos de consumidores que pueden consumir la misma partición de datos.

 

Kafka Si desea que el clúster de componentes, sólo tiene que registrar un ZooKeeper en él, ZooKeeper también conserva el consumo de mensajes de progreso o el consumo o la posición de desplazamiento.

 

  • versión anterior de offset almacenado en el ZooKeeper 0,9;

  • Versión 0.9 después de la compensación almacena en Kafka en. sistema de Kafka define un tema, compensaciones para almacenar datos específicos.

 

¿Por qué el cambio?

 

Principalmente a causa de los frecuentes cambios para compensar la presión sobre ZooKeeper de procesamiento propia grande y Kafka en sí también es más complejo.

 

1,4 AnSo Kafka

 

1) Kafka instalado sólo necesita extraer el paquete de instalación para completar la instalación.

 

tar -zxvf kafka_2.11-2.1.1.tgz -C /usr/local/

 

2) Compruebe el archivo de configuración.

 

[root@es1 config]# pwd
/usr/local/kafka/config
[root@es1 config]# ll
total 84
-rw-r--r--. 1 root root  906 Feb  8  2019 connect-console-sink.properties
-rw-r--r--. 1 root root  909 Feb  8  2019 connect-console-source.properties
-rw-r--r--. 1 root root 5321 Feb  8  2019 connect-distributed.properties
-rw-r--r--. 1 root root  883 Feb  8  2019 connect-file-sink.properties
-rw-r--r--. 1 root root  881 Feb  8  2019 connect-file-source.properties
-rw-r--r--. 1 root root 1111 Feb  8  2019 connect-log4j.properties
-rw-r--r--. 1 root root 2262 Feb  8  2019 connect-standalone.properties
-rw-r--r--. 1 root root 1221 Feb  8  2019 consumer.properties
-rw-r--r--. 1 root root 4727 Feb  8  2019 log4j.properties
-rw-r--r--. 1 root root 1925 Feb  8  2019 producer.properties
-rw-r--r--. 1 root root 6865 Jan 16 22:00 server-1.properties
-rw-r--r--. 1 root root 6865 Jan 16 22:00 server-2.properties
-rw-r--r--. 1 root root 6873 Jan 16 03:57 server.properties
-rw-r--r--. 1 root root 1032 Feb  8  2019 tools-log4j.properties
-rw-r--r--. 1 root root 1169 Feb  8  2019 trogdor.conf
-rw-r--r--. 1 root root 1023 Feb  8  2019 zookeeper.properties

 

3) modificar los server.properties archivo de configuración.

 

Conjunto broker.id Esta es Kafka distinguir el identificador único de cada nodo del clúster.

 

 

4) Ajuste una ruta de almacenamiento de datos de Kafka.

 

 

Nota: No se puede tener otro directorio no Kafka en este directorio, de lo contrario, dará lugar a la agrupación Kafka no se puede iniciar.

 

Ya sea 5) Los ajustes se pueden eliminar tema, el tema no está permitido por defecto Kafka eliminado.

 

 

6) el tiempo de retención de datos de Kafka, el valor predeterminado es de 7 días.

 

 

7) El tamaño máximo del archivo de registro, si el archivo de registro superior a 1 G creará un nuevo archivo.

 

 

 

8) y la conexión de tiempo de espera dirección Kafka de la conexión Kafka ZooKeeper.

 

 

9) El número predeterminado de la partición.

 

 

1.5 Inicio Kafka

 

1) Iniciar una manera, Kafka comenzó un único nodo, cada nodo Kafka necesidad de iniciar manualmente la siguiente manera bloqueando la manera de empezar.

 

 

Se recomienda 2) Comience la segunda manera de guardar el camino para empezar.

 

 

1.6 operación de Kafka

 

1) Controlar la corriente de racimo Kafka tema existente.

 

 

Nota: la conexión ZooKeeper aquí, en lugar de conexión de Kafka.

 

2) crear un tema, y ​​el número de copias especificado rebanada.

 

 

Descripción: La replicación del factor del número de copias, la replicación factor el número de particiones, tema el nombre del tema.

 

 

Si la corriente de Kafka sólo tres nodos de clúster corredor, la replicación del factor máximo es 3, y crear una copia de los siguientes ejemplos 4, será de error.

 

 

3) Tema Eliminar.

 

 

4) para ver la información de tema.

 

 

 

1.7 productores principio a noticias de productos, Kafka viene con un productor y clientes de consumo

 

1) Iniciar un productor, el puerto de atención 9092 conectada en este momento, la conexión de clúster Kafka.

 

 

2) iniciar un consumidor, la atención o 9092 puerto está conectado en este momento, o antes de la versión 2181 del puerto de conexión 0.9.

 

 

Aquí empezamos a dos consumidores a prueba.

 

 

Nota: Si el archivo de configuración no especifica los grupos de consumidores, el valor por defecto a todos los consumidores pertenecen a diferentes grupos de consumidores.

 

3) para enviar un mensaje, se puede ver que cada consumidor puede recibir mensajes.

 

 

 

 

4) los datos reales Kakfa.

 

 

 

2. Kafka profundidad arquitectura

 

 

Kafka no puede garantizar el orden global del mensaje, el mensaje sólo puede garantizarse en una partición ordenada, ya que el gasto del consumidor es el mensaje al azar en una partición diferente.

 

2.1 flujo de trabajo Kafka

 

Kafka es el tema de la clasificación de mensajes, el productor genera un mensaje, el gasto del consumidor de mensajes están orientados tema.

 

 

Tema es un concepto lógico y particiones de un concepto físico. Cada partición otro concepto de copia. Cada partición corresponde a un archivo de registro, el archivo de registro se genera productor productor de datos continuará generando datos adicionales almacenados en el archivo de registro al terminal, y cada uno tiene sus propios datos de offset, los consumidores registrará su consumo en tiempo real para el desplazamiento, con el fin de seguir gastando error de tiempo desde la última posición en la desviación almacenada en el archivo de índice. de Kafka offset es la subregión con el fin, pero el orden es ninguna partición diferente, Kafka no garantiza los datos de orden global.

 

2.2 principio Kafka

 

Debido a los productores para producir el mensaje continuarán para anexar al archivo de registro, el archivo de registro es demasiado grande para evitar que la baja eficiencia de los datos de posicionamiento, la rebanada y el mecanismo de Kafka utilizando el índice, cada partición se divide en una pluralidad de segmentos, cada segmento corresponde a 2 ficheros - archivo de índice y el archivo de registro, estos dos archivos se encuentran en una misma carpeta, la carpeta convención de nomenclatura es la siguiente: nombre del tema + número de partición.

 

 

Nombre de archivo y archivo de registro índice es actualmente el índice es datos de desviación mínimos. los datos de consumo kafka la rapidez con que?

 

 

los datos del archivo de índice en la información de índice almacenada en la primera fila se compensa, compensa el que la segunda columna del archivo de registro correspondiente a los datos, como se lee el archivo, utilizando la buscan () para establecer la posición actual del ratón como , se pueden encontrar datos más rápida.

 

Si vas a los datos de consumo de compensación 3, en primer lugar encontrar los datos a través de la dicotomía en la que el archivo de índice, y luego localizar datos de corrección en el archivo de registro en el índice por el desplazamiento, de modo que puede localizar rápidamente los datos, y el consumo.

 

Así, Kafka aunque los datos almacenados en el disco, pero es la velocidad de lectura es muy rápido.

 

3. Los productores y consumidores Kafka

 

3.1 Kafka productor

 

El papel de la partición de la partición de Kafka

 

La partición principal razón Kafka es proporcionar concurrencia mejora el rendimiento porque el leer y escribir es una partición de la unidad para leer y escribir, sino que envía un mensaje que se envía a los productores que partición en ella?

 

  1. Especifica la partición en el cliente;

  2. Polling (recomendado) para la p1 mensaje 1, el mensaje 2 a p2, p3 mensaje 3 a, 4 mensaje a p1, mensaje de 5 a P2, P3 ...... mensaje a 6

 

3.2 Kafka cómo garantizar la fiabilidad de los datos que? Por ACK para asegurar

 

Para asegurar que los datos enviados por el productor, pueden transmitirse de manera fiable al tema especificado, los datos de cada tema partición recibidas enviadas por el productor, se requiere que el productor para enviar ACK (acuse de recibo), si el productor se recibe ACK , se enviará la próxima ronda, o vuelve a enviar los datos.

 

 

 

Así Kafka cuándo enviar acuse de recibo a los productores?

 

Asegúrese de que el seguidor y el líder de la sincronización, el líder enviado acuse de recibo a los productores, a fin de asegurar que después de la líder de colgar, para elegir a un nuevo líder en el seguidor, no se pierden los datos.

 

Después de la sincronización se ha completado y que el número de ACK seguidor de envío?

 

  • Escenario 1: La mitad de la sincronización se ha completado, se envía ACK;

  • Esquema 2: sincronización completado antes de ack de transmisión (Kafka de esta manera)

 

Con la segunda opción, considere la situación siguiente: líder recibe los datos, todos los seguidores están empezando a Sincronizar datos, pero no es un seguidor a causa de algún tipo de fallo, ha sido incapaz de completar la sincronización, que el líder debe esperar siempre para la siguiente, hasta que se complete la sincronización con el fin de enviar acuse de recibo. Esto afectará en gran medida la eficiencia, la forma de resolver este problema?

 

 

Líder mantiene una lista dinámica de ISR (copia síncrona de la acción), requiere sólo la lista del seguidor y el líder de sincronización; cuando el seguidor ISR completar la sincronización de datos, ack líder será enviado al productor, si largo seguidor No hay tiempo de datos síncronos al líder, el seguidor será eliminado ISR, el umbral de tiempo es personalizado; líder después de la misma falla, un nuevo líder será elegido de la ISR.

 

¿Cómo seleccionar un nodo ISR ella?

 

la comunicación por primera vez a ser rápido, para ser completado y líder para comunicarse de forma rápida, este tiempo es 10 segundos por defecto

A continuación, ver líder en lagunas de datos, el número predeterminado de mensajes es de 10000 (versiones posteriores se eliminan)

¿Por qué quitar: Dado que los mensajes de envío Kafka enviarse en bloque, será un líder instantánea para aceptar completado, pero aún no tirado seguidor, por lo que con frecuencia expulsado y unirse a ISR, estos datos se guarda en ZooKeeper y la memoria, por lo que con frecuencia actualizar ZooKeeper y la memoria.

 

Sin embargo, para algunos datos menos importantes, la fiabilidad de los datos no es muy alta, puede tolerar una pequeña cantidad de pérdida de datos, así que no hay necesidad de esperar seguidor aceptación ISR de todo éxito. Kafka lo que el usuario proporciona tres niveles de fiabilidad, el usuario se puede pesar en contra de la fiabilidad y retrasar el ajuste de los kafka generados: parámetros ACK.

 

 

1) ACKs 0

 

Los productores que van ACK, el tema sólo para perder los datos del mismo, la probabilidad de pérdida de datos es muy alta.

 

2) ack 1

 

líder de la Abierto por la noche vuelve ACK, el fenómeno de la pérdida de datos, si el líder se bloquea después de la sincronización, se producirá una pérdida de datos.

 

3) ack a -1 (todos)

 

líder y el seguidor (ISR) ACK desde el disco no va a volver, no habrá duplicación de datos, si el líder se ha escrito completado, y la sincronización seguidor es completa, pero en acuse de recibo de retorno falla, los datos se repetirá fenómeno; el límite, esto va a ser un caso de pérdida de datos, tales como el líder y la comunicación seguidor es muy lento, por lo que el ISR solamente un nodo líder, esta vez, el líder completaron la colocación de pedidos, devoluciones ACK, si falla este líder vez, dará lugar a la pérdida de datos.

 

¿Cómo asegurar la consistencia de los datos de consumo 3.3 Kafka? Garantizada por HW

 

 

  • LEO : se refiere a la compensación de cada seguidor máxima;

  • HW (agua alto) : se refiere a la desviación que los consumidores pueden ver, la cola de LSR LEO más pequeño, los consumidores sólo pueden ver los datos que es 1 a 6 máxima, los datos siguientes no pueden ver, no puede ser también el consumo.

 

Después de evitar líder colgar, tales como el consumo de corriente de pasar 8 de estos datos, el líder colgó, esta vez para convertirse en el líder como F2, F2 es simplemente no 9 estos datos, entonces los consumidores error, por lo que el diseño de este parámetro HW expuestos solamente un mínimo de datos a los consumidores, para evitar los problemas anteriores.

 

3.3.1 almacenamiento HW para asegurar la consistencia de datos

 

1) Fallo de seguidor

 

seguidor después de un fallo será levantado temporalmente LSR, hasta que el seguidor de recuperación, seguidor lee la grabación de disco local HW última, y ​​más alto que la sección HW archivo de registro quitado, comenzar a sincronizar el líder HW , el otro seguidor es LEO hw mayor que o igual a la partición, es decir, después de Leader captura seguidor, puede reunirse con LSR.

 

2) Fallo líder

 

Después de falla el líder, un nuevo líder se selecciona de entre el ISR, entonces, con el fin de garantizar la coherencia de datos entre múltiples copias de, el resto del seguidor será primer archivo de registro es mayor que el corte respectivo off porción hw (nuevo líder no van a cortar), los datos líder sincronizar desde el nuevo.

 

Nota: Esto es para asegurar la consistencia de los datos almacenados a través de múltiples copias, no garantiza que los datos no se pierde o no se repiten.

 

3.3.2 tiempo de precisión (idempotente), para asegurar que los datos no se repite

 

  • ACK se establece en -1, se puede asegurar que los datos no se pierde, pero no habrá duplicación de datos (al menos una vez)

  • ACK se establece en 0, se puede asegurar que los datos no se repite, pero no puede garantizar que no se pierdan datos (como máximo una vez)

 

Pero si el pastel y se lo comen, cómo hacerlo? Esta vez en la introducción de una vez Exact (tiempo precisa).

 

Después de la versión 0.11, la introducción de la energía y otros datos dentro del grupo de abordar Kafka repite hasta la versión 0.11, los consumidores manejan su propio lugar. Si idempotencia habilitado, acuse de recibo por defecto es -1, Kafka se le asignará un PID para cada productor, no asignar a cada mensaje seqnumber, si pid, partición, seqnumber tres iguales, entonces Kafka considera los datos duplicados no se guardan las órdenes del lugar, pero si los productores de colgar, no habrá duplicación de datos, de modo que los datos en una sola sesión de dirigirse a una única partición de la energía, como repite, pero entre las particiones oa través de sesiones es duplicación de datos no puede ser resuelto.

 

 

3.4 consumidores Kafka

 

3.4.1 consumo

 

Hay dos mensajes colas de mensajes modo de consumo, push (número de micro-canales público), de tracción (kafka). el modo de transferencia es difícil de adaptar a diferentes tasas de consumo de los consumidores, debido a que la velocidad de transmisión del consumo está determinado por el corredor, y su objetivo es posible con los mensajes más rápidos de paso de velocidad, pero esto es probable que cause al consumidor la oportunidad de procesar el mensaje, típico el rendimiento es una denegación de servicio, y la congestión de la red. El tirón de las maneras la capacidad del consumidor para consumir mensajes a un precio razonable.

 

Las deficiencias modo de obtención, si Kafka no hay datos, los consumidores pueden caer en un bucle infinito, siempre devuelven datos vacíos pasan un parámetro de tiempo de espera para esto, Kafka vuelta los datos de consumo de los consumidores en el tiempo, si no hay datos disponibles para el consumo, consumidores esperarán durante un período de tiempo a cambio.

 

3.4.2 política de asignación de partición

 

Un grupo de consumidores tienen múltiples consumidores, hay una partición tema más. Así que inevitablemente implicará la distribución de partición, que determina qué partición a la que el consumo por el consumidor. Kafka ofrece dos formas, una que se sondean (RountRobin) la validación de grupo para el tema A es (Rango) surten efecto para un solo tema

 

Encuesta: condición previa es un consumidor en la necesidad de los consumidores suscribirse a un mismo tema. De lo contrario habrá problemas; manera no predeterminada.

 

Con un grupo de consumidores en el consumidor no puede consumir la misma partición, como un tema de tres consumidores de pasar nueve particiones.

 

 

 

Si un grupo de consumidores, hay dos consumidores, mientras que el consumo de este grupo de consumidores en dos temas, cada tema hay tres particiones. Primero puso dos tema como un tema, y ​​luego hacer el hash de acuerdo con el tema y la partición, y luego clasifica según hash. El sondeo se asigna a uno de dos grupos de consumidores de los consumidores.

 

 

Si esta es la forma en que para subscribirse?

 

Hay tres de esos temas, cada tema tiene tres particiones, un grupo de consumidores con 2 consumidores. Los consumidores suscribirse tema1 1 y Tema2, los consumidores suscribirse Tema2 2 y topic3. Entonces tal escenario, usando el tema de suscripción en la rotación de la forma en que habrá problemas.

 

Si está por debajo de esta manera para suscribirse?

 

Por ejemplo, hay dos temas, cada tema hay tres particiones, un grupo de consumidores tiene dos consumidores, que se suscriben a 1 tema1, 2 de los consumidores de suscripción Tema2, por lo que se utiliza en la rotación de una forma de suscribirse tema habrá un problema.

 

Por lo tanto, siempre hemos hecho hincapié en la utilización de la suscripción de formación de giro para el tema en la premisa de que un grupo de consumidores de todos los consumidores suscrito hilos es lo mismo, no es el camino Kafka modo de sondeo predeterminado; rango se divide de acuerdo con el tema único, método de asignación por defecto.

 

 

 

 

Gama de problemas desiguales de datos asuntos del consumidor. Por ejemplo, el siguiente ejemplo, un grupo de consumidores suscrito a dos tema, habrá consumo de los consumidores 4 1 partición, mientras que los otros consumidores sólo consumen dos particiones.

 

 

Al particionar estrategia dará lugar a que? Cuando los grupos de consumidores en el número de consumidores cambian, dará lugar a la partición de los ajustes de estrategia, tales como un aumento en los consumidores de los consumidores, o reducir consumidor.

 

3.4.3 Mantenimiento compensado

 

Debido a que los consumidores pueden ser cortes de energía y otras fallas en el proceso de consumo, después de la recuperación de los consumidores, es necesario continuar a consumir desde la posición antes del fallo, por lo que los consumidores necesitan para poner en práctica sus propios registros de consumo que compensan, con el fin de continuar la recuperación post-consumo.

 

Offset ubicación guardada tiene dos, una ZooKeeper, uno es Kafka. Primer vistazo desfase guarda en ZooKeeper, determinar una única compensado por el grupo de consumidores, tema, partición de tres elementos.

 

 

Por lo tanto, el grupo de consumidores colgar después de un consumidor o consumidores todavía puede obtener este desplazamiento.

 

 

La comunicación nodo del controlador y ZooKeeper, los datos de sincronización, este nodo es de hasta el que, el que primero registro de controlador, que es el controlador. Otros nodos y la información del controlador en sincronía.

 

Caso 3.4.5 Grupo de Consumo

 

Modificar Identificación del grupo de consumidores

 

 

Comienza un consumidor envía 3 de datos.

 

 

Los consumidores empiezan grupo de consumidores designados, comienzan tres consumidores, cada consumidor puede ver a un consumo de datos.

 

 

 

 

En la presentación de diferentes grupos pueden consumir el mismo tema, vemos el consumo de dos consumidor consumidores a los mismos datos. Iniciar un nuevo consumidor, el consumidor está en un grupo de consumidores diferentes.

 

 

 

4 Kafka mecanismo de escritura eficiente

 

4.1 Implementación distribuida

 

el funcionamiento de varios nodos en paralelo.

 

4.2, el disco de escritura secuencial

 

datos de producción productor de Kafka se escriba en el archivo de registro, el proceso de escritura ha sido añadido al final del archivo para escritura secuencial, los datos oficiales muestran sitio web. El mismo disco, el orden puede escribir a 600M / S, y una escritura aleatoria única 100K / S. Esto está relacionado con la estructura mecánica del disco, la razón por la rápida escritura secuencial, ya que elimina una gran cantidad de tiempo frente a la cabeza.

 

La tecnología 4.3, copia cero

 

Normalmente, los datos se leen primero el espacio del núcleo, el espacio del núcleo desde el espacio de usuario para leer los datos, y luego ajustando el espacio del núcleo de escritura interfaz IO sistema operativo, con el tiempo escrito en el disco duro.

 

 

Kafka está haciendo, arroyos IO fluya directamente en el espacio del núcleo, por lo que el rendimiento de Kafka es muy alta.

 

 

 

5. El papel ZooKeeper en el Kafka

 

Kafka en racimo tienen un corredor es elegido como el controlador, el corredor es responsable de la gestión de la línea clúster, copias de todas las particiones tema y elección de líder y así sucesivamente asignadas.

 

Fuente: https://www.cnblogs.com/bainianminguo/p/12247158.html

Publicados 277 artículos originales · ganado elogios 65 · vistas 380 000 +

Supongo que te gusta

Origin blog.csdn.net/ailiandeziwei/article/details/104370920
Recomendado
Clasificación