Descripción general de Kafka y su instalación e implementación

Visión de conjunto

Conocimientos preliminares (comprender la cola de mensajes)

Concepto
Cola de mensajes, nombre en inglés: Cola de mensajes, a menudo abreviado como MQ. Entendido literalmente, una cola de mensajes es una cola que se usa para almacenar mensajes.

Middleware de cola de mensajes El middleware de cola de
mensajes es un software (componente) que se utiliza para almacenar mensajes

Por ejemplo:
para analizar el comportamiento del usuario del sitio web, necesitamos registrar el registro de acceso del usuario.
Estos registros se pueden considerar como mensajes y podemos guardarlos en la cola de mensajes.
En el futuro, algunas aplicaciones necesitarán procesar estos registros y estos mensajes se pueden sacar para procesarlos en cualquier momento.

Escenarios de aplicación de colas de mensajes

  1. Procesamiento asincrónico
    Inserte la descripción de la imagen aquí

En el sitio web de comercio electrónico, cuando un nuevo usuario se registra, la información del usuario debe guardarse en la base de datos y, al mismo tiempo, se debe enviar al usuario una notificación adicional de registro por correo electrónico y un código de registro por SMS.
Sin embargo, debido a que el envío de correos electrónicos y el envío de mensajes cortos de registro deben conectarse a un servidor externo, debe esperar un período de tiempo adicional. En este momento, puede usar la cola de mensajes para el procesamiento asincrónico para lograr una respuesta rápida.

  1. Desacoplamiento del sistema
    Inserte la descripción de la imagen aquí
  2. Pico de tráfico
    Inserte la descripción de la imagen aquí
  3. Procesamiento de registros (común en el campo de big data)
    Inserte la descripción de la imagen aquí
    grandes sitios web de comercio electrónico (Taobao, Jingdong, Gome, Suning ...), aplicaciones (Tik Tok, Meituan, Didi, etc.) necesitan analizar el comportamiento del usuario y descubrir usuarios basado en el comportamiento de acceso del usuario Las preferencias y la actividad de, necesita recopilar mucha información de acceso del usuario en la página.

Modelo de interacción

  1. Solicitar modelo de respuesta
  • modelo de respuesta de solicitud http
    Inserte la descripción de la imagen aquí
  • Modelo de respuesta de solicitud de base de datos
    Inserte la descripción de la imagen aquí
  1. Productor, modelo de consumo
    Inserte la descripción de la imagen aquí

Nota:

  1. Kafka se basa en este modelo de interacción
  2. Por lo tanto, cuando utilice Kafka, debe saber cuál es el productor y cuál el consumidor.

Dos modelos de colas de mensajes

  1. Modelo punto a punto
    Inserte la descripción de la imagen aquí

El remitente del mensaje produce el mensaje y lo envía a la cola de mensajes, y luego el receptor del mensaje lo saca de la cola de mensajes y lo consume.
Una vez consumido el mensaje, no hay más almacenamiento en la cola de mensajes, por lo que es imposible que el receptor del mensaje consuma el mensaje que ya se ha consumido.

Características:

  • Uno a uno: cada mensaje tiene un solo receptor (consumidor) (es decir, una vez que se consume, el mensaje ya no está en la cola de mensajes)
  • Sin dependencia: No hay dependencia entre el remitente y el receptor. Después de que el remitente envía un mensaje, no importa si el receptor se está ejecutando o no, no afectará el siguiente mensaje enviado por el remitente;
  • Recepción de comentarios: el receptor debe responder a la cola con éxito después de recibir el mensaje con éxito, para que la cola de mensajes pueda eliminar el mensaje recibido actualmente;
  1. Modelo de publicación y suscripción

Inserte la descripción de la imagen aquí
Características:

  • Uno a muchos: cada mensaje puede tener varios suscriptores;
  • Dependiente: existe una dependencia de tiempo entre el editor y el suscriptor. Para un suscriptor de un tema (Tema), debe crear un suscriptor antes de que pueda consumir los mensajes del editor.
  • Suscribirse con anticipación: para consumir mensajes, los suscriptores deben suscribirse al tema del rol con anticipación y mantenerlo funcionando en línea;

Descripción básica de Kafka

Concept
Kafka es un sistema de cola de mensajes distribuido basado en un modelo de publicación de suscripción con alto rendimiento , alto rendimiento , alta concurrencia , alta confiabilidad, etc.

  1. Alto rendimiento: se utiliza almacenamiento en disco distribuido en lugar de HDFS
  2. Alto rendimiento: lee y escribe datos en tiempo real
  • Se utiliza memoria distribuida y PageCache: el mecanismo de almacenamiento en caché de páginas del sistema operativo
  • Pertenece a la memoria del nivel del sistema operativo. Incluso si el proceso de Kafka falla y se reinicia Kafka, los datos todavía están en la memoria.
  1. Alta simultaneidad: lectura y escritura paralela distribuida
  2. Alta confiabilidad: arquitectura maestro-esclavo distribuida
  3. Alta seguridad:
  • Memoria: operación de registro de registros
  • Disco: mecanismo de copia

Escenarios de aplicación

  • En la arquitectura en tiempo real de big data, se utiliza para el almacenamiento temporal de datos en tiempo real.

Inserte la descripción de la imagen aquí

En la imagen de arriba podemos ver:

  • Productores: puede haber muchas aplicaciones para colocar datos de mensajes en el clúster de Kafka.
  • Consumidores: puede haber muchas aplicaciones que extraen datos de mensajes del clúster de Kafka.
  • Conectores (conectores): los conectores de Kafka pueden importar datos de la base de datos a Kafka y también pueden exportar datos de Kafka a
  • Procesadores de flujo: los procesadores de flujo pueden extraer datos de Kafka o escribir datos en Kafka.

