Instalación y uso de la cola de mensajes de Kafka (1)

1. Descripción general de Kafka

1.1 Definición

Kafka es un Message Queue distribuido basado en el modelo de publicación / suscripción, que se utiliza principalmente en el procesamiento en tiempo real de big data.

1.2 Cola de mensajes

1.2.1 Escenarios de aplicación de colas de mensajes tradicionales

Inserte la descripción de la imagen aquí
Las ventajas de utilizar colas de mensajes:
1) El desacoplamiento le
permite ampliar o modificar el procesamiento en ambos lados de forma independiente, siempre que se asegure de que cumplen con las mismas restricciones de interfaz.
2) Capacidad de recuperación Cuando
una parte del sistema falla, no afectará a todo el sistema. La cola de mensajes reduce el acoplamiento entre procesos, por lo que incluso si un proceso de procesamiento de mensajes se cuelga, los mensajes agregados a la cola aún se pueden procesar después de que se restaure el sistema.
3) El búfer
ayuda a controlar y optimizar la velocidad del flujo de datos a través del sistema y a resolver la inconsistencia de la velocidad de procesamiento de los mensajes de producción y de consumo.
4) Flexibilidad y capacidad máxima de procesamiento
En el caso de un aumento repentino del tráfico, las aplicaciones aún deben seguir funcionando, pero este tráfico en ráfagas no es común. Sin duda, es un gran desperdicio invertir recursos en cualquier momento para poder manejar tales picos de visitas. El uso de colas de mensajes permite que los componentes clave resistan la presión de acceso repentina y no colapsarán por completo debido a solicitudes repentinas sobrecargadas.
5) Comunicación asincrónica En
muchos casos, los usuarios no quieren ni necesitan procesar mensajes inmediatamente. La cola de mensajes proporciona un mecanismo de procesamiento asincrónico que permite a los usuarios poner un mensaje en la cola, pero no lo procesa inmediatamente. Coloque todos los mensajes que desee en la cola y luego procéselos cuando sea necesario.

1.2.2 Dos modos de cola de mensajes

(1) Modo punto a punto (uno a uno, el consumidor extrae datos de forma activa y el mensaje se borra después de recibir el mensaje) El
productor del mensaje produce el mensaje y lo envía a la cola, y luego el mensaje el consumidor lo saca de la cola y consume el mensaje. Una vez consumido el mensaje, no hay más almacenamiento en la cola, por lo que es imposible que el consumidor de mensajes consuma el mensaje que ya se ha consumido. La cola admite la existencia de varios consumidores, pero para un mensaje, solo un consumidor puede consumir.
Inserte la descripción de la imagen aquí
(2) Modelo de publicación / suscripción (uno a varios, los mensajes no se borrarán después de que los consumidores consuman datos) los
productores de mensajes (publicar) publican mensajes en temas y varios consumidores de mensajes (suscribirse) consumen los mensajes al mismo tiempo. A diferencia del método peer-to-peer, todos los suscriptores consumirán los mensajes publicados en el tema.
Inserte la descripción de la imagen aquí

1.3 Infraestructura de Kafka

Inserte la descripción de la imagen aquí
1) Productor: El productor de mensajes, que es el cliente que envía mensajes al corredor de Kafka;
2) Consumidor: El consumidor de mensajes, el cliente que recibe mensajes del corredor de Kafka;
3) Grupo de consumidores (CG): El grupo de consumidores consiste de composición de múltiples consumidores. Cada consumidor de un grupo de consumidores es responsable de consumir datos en diferentes particiones. Una partición solo puede ser consumida por un consumidor de un grupo; los grupos de consumidores no se afectan entre sí. Todos los consumidores pertenecen a un determinado grupo de consumidores, es decir, el grupo de consumidores es un suscriptor lógico.
4) Broker: Un servidor kafka es un broker. Un clúster está compuesto por varios corredores. Un corredor
puede contener varios temas.
5) Tema: Puede entenderse como una cola, y tanto los productores como los consumidores se enfrentan a un tema; 6) Partición: Para lograr escalabilidad, un tema muy grande se puede distribuir a múltiples brokers (es decir, servidores), un tema se puede dividir en varias particiones, cada partición es una cola ordenada;
7) Réplica: Réplica: para garantizar que cuando un nodo del clúster falla, los datos de la partición en el nodo no se pierden y Kafka puede seguir funcionando, Kafka proporciona un mecanismo de copia, cada partición de un tema tiene varias copias, un líder y varios seguidores.
8) Líder: El "maestro" de múltiples copias de cada partición, los objetos que los productores envían datos y los objetos que los consumidores consumen datos son todos líderes.
9) Seguidor: El "esclavo" en varias copias de cada partición sincroniza los datos del líder en tiempo real y mantiene los datos sincronizados con el líder. Cuando el líder falla, un seguidor se convertirá en el nuevo líder.

