Conocimiento profundo de la serie Kafka (1) -primer conocimiento de Kafka

Directorio de artículos de serie

Artículos de la serie de guías autorizadas de Kakfa

Prefacio

Esta serie es mi transcripción y pensamientos después de leer el libro "La guía definitiva de Kafka".

texto

Introducción a Kafka

Kafka es un sistema de mensajes basado en publicar y suscribirse, generalmente llamado "plataforma de transmisión distribuida". Los datos de Kafka se almacenarán de forma persistente en un orden determinado y los usuarios pueden leerlos cuando lo soliciten. Y Kafka admite una arquitectura distribuida, con protección contra fallas de datos y capacidades de reducción del rendimiento.

Varios conceptos relacionados de Kafka

  1. Mensaje (mensaje): la unidad de datos de Kafka
  2. Lote: representa un grupo de mensajes y los mensajes del mismo grupo pertenecen a un tema y una partición. Porque si quieres enviar un mensaje a la red, lleva mucho tiempo, por lo que puedes enviar lotes de datos, es decir, lotes.
  3. Tema: los mensajes en Kafka están clasificados por tema. El tema puede verse como una tabla en la base de datos.
  4. Partición (partición): un tema se puede dividir en varias particiones y una partición es un registro de confirmación.
  5. Productor: Primero, el cliente de Kafka es el usuario del sistema Kafka, y los usuarios se dividen en productores y consumidores. El productor aquí se refiere al usuario que creó el mensaje.
  6. Consumidor (consumidor): responsable de leer los mensajes, también se les puede llamar suscriptores. Un consumidor puede suscribirse a uno o varios temas y leerlos en el orden en que se generan los mensajes.
  7. Desplazamiento (desplazamiento): un tipo de metadatos, que es un valor entero incremental. Al crear un mensaje, Kafka agregará el desplazamiento al mensaje.
  8. Grupo de consumidores: un grupo de consumidores puede contener varios consumidores.
  9. broker: un servidor Kafka independiente se denomina broker. El corredor es responsable de recibir mensajes de los productores. Y establezca el desplazamiento para el mensaje y envíe el mensaje al disco para su almacenamiento, al mismo tiempo proporcione servicios a los consumidores y responda a las solicitudes para leer la partición.

Modelo de consumo y adición de mensajes de Kafka.

Inserte la descripción de la imagen aquí
Descripción general de Kafka
Inserte la descripción de la imagen aquí

Nota:

  1. Los mensajes se escriben en la partición en un anexo y luego se leen en el orden de primero en entrar, primero en salir .
  2. Debido a que un tema generalmente contiene varias particiones, no hay garantía de que el orden dentro de un tema sea ordenado . Pero se puede garantizar que los mensajes en una sola partición estén en orden .
  3. El productor publica un mensaje sobre un tema específico y generalmente distribuye el mensaje de manera uniforme a todas las particiones bajo el tema especificado de forma predeterminada.
  4. Los consumidores distinguen los mensajes que se han leído en función del desplazamiento del mensaje verificado .
  5. Los consumidores de un grupo de consumidores son mutuamente excluyentes , lo que garantiza que cada partición solo pueda ser utilizada por un consumidor .

Por que elegir Kafka

Hay muchos sistemas de mensajería basados ​​en publicar y suscribirse, pero ¿por qué muchas grandes empresas utilizan Kafka?
la razón:

  1. Kafka puede brindar soporte a múltiples productores y consumidores: ya sea usando un tema único o múltiples en el lado del cliente, o múltiples consumidores leyendo datos de un solo flujo de mensajes. Y los consumidores no se afectan entre sí. (Y una vez que un cliente lee los mensajes de otros sistemas de cola, otros clientes no pueden leerlos)
  2. Almacenamiento de datos en disco: los datos de Kafka tienen características de retención. El mensaje se enviará al disco y se guardará en un orden determinado. Y cada tema puede establecer las reglas de retención de mensajes por separado.
  3. Escalabilidad: Kafka admite la agrupación en clústeres y la distribución. El número de nodos se puede expandir horizontalmente.
  4. Alto rendimiento: la capacidad de procesamiento simultáneo de Kafka es sin duda la más alta (en comparación con ActiveMQ, RabbitMQ, RocketMQ)

Kafka

La siguiente es la conexión, incluido el paquete de instalación de zookeeper y kafka.
Enlace: haga clic en mí
Extraiga el código: cvhs

Instalar zookeeper

  1. Descomprima el paquete de instalación: tar -zxf zookeeper-3.4.6.tar.gz
  2. Ingrese el paquete de instalación y copie un archivo de configuración (zoo.cfg se usa por defecto): cp zoo_sample.cfg zoo.cfg
  3. Modifique el archivo de configuración: vi conf / zoo.cfg
# 先提前在安装目录下创建一个文件夹zkData:mkdir zkData,用来保存数据和日志
dataDir=/opt/modules/zookeeper-3.4.6/zkData
  1. Inicie zookeeper: bin / zkServer.sh start , si aparecen las siguientes palabras, significa que el inicio fue exitoso.
    Inserte la descripción de la imagen aquí