Instalación y despliegue

  1. Cargue el paquete de instalación de Kafka en la máquina virtual y descomprímalo
cd /export/soft/
tar -zxvf kafka_2.12-2.4.1.tgz -C ../server/
  1. Modificar server.properties
cd /export/server/kafka_2.12-2.4.1/config
vim server.properties

添加以下内容:
# 指定broker的id
broker.id=0

# 指定Kafka数据的位置
log.dirs=/export/server/kafka_2.12-2.4.1/data

# 配置zk的三个节点
zookeeper.connect=node1:2181,node2:2181,node3:2181
  1. Copie el kafka instalado en los otros dos servidores
cd /export/server
scp -r kafka_2.12-2.4.1/ node2:$PWD
scp -r kafka_2.12-2.4.1/ node3:$PWD

修改另外两个节点的broker.id分别为1和2:
---------node2--------------
cd /export/server/kafka_2.12-2.4.1/config
vim server.properties
broker.id=1

--------node3--------------
cd /export/server/kafka_2.12-2.4.1/config
vim server.properties
broker.id=2

  1. Configurar la variable de entorno KAFKA_HOME
vi /etc/profile
export KAFKA_HOME=/export/server/kafka_2.12-2.4.1
export PATH=:$PATH:${KAFKA_HOME}

分发到各个节点
scp /etc/profile node2:$PWD
scp /etc/profile node3:$PWD
每个节点加载环境变量
source /etc/profile
  1. Inicie el servidor
# 启动ZooKeeper
/export/server/zookeeper-3.4.6/bin/start-zk-all.sh

# 启动Kafka
cd /export/server/kafka_2.12-2.4.1
nohup bin/kafka-server-start.sh config/server.properties &

# 测试Kafka集群是否启动成功
bin/kafka-topics.sh --bootstrap-server node1:9092 --list

Inserte la descripción de la imagen aquí
No se informa ningún error, lo que indica que el clúster de Kafka se inició correctamente

Configurar el script de inicio / apagado con un solo clic de Kafka

  1. Ingrese al directorio del script de ejecución
cd /export/server/kafka_2.12-2.4.1/bin/
vim slave
  1. Escriba un archivo de configuración esclavo para guardar kafka en qué nodos comenzar
node1
node2
node3
  1. Escriba el script start-kafka.sh
vim start-kafka.sh

添加以下内容:
cat /export/server/kafka_2.12-2.4.1/bin/slave | while read line
do
{
    
    
 echo $line
 ssh $line "source /etc/profile;export JMX_PORT=9988;nohup ${KAFKA_HOME}/bin/kafka-server-start.sh ${KAFKA_HOME}/config/server.properties >/dev/nul* 2>&1 & "
}&
wait
done
  1. Escriba el script stop-kafka.sh
vim stop-kafka.sh

添加以下内容:
cat /export/server/kafka_2.12-2.4.1/bin/slave | while read line
do
{
    
    
 echo $line
 ssh $line "source /etc/profile;jps |grep Kafka |cut -d' ' -f1 |xargs kill -s 9"
}&
wait
done
  1. Configure los permisos de ejecución para start-kafka.sh y stop-kafka.sh
chmod u+x start-kafka.sh
chmod u+x stop-kafka.sh
  1. Realice el inicio y apagado con una sola tecla
./start-kafka.sh
./stop-kafka.sh

Estructura del directorio de software de Kafka

Inserte la descripción de la imagen aquí

Operación básica

  1. Crear tema
    Todos los mensajes en Kafka se almacenan en temas. Para producir mensajes a Kafka, primero debe tener un tema determinado.
# 创建名为test的主题
bin/kafka-topics.sh \
--create \
--bootstrap-server node1:9092 \
--topic test

# 查看目前Kafka中的所有主题
bin/kafka-topics.sh \
--list \
--bootstrap-server node1:9092

Ver detalles del tema de prueba

bin/kafka-topics.sh \
--bootstrap-server node1:9092 \
--describe \
--topic test

Inserte la descripción de la imagen aquí
La primera línea: un resumen de todas las particiones del tema de prueba

PartitionCount: cuenta el número total de particiones en el tema. La figura muestra que la prueba tiene una partición.
ReplicationFactor: cuenta el número de copias de la partición en el tema. La figura muestra que hay una copia de una partición en el
segmento de prueba. .bytes: representa el tamaño de un archivo de segmento

A partir de la segunda línea:

Partición: número de partición, 0 representa la primera partición
Líder: representa la partición actual responsable de leer y escribir en qué máquina, 2 representa la tercera máquina (comenzando desde 0, 2 representa el tercer corredor)
Réplicas: representa la actual En qué máquinas están las réplicas de la partición, 2 representa la tercera máquina
Isr: el conjunto de nodos donde se han sincronizado las réplicas

Eliminar el sujeto de la prueba

bin/kafka-topics.sh \
--delete \
--topic test
  1. Para producir mensajes a Kafka,
    utilice el programa de prueba integrado de Kafka para producir algunos mensajes al tema de prueba de Kafka:
bin/kafka-console-producer.sh \
--broker-list node1:9092 \
--topic test
  1. Consumir mensajes de Kafka
    Copie la ventana de shell de node1 y
    use el siguiente comando para consumir mensajes en el tema de prueba:
bin/kafka-console-consumer.sh \
--bootstrap-server node1:9092 \
--topic test \
--from-beginning

Enviado:
Inserte la descripción de la imagen aquí
Recibido:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/zh2475855601/article/details/115215310
Recomendado
Clasificación