2. Inicio rápido de Kafka

2.1 Instalación y despliegue

2.1.1 Planificación de clústeres

Inserte la descripción de la imagen aquí

2.1.2 descarga del paquete jar

Enlace de descarga
Inserte la descripción de la imagen aquí

2.1.3 Implementación de clústeres

1) Descomprime el paquete de instalación

[atguigu@hadoop102 software]$ tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module/

2) Modifique el nombre del archivo después de la descompresión

[atguigu@hadoop102 module]$ mv kafka_2.11-0.11.0.0/ kafka

3) Cree una carpeta de registros en el directorio / opt / module / kafka

[atguigu@hadoop102 kafka]$ mkdir logs

4) Modificar el archivo de configuración

[atguigu@hadoop102 kafka]$ cd config/
[atguigu@hadoop102 config]$ vi server.properties

Introduzca la siguiente:

#broker 的全局唯一编号,不能重复
broker.id=0
#删除 topic 功能使能
delete.topic.enable=true
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘 IO 的现成数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka 运行日志存放的路径
log.dirs=/opt/module/kafka/logs
#topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
#配置连接 Zookeeper 集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181

5) Configurar variables de entorno

[atguigu@hadoop102 module]$ sudo vi /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
[atguigu@hadoop102 module]$ source /etc/profile

6) Distribuya el paquete de instalación

[atguigu@hadoop102 module]$ xsync kafka/

Nota: Recuerde configurar las variables de entorno de otras máquinas después de la distribución.

7) Modifique broker.id = 1 y broker.id = 2 en el archivo de configuración /opt/module/kafka/config/server.properties en hadoop103 y hadoop104 respectivamente
8) Inicie el clúster

[atguigu@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon
config/server.properties
[atguigu@hadoop103 kafka]$ bin/kafka-server-start.sh -daemon
config/server.properties
[atguigu@hadoop104 kafka]$ bin/kafka-server-start.sh -daemon
config/server.properties

9) Apague el clúster

[atguigu@hadoop102 kafka]$ bin/kafka-server-stop.sh stop
[atguigu@hadoop103 kafka]$ bin/kafka-server-stop.sh stop
[atguigu@hadoop104 kafka]$ bin/kafka-server-stop.sh stop

10) Guión grupal de Kafka

for i in hadoop102 hadoop103 hadoop104
do
echo "========== $i ==========" 
ssh $i '/opt/module/kafka/bin/kafka-server-start.sh -daemon 
/opt/module/kafka/config/server.properties'
done

2.2 Operación de línea de comando de Kafka

1) Ver todos los temas en el servidor actual

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --list

2) Crear tema

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --create --replication-factor 3 --partitions 1 --topic first

Descripción de la opción:
-topic define el nombre del tema
-replication-factor define el número de réplicas
-partitions define el número de particiones

3) Eliminar tema

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --delete --topic first

Es necesario establecer delete.topic.enable = true en server.properties; de lo contrario, solo está marcado para su eliminación.

4) Envíe un mensaje

[atguigu@hadoop102 kafka]$ bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic first
>hello world
>atguigu atguigu

5) Noticias para el consumidor

[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh \ --zookeeper hadoop102:2181 --topic first

[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh \
--bootstrap-server hadoop102:9092 --topic first

[atguigu@hadoop102 kafka]$ bin/kafka-console-consumer.sh \
--bootstrap-server hadoop102:9092 --from-beginning --topic first

--Desde el principio: se leerán todos los datos anteriores del tema.

6) Ver los detalles de un tema

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --describe --topic first

7) Modificar el número de particiones

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --alter --topic first --partitions 6

Supongo que te gusta

Origin blog.csdn.net/weixin_44726976/article/details/109195120
Recomendado
Clasificación