Afka Kafka

  1. Descomprimir: tar -zxf kafka_2.11-0.11.0.0.tgz
  2. Ingrese a la carpeta y cree un directorio: mkdir logs
  3. Modifique el archivo de configuración: vi config / server.properties
    modifique la ruta de almacenamiento del registro y la dirección del zookeeper.
zookeeper.connect=192.168.135.237:2181
log.dirs=/opt/modules/kafka_2.11-0.11.0.0/logs
#添加参数
default.replication.factor=1
#打开监听,否则消息写入不进去
listeners=PLAINTEXT://192.168.135.237:9092
  1. Iniciar kafka:
./bin/kafka-server-start.sh config/server.properties
  1. Crear tema:
./bin/kafka-topics.sh --zookeeper 192.168.135.237:2181 --partitions 1 --replication-factor 1 --create --topic test2

Si aparece la imagen, significa que la creación se ha realizado correctamente.
Inserte la descripción de la imagen aquí

  1. Productor produce noticias:
./bin/kafka-console-producer.sh --broker-list 192.168.135.237:9092 --topic test2

Inserte la descripción de la imagen aquí

  1. Noticias de consumo de consumo:
./bin/kafka-console-consumer.sh --zookeeper 192.168.135.237:2181 --from-beginning --topic test2

Inserte la descripción de la imagen aquí


Explicación detallada de varias configuraciones generales de archivos de configuración de Kafka

Configuración relacionada con el corredor:

  1. broker.id:

Como identificador único del corredor, no se puede repetir. El valor predeterminado es 0, por lo que si desea crear un clúster, esta identificación debe cambiarse

  1. zookeeper.connect

Dirección de Zookeeper utilizada para almacenar metadatos del corredor. Si hay un grupo de cuidadores del zoológico, sepárelos con comas. El
formato es: nombre de host: puerto / ruta.
nombre de host:
puerto IP del servidor de Zookeeper: puerto de conexión del cliente de Zookeeper, generalmente
ruta 2181 : configuración opcional, si no se especifica, la ruta raíz se utiliza por defecto.

  1. log.dirs

Todos los mensajes de kafka se almacenan en el disco, y este parámetro especifica el directorio donde se almacenan estos fragmentos de registro.

  1. num.recovery.thread.per.data.dir

En general, hay tres situaciones: Kafka utilizará un grupo de subprocesos configurable para procesar los fragmentos de registro
: 1. El servidor se inicia normalmente para abrir los fragmentos de registro de cada partición.
2. Reinicie después de que el servidor se bloquee para verificar y truncar los fragmentos de registro de cada partición.
3. El servidor se apaga normalmente para cerrar los fragmentos de registro.
De forma predeterminada, cada directorio de registro usa solo un condado.

  1. auto.create.topics.enable

Generalmente hay tres situaciones, Kafka creará automáticamente un tema
1. Cuando un productor comienza a escribir mensajes sobre el tema.
2. Cuando un consumidor comienza a leer mensajes del tema.
3. Cuando algún cliente envía metadatos al tema.

Algunas configuraciones predeterminadas del tema

  1. particiones numéricas

Como un número entero, indica cuántas particiones contendrá el tema recién creado.

  1. log.retention.ms

Kafka generalmente decide cuánto tiempo se pueden retener los datos en función del tiempo.
El parámetro log.retention.hours se utiliza de forma predeterminada para configurar el tiempo, y el tiempo predeterminado es 168 horas, que es 1 semana

  1. log.retention.bytes

Determine si el mensaje caduca según el número de bytes de mensaje reservados. Actúa en cada partición.
Ejemplo: si un tema contiene 8 particiones y log.retention.bytes = 1 GB, cada tema puede retener hasta 8 GB de datos.

  1. log.segment.bytes

Las tres configuraciones anteriores se aplican a fragmentos de registro, no a un solo mensaje.
Primero, cuando el mensaje llega al intermediario, se agregará al fragmento de registro actual en la partición. Si el tamaño del segmento de registro supera el límite superior especificado por log.segment.bytes (el valor predeterminado es 1 GB), el segmento de registro actual se cerrará y se abrirá un nuevo segmento de registro.

  1. log.segment.ms

El parámetro utilizado para controlar la hora de cierre del fragmento de registro, que especifica el tiempo después del cual se cerrará el fragmento de registro.

  1. message.max.bytes

Usado para limitar el tamaño de un solo mensaje, el valor predeterminado es 1000000, que es 1 MB. Si el mensaje enviado por el productor excede este tamaño, el corredor no recibirá el mensaje y el productor recibirá el mensaje de error devuelto por el corredor.


para resumir

Este artículo describe varios aspectos:
1. Conceptos relacionados con Kafka.
2. Un uso e instalación sencillos de Kafka.
3. Configuración y análisis relacionados con el broker y el tema de Kafka.
El siguiente artículo ofrecerá una introducción detallada basada en el nivel de API, consumidor y productor de Kafka.

Supongo que te gusta

Origin blog.csdn.net/Zong_0915/article/details/109258714
Recomendado
Clasificación