Aufbauprozess der verteilten Nachrichtenstromverarbeitungsplattform Kafka (1) - Kafka für eigenständige und Clusterumgebungen und Einführung in die Verwendung

1. Kafka-Übersicht

1.1 Das vergangene und gegenwärtige Leben von Kafka

Kafka war ursprünglich ein internes Infrastruktursystem bei LinkedIn. Es wurde ursprünglich entwickelt, weil LinkedIn über Datenbanken und andere Systeme zum Speichern von Daten verfügte, aber eine Komponente fehlte, die den kontinuierlichen Datenfluss bewältigen konnte.

Daher möchten Entwickler im Hinblick auf das Designkonzept nicht nur ein System entwickeln, das Daten wie relationale Datenbanken, Nosql-Datenbanken, Suchmaschinen usw. speichern kann, sondern hoffen auch, Daten als einen sich ständig ändernden und wachsenden Strom zu betrachten. und basierend auf dieser Idee ein Datensystem und eine Datenarchitektur aufbauen.

Kafka ähnelt stark einem Nachrichtensystem, das das Veröffentlichen und Abonnieren von Nachrichtenströmen ermöglicht, unterscheidet sich jedoch stark von herkömmlichen Nachrichtensystemen:

  • Kafka ist ein modernes verteiltes System, das im Cluster läuft und frei skalierbar ist.
  • Kafka kann Daten nach Bedarf speichern und so lange aufbewahren, wie es nötig ist.
  • Die Streaming-Verarbeitung bringt die Ebene der Datenverarbeitung auf ein neues Niveau. Das Nachrichtensystem überträgt nur Daten. Die Streaming-Verarbeitungsfunktion von Kafka ermöglicht es uns, abgeleitete Streams und Datensätze mit sehr wenig Code dynamisch zu verarbeiten.

Kafka ist nicht nur eine Nachrichten-Middleware, sondern auch eine Streaming-Plattform. Auf dieser Plattform können Sie Datenströme veröffentlichen und abonnieren (Kafka-Streams verfügen über ein separates Paket zur Stream-Verarbeitung) und diese zur Verarbeitung speichern. Dies ist das Designkonzept von Kafka-Autor.

Im Bereich Big Data kann Kafka auch als Echtzeitversion von Hadoop betrachtet werden, es gibt jedoch noch einige Unterschiede: Hadoop kann große Mengen an Datendateien, oft in Terabyte gezählt, speichern und regelmäßig verarbeiten, während Kafka speichern und regelmäßig verarbeiten kann verarbeiten kontinuierlich große Datenströme. Hadoop wird hauptsächlich zur Datenanalyse verwendet, während Kafka aufgrund seiner geringen Latenz eher für Kerngeschäftsanwendungen geeignet ist.

1.2 Hauptzweck

  • Asynchrone Verarbeitung
  • Anwendungsentkopplung
  • Beschneidung von Verkehrsspitzen
  • Protokollverarbeitung
  • Verteilte Nachrichtenverarbeitung
  • Streaming-Computing

2. Voreingestellte Umgebung und Softwarevorbereitung

2.1 Anforderungen an das Umgebungsinstallationspaket

  • 3 virtuelle Maschinen (ich verwende hier 5 virtuelle Maschinen: kafka01/kafka02/kafka03/kafka04/kafka05)
  • CentOS == 7.9
  • JDK >=1.8.0_181
  • kafka_2.13-3.2.0

2.2 Legen Sie den Hostnamen des virtuellen Hostknotens fest

Kann ignoriert werden, nicht besonders wichtig
Fügen Sie hier eine Bildbeschreibung ein

2.3 Hosts-Dateikonfiguration

Fügen Sie hier eine Bildbeschreibung ein

2.4 Laden Sie das Installationspaket herunter

Direkt herunterladenkafka_2.13-3.2.0Der Befehl an die virtuelle Maschine lautet wie folgt

wget https://archive.apache.org/dist/kafka/3.2.0/kafka_2.13-3.2.0.tgz

2.5 In das angegebene Installationsverzeichnis entpacken

Extrahieren kafka_2.13-3.2.0 in das angegebene Installationsverzeichnis

mkdir -p /home/saturn/software/kafka/kafka320

tar -zxf kafka_2.13-3.2.0.tgz -C /home/saturn/software/kafka/kafka320

mv /home/saturn/software/kafka/kafka320/kafka_2.13-3.2.0 /home/saturn/software/kafka/kafka320/kafka

2.6 Konfigurieren Sie Kafka-Systemvariablen

vim ~/.bashrcEine Personvim ~/.bash_profileEine Personvim /etc/profileTokai
Fügen Sie hier eine Bildbeschreibung ein

#修改成你自己的jdk安装目录
JAVA_HOME=/home/saturn/software/java/jdk8
#修改成你自己的kafka安装目录
KAFKA_HOME=/home/saturn/software/kafka/kafka320/kafka
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$KAFKA_HOME/bin

Führen Sie nach dem Speichern der Änderungen den folgenden Befehl aus, damit die Konfiguration sofort wirksam wird

source  ~/.bash_profile

3. Einführung in verschiedene Möglichkeiten zum Aufbau eines Kafka-Clusters

3.1. Verwenden Sie den Zookeeper-Cluster, um einen Kafka-Cluster zu erstellen

3.1.1. Konfigurieren Sie den Zookeeper-Cluster

kafka_2.13-3.2.0 wird mit dem Zookeeper-Dienst geliefert. Es ist nicht erforderlich, einen zusätzlichen Zookeeper-Clusterdienst zu erstellen. Wenn Sie ihn nicht verwenden möchten, können Sie auch Ihren eigenen Zookeeper-Cluster verwenden.
Im Folgenden wird hauptsächlich die Verwendung kafka_2.13-3.2.0 des integrierten Zookeeper-Dienstes zum Aufbau eines Zookeeper-Clusters vorgestellt

Die Hauptsache ist, $KAFKA_HOME/config/zookeeper.properties zu ändern. Wenn Sie selbst einen Zookeeper-Cluster erstellen, handelt es sich bei der Änderung um die Konfigurationsdatei zoo.cfg. Ändernzookeeper.propertiesDie Die Konfigurationsdatei lautet wie folgt:
Die Hauptsache besteht darin, die Parameter jedes Zookeeper-Knotens zu konfigurierendataDir und die Clusterkonfiguration wie folgt hinzuzufügen

# the directory where the snapshot is stored.
dataDir=/home/saturn/soft_data/zookeeper_data

# the port at which the clients will connect
clientPort=2181

# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=0

# Disable the adminserver by default to avoid port conflicts.
# Set the port to something non-conflicting if choosing to enable this
admin.enableServer=false
# admin.serverPort=8080

server.0=kafka01:2888:3888
server.1=kafka02:2888:3888
server.2=kafka03:2888:3888
server.3=kafka04:2888:3888
server.4=kafka05:2888:3888

Nachdem geändert wurde, speichern Sie die Änderung. Nehmen Sie die gleiche Änderung an zookeeper.properties auf den anderen 4 Knoten vor. Speichern Sie sie einfach, nachdem die Änderung abgeschlossen ist.

Erstellen Sie dann eine „Textdatei“myid im dataDir-Verzeichnis des von uns festgelegten zookeeper-Datenspeicherverzeichnisses.

kafka01$dataDir/myidDer Inhalt der Datei auf dem Knoten lautet wie folgt:

0

Speichern und schließen

kafka02$dataDir/myidDer Inhalt der Datei auf dem Knoten lautet wie folgt:

1

Speichern und schließen

Die Einstellungen auf den anderen drei Knoten sind ebenfalls dieselben wie oben.

Hinweis: Die in der myid-Datei auf jedem Knoten geschriebene ID-Nummer muss mit der inzookeeper.properties konfigurierten übereinstimmen. Wenn der aktuelle Knoten Wenn es kafka01 ist, ist die in die MyID-Datei geschriebene ID 0. Wenn der aktuelle Knoten kafka02 ist, ist die in die MyID-Datei geschriebene ID 1. Das bedeutet es. Ich weiß nicht, ob es klar ausgedrückt wird .

3.1.2. Starten Sie den Zookeeper-Cluster

Da ich die Systemumgebungsvariablen von Kafka bereits konfiguriert habe, kann ich das ausführbare Shell-Skript im Bin-Verzeichnis von Kafka direkt verwenden, um den Zookeeper-Dienst von Kafka zu starten.

zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties

oder geben Sie$KAFKA_HOME/config das auszuführende Verzeichnis ein

cd $KAFKA_HOME/config

zookeeper-server-start.sh ./zookeeper.properties

Wenn Sie die Systemumgebungsvariablen von Kafka nicht konfiguriert haben, können Sie es mit den folgenden zwei Befehlen starten

cd /你的kafka的安装目录/bin

./zookeeper-server-start.sh ../config/zookeeper.properties

Oder verwenden Sie den absoluten Pfad

/你的kafka的安装目录/bin/zookeeper-server-start.sh /你的kafka的安装目录/config/zookeeper.properties

Starten Sie den Zookeeper-Dienst vonkafka01/kafka02``kafka03``kafka04``kafka05 mit einer der oben genannten Methoden. Überprüfen Sie nach erfolgreichem Start den Ausführungsstatus von zookeeper

jps

Fügen Sie hier eine Bildbeschreibung ein
oder

ps -ef|grep zookeeper

Fügen Sie hier eine Bildbeschreibung ein

3.1.3. Kafka-Cluster konfigurieren

Die Hauptsache ist, $KAFKA_HOME/config/server.properties zu ändern. Zu den wichtigsten geänderten Konfigurationsinhalten gehören die folgenden Elemente:
Verwenden Sie jetzt kafka01 auf dem Knoten Die Konfigurationsänderung wird beispielhaft erläutert. Andere Hostknoten (kafka02,kafka03,kafka04, kafka05)Die Änderungen sind ähnlich

##broker节点的唯一标识,集群中的每一台都需要唯一
broker.id=0
##指定 Kafka 代理绑定的网络接口和端口号,以接收来自客户端和其他代理的连接
listeners=PLAINTEXT://kafka01:9092
##指定 Kafka 日志文件的存储目录。Kafka 使用日志来存储消息。
log.dirs=/home/saturn/soft_data/kafka_data/kafka-logs
##存储消费者位移(offsets)的主题的副本因子
offsets.topic.replication.factor=3
##指定用于协调 Kafka 集群的 ZooKeeper 连接字符串
zookeeper.connect=kafka01:2181,kafka02:2181,kafka03:2181,kafka04:2181,kafka05:2181/kafka
##zookeeper连接的超时时间设置
zookeeper.connection.timeout.ms=30000

Was für andere Hostknoten geändert werden muss, ist die Domänennamenkonfiguration in broker.id und listeners. Die Optimierung anderer Konfigurationsparameter kann später geändert werden.

3.1.4. Starten Sie den Kafka-Cluster

Da ich die Systemumgebungsvariablen von Kafka bereits konfiguriert habe, kann ich das ausführbare Shell-Skript im Bin-Verzeichnis von Kafka direkt verwenden, um den Zookeeper-Dienst von Kafka zu starten.

kafka-server-start.sh $KAFKA_HOME/config/server.properties

oder geben Sie$KAFKA_HOME/config das auszuführende Verzeichnis ein

cd $KAFKA_HOME/config

kafka-server-start.sh ./server.properties

Wenn Sie die Systemumgebungsvariablen von Kafka nicht konfiguriert haben, können Sie es mit den folgenden zwei Befehlen starten

cd /你的kafka的安装目录/bin

./kafka-server-start.sh ../config/server.properties

Oder verwenden Sie den absoluten Pfad

/你的kafka的安装目录/bin/kafka-server-start.sh /你的kafka的安装目录/config/server.properties

Starten Sie die Broker-Dienste vonkafka01/kafka02``kafka03``kafka04``kafka05 mit einer der oben genannten Methoden. Überprüfen Sie nach erfolgreichem Start den Ausführungsstatus von kafka

jps

Fügen Sie hier eine Bildbeschreibung ein
oder

ps -ef|grep kafka

Fügen Sie hier eine Bildbeschreibung ein
Mit den oben genannten Schritten haben wir die Einrichtung des Kafka-Clusters in ZooKeeper abgeschlossen. Der gesamte Vorgang ist ebenfalls sehr einfach, erfordert jedoch Vorsicht, insbesondere beim Ändern der Cluster-Parameterkonfiguration. Wenn Sie damit nicht vertraut sind, können Sie dies tun Übe es einfach ein paar Mal.

3.2. Verwenden Sie Kraft, um einen Kafka-Cluster aufzubauen

Kafka bietet eine weitere Möglichkeit, die verteilte Koordinationsfunktion durch Zookeeper nach Version 3.x zu ersetzen, nämlichkraft,
wenn Wir hoffen, < zu verwenden /span>kraft zum Betreiben des Kafka-Clusters. Sie können den Schritten folgen, um den Betrieb zu konfigurieren.

3.2.1.Kraft-Konfigurationsdatei

Es gibt ein Verzeichnis unter dem Kafka-Installationsverzeichnis Wenn Sie Kraft verwenden müssen, um Kafka zu starten , Sie müssen die Konfigurationsdatei in diesem Verzeichnis ändern Lassen Sie uns über die Konfigurationsparameter sprechen, die geändert werden müssen, um einen Kafka-Cluster zu erstellen: configkraft
Fügen Sie hier eine Bildbeschreibung ein
kafka
Fügen Sie hier eine Bildbeschreibung ein

Hier verwenden wirkafka01 zur Demonstration

Ändernkafka01 die Datei auf dem Computer config/kraft/server.properties, einige Parameter müssen entsprechend Ihren eigenen Bedürfnissen geändert werden

process.roles=broker,controller
#这里需要修改
node.id=1
#这里需要修改(我这里kafka集群一共5台节点。所以这里配置的是5个, 你有多少个就配置多少个)
controller.quorum.voters=1@kafka01:9093,2@kafka02:9093,3@kafka03:9093,4@kafka04:9093,5@kafka03:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
inter.broker.listener.name=PLAINTEXT
#这里需要修改(这里需要根据当前节点的域名或者IP进行修改,如果是kafka01就修改成kafka01的域名或者公网IP)
advertised.listeners=PLAINTEXT://kafka01:9092
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
#这里需要修改(修改成你自定义的kraft日志存储目录)
#log.dirs=/tmp/kraft-combined-logs
#log.dirs=/home/saturn/soft_data/zookeeper_data/kraft-combined-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000

Die advertised.listeners und node.id der anderen 4 Maschinen müssen ebenfalls geändert werden

3.2.2.kraft initialisiert den Kafka-Cluster

Initialisieren Sie das Clusterdatenverzeichnis:

kafka-storage.sh random-uuid

Es wird eine zufällige Cluster-ID-Zeichenfolge generiert, die im folgenden Befehl verwendet werden muss

Jede Maschine führt Folgendes aus:

##此处-t参数后面跟的字符串就是上面生成的随机的clusterId字符串
bin/kafka-storage.sh format -t EzhjsV8IS3SwDFK42SbSnA -c $KAFKA_HOME//config/kraft/server.properties

#Kafka-Cluster starten

kafka-server-start.sh -daemon  $KAFKA_HOME/config/kraft/server.properties

4. Demonstration der Kafka-Befehlszeilenoperation

4.1. Beschreibung der Themenskriptparameter und Anwendungsbeispiele in Kafka

4.1.1.kafka-topics.sh Parameterbeschreibung

Parametername Ist es obligatorisch? erklären
–bootstrap-server Ja Geben Sie die Adresse und Portnummer des Kafka-Brokers an
-erstellen NEIN Erstellen Sie ein neues Thema
-Liste NEIN Listen Sie alle Themen im aktuellen Kafka-Cluster auf
-Thema NEIN Geben Sie den Namen des Themas an, das erstellt oder bearbeitet werden soll
-beschreiben NEIN Zeigt detaillierte Informationen zu einem bestimmten Thema an, einschließlich der Zuordnung von Partitionen und Replikaten
-löschen NEIN Löschen Sie das angegebene Thema
-Gewalt NEIN Erzwungenes Löschen, beim Löschen eines Themas ist keine Sicherheitsabfrage erforderlich
–wenn-nicht-existiert NEIN Wenn beim Erstellen eines Themes festgelegt, wird der Vorgang nur ausgeführt, wenn das Theme noch nicht vorhanden ist.
–wenn-existiert NEIN Wenn beim Ändern, Löschen oder Beschreiben eines Themas festgelegt, wird der Vorgang nur ausgeführt, wenn das Thema vorhanden ist.
–Partitionen NEIN Geben Sie die Anzahl der Partitionen an, die für das Thema erstellt werden sollen
–Replikationsfaktor NEIN Gibt den Replikationsfaktor des Themas an, also die Anzahl der Replikate pro Partition
-Ausführung NEIN Überprüfen Sie die Versionsnummer von Kafka
-helfen NEIN Sehen Sie sich die Parameteroptionsbeschreibung von kafka-topics.sh an

4.1.2.Praktische Anwendungsfälle von kafka-topics.sh

  • Listen Sie alle Themen auf
kafka-topics.sh --bootstrap-server localhost:9092 --list

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.

  • Listen Sie Details zum Thema test01 auf
kafka-topic.sh --bootstrap-server localhost:9092 --topic test01 --describe

Wenn wir auf das Thema zugreifen möchten, das wir über den kafkaClient im externen Netzwerk erstellt haben, verwenden Sie am besten oder < beim Festlegen von --bootstrap-server Parameter hier. /span> Um das Thema zu erstellen, sind die folgenden Themenoperationsbefehle und die Operationen auf der Produzentenseite und der Konsumentenseite gleich. Bitte beachten Sie! 当前节点的域名:9092公网IP:9092

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.

  • Erstellen Sie den Themennamen test02, 1 Kopie, 1 Partition
kafka-topics.sh --bootstrap-server localhost:9092  --create --topic test02 --replication-factor 1 --partitions 1

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.

  • Erstellen Sie ein Thema mit dem Namen test01 (erstellen Sie es, falls es nicht vorhanden ist).
kafka-topics.sh --bootstrap-server localhost:9092  --create --topic test02 --replication-factor 1 --partitions 1 --if-not-exists

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.

  • Ändern Sie die Anzahl der Partitionen des Themas test02 von 1 auf 2 (Hinweis: Partitionen können nicht gelöscht werden).
kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic test01 --partitions 2

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.

**Erklärung:** Einige Schüler verstehen möglicherweise nicht die oben erwähnte Partition, die nicht gelöscht werden kann, warum sie nicht gelöscht werden kann, weil unsere Nachrichten alle an die Partition übermittelt werden und wenn die Strategie der Nachrichtenübermittlung an die Partition zufällig ist, Sobald das aktuelle Thema verwendet wird, können wir nicht feststellen, in welcher Partition die Nachricht abgelegt wurde und ob sie verbraucht wurde. Wenn die Partition zu diesem Zeitpunkt gelöscht wird, gibt es keine Garantie dafür, dass die Nachricht normal verbraucht wird, was zu Datenverlust führt . Das ist für uns inakzeptabel, daher kann die Partition nur erweitert, nicht verkleinert werden.

  • Löschen Sie das nicht vorhandene Thema test03

  • Thema test02 löschen (wenn es ein Thema mit dem Namen test02 gibt, löschen Sie es)

4.2. Beschreibung der Producer-Skriptparameter und Anwendungsbeispiele in Kafka

kafka-console-producer.shist ein von Kafka bereitgestelltes Befehlszeilentool zum Senden von Nachrichten an Kafka-Themen von der Konsole aus.

4.2.1.kafka-console-producer.sh Parameterbeschreibung

Parametername Ist es obligatorisch? erklären
--broker-list (in 3.x veraltet) Ja Geben Sie die Adresse und Portnummer des Kafka-Brokers an. Mehrere Broker werden durch Kommas getrennt (Version 3.x ist veraltet, verwenden Sie –boostrap-server).
–boostrap-server Ja Geben Sie die Adresse und Portnummer des Kafka-Brokers an. Mehrere Broker werden durch Kommas () getrennt.
-Thema Ja Geben Sie den Themennamen an, an den Nachrichten gesendet werden sollen
–Komprimierungscodec NEIN Legt den Codec für die Nachrichtenkomprimierung fest. Optionale Werte sind „none“, „gzip“, „snappy“ oder „lz4“.
–sync NEIN Jede Nachricht wartet auf die Bestätigung vom Server, bevor die nächste Nachricht gesendet wird
-Auszeit NEIN Legen Sie das Zeitlimit für das Senden von Nachrichten in Millisekunden fest
–Chargengröße NEIN Kumulierte Größe der Nachrichten, auf die der Produzent wartet, bevor er sie an den Broker sendet. Größere Batchgrößen können den Durchsatz verbessern, aber möglicherweise auch die Latenz erhöhen. Der Standardwert ist 16 KB.
–maximale Nachrichtengröße NEIN Legen Sie die maximale Größenbeschränkung für das Senden von Nachrichten fest
-Eigentum NEIN Legen Sie Produzenteneigenschaften fest
-helfen NEIN Dieser Befehl zeigt die vollständige Hilfedokumentation von kafka-console-producer.sh an, einschließlich Parameterbeschreibungen und Beispielverwendung

Kafka Producer verfügt über mehrere Konfigurationsparameter, die sein Verhalten und seine Leistung steuern. Im Folgenden sind einige gängige Konfigurationsparameter von Kafka-Herstellern und ihre Erklärungen aufgeführt:

Parametername erklären
Bootstrap.server Liste der Adressen und Ports für Kafka-Broker, die zum Herstellen von Verbindungen zum Kafka-Cluster verwendet werden. Zum Beispiel:bootstrap.servers=localhost:9092
acks Gibt die Anzahl der Bestätigungen an, die der Produzent nach dem Senden einer Nachricht erhalten muss. Zu den optionalen Werten gehören:

0: Der Produzent wartet nicht auf eine Bestätigung und sendet die Nachricht direkt. Dies ist die Konfiguration mit der niedrigsten Latenz und dem höchsten Durchsatz, kann jedoch zu Nachrichtenverlusten führen.
1: Der Produzent erhält eine Bestätigung, nachdem er die Nachricht in der primären Partition (Leader) erhalten hat. Dies sorgt für eine höhere Zuverlässigkeit, es besteht jedoch immer noch das Risiko, dass Nachrichten verloren gehen.
all: Der Produzent erhält eine Bestätigung, nachdem alle Replikate die Nachricht empfangen haben. Dies ist die sicherste Konfiguration, weist jedoch eine höhere Latenz auf.
wiederholt Anzahl der Wiederholungsversuche beim Senden einer Nachricht. Wenn die Nachrichtenzustellung fehlschlägt, versucht der Produzent es automatisch erneut. Der Standardwert ist 0, was bedeutet, dass keine Wiederholungsversuche durchgeführt werden.
Chargengröße Kumulierte Größe der Nachrichten, auf die der Produzent wartet, bevor er sie an den Broker sendet. Größere Batchgrößen können den Durchsatz verbessern, aber möglicherweise auch die Latenz erhöhen. Der Standardwert ist 16 KB.
verweilen.ms Steuert, wie lange der Produzent wartet, bevor er einen Stapel sendet. Höhere Werte erhöhen die Stapelgröße und den Durchsatz, allerdings auf Kosten einer gewissen Latenz. Der Standardwert ist 0, was bedeutet, dass keine Wartezeit besteht.
buffer.memory Die Gesamtspeichergröße, die der Produzent zum Puffern von zu sendenden Nachrichten verwendet. In diesem Puffer werden Nachrichten gespeichert, die noch nicht an den Server gesendet wurden. Der Standardwert ist 32 MB.
Komprimierungstyp Gibt den Komprimierungstyp der Nachricht an. Zu den optionalen Werten gehören:
none: Die Nachricht wird nicht komprimiert.
- gzip: Komprimieren Sie die Nachricht mit dem GZIP-Komprimierungsalgorithmus.
- snappy: Komprimieren Sie die Nachricht mit dem Snappy-Komprimierungsalgorithmus.
- lz4: Komprimieren Sie die Nachricht mit dem LZ4-Komprimierungsalgorithmus.
max.In-Flight-Anfragen.pro.Verbindung Steuert die maximale Anzahl unbestätigter Anfragen, die ein Produzent senden kann, bevor er Bestätigungen erhält. Höhere Werte verbessern den Durchsatz, können jedoch dazu führen, dass Nachrichten neu angeordnet werden. Der Standardwert ist 5.
maximale.Anfragegröße Steuert die maximale Größe einer einzelnen Nachricht. Der Standardwert ist 1 MB.
key.serializer Die angegebene Schlüsselserialisierungsklasse. Diese Serialisierer konvertieren Schlüssel- und Wertobjekte zur Übertragung in Byte-Arrays.
value.serializer Gibt die Wertserialisierungsklasse an. Diese Serialisierer konvertieren Schlüssel- und Wertobjekte zur Übertragung in Byte-Arrays.

Weitere Konfigurationsparameter finden Sie unterApache Kafka Procuder-Konfigurationen

4.2.2.Praktische Anwendungsfälle von kafka-console-producer.sh

  • Erstellen Sie eine Producer-Konsole (alle mit Standardparametern)
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test01

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.

  • Erstellen Sie eine Producer-Konsole (einrichten, um Nachrichten synchron zu senden; jede Nachricht wartet auf die Bestätigung durch den Server, bevor die nächste Nachricht gesendet wird)
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test01 --sync

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.

  • Producer-Konsole erstellen (andere Eigenschaften festlegen)
kafka-console-producer.sh --broker-list localhost:9092 --topic test01 --property acks=all --property retries=3

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.

4.3.Erklärung und Verwendungsbeispiele von Consumer-Skriptparametern in Kafka

kafka-console-consumer.shEs handelt sich um ein von Kafka bereitgestelltes Befehlszeilentool zum Verarbeiten von Nachrichten aus Kafka-Themen.

4.3.1.kafka-console-consumer.sh Parameterbeschreibung

Parametername Ist es obligatorisch? erklären
–boostrap-server Ja Geben Sie die Adresse und Portnummer des Kafka-Brokers an. Mehrere Broker werden durch Kommas () getrennt.
-Thema Ja Geben Sie den Namen des Themas an, aus dem Nachrichten konsumiert werden sollen
-von Anfang an NEIN Beginnen Sie mit dem Konsumieren von Nachrichten ab dem Anfang des Themas, auch wenn der Offset der Konsumentengruppe bereits vorhanden ist
–consumer.config NEIN Geben Sie die Verbraucherkonfigurationsdatei an
–Partition NEIN Geben Sie die zu nutzende Partitionsnummer an
-Gruppe NEIN Geben Sie die Verbrauchergruppe an, zu der der Verbraucher gehört.
–Offset NEIN Geben Sie den Offset an, ab dem mit der Nachrichtenverarbeitung begonnen werden soll
–max-Nachrichten NEIN Geben Sie die maximale Anzahl der zu konsumierenden Nachrichten an
–timeout-ms NEIN Legen Sie die Zeitüberschreitung (in Millisekunden) fest, die der Verbraucher warten soll, wenn keine neuen Nachrichten vorliegen
-Eigentum NEIN Legen Sie Verbrauchereigenschaften fest
-helfen NEIN Dieser Befehl zeigt die vollständige Hilfedokumentation von kafka-console-producer.sh an, einschließlich Parameterbeschreibungen und Beispielverwendung

Kafka-Konsumenten verfügen über mehrere Konfigurationsparameter, die ihr Verhalten und ihre Leistung steuern. Im Folgenden sind einige gängige Konfigurationsparameter von Kafka-Herstellern und ihre Erklärungen aufgeführt:

Parametername erklären
Bootstrap.server Liste der Adressen und Ports für Kafka-Broker, die zum Herstellen von Verbindungen zum Kafka-Cluster verwendet werden. Zum Beispiel:bootstrap.servers=localhost:9092
Gruppen-ID Der eindeutige Bezeichner der Verbrauchergruppe, zu der der Verbraucher gehört. Verbraucher werden nach Gruppen-ID koordiniert, um eine Partitionierung und einen Lastausgleich von Nachrichten zu erreichen.
enable.auto.commit Geben Sie an, ob die automatische Übermittlung des Verbrauchs-Offsets (Offset) aktiviert werden soll. Wenn der Wert auf „true“ gesetzt ist, übermittelt der Verbraucher in regelmäßigen Abständen automatisch Verschiebungen; wenn er auf „false“ gesetzt ist, muss der Verbraucher Verschiebungen manuell übermitteln. Der Standardwert ist wahr.
auto.commit.interval.ms Das Zeitintervall (Millisekunden) für die automatische Übermittlung der Verschiebung. Nur gültig, wenn enable.auto.commit auf true gesetzt ist. Der Standardwert beträgt 5000 Millisekunden.
fetch.min.bytes Mindestanzahl an Bytes pro Pull-Anfrage. Wenn weniger Daten als dieser Wert verfügbar sind, wartet der Verbraucher auf das Eintreffen weiterer Daten. Der Standardwert ist 1.
fetch.max.wait.ms Maximale Zeit in Millisekunden, die auf den Empfang von Daten vom Server gewartet werden soll. Wenn innerhalb der angegebenen Zeit keine Daten verfügbar sind, gibt der Verbraucher ein leeres Ergebnis zurück. Der Standardwert beträgt 500 Millisekunden.
max.Umfragedatensätze Die maximale Anzahl von Datensätzen, die bei jedem Aufruf der poll()-Methode zurückgegeben werden. Dieser Wert begrenzt die maximale Anzahl von Datensätzen, die während jeder Abfrage verarbeitet werden können. Der Standardwert ist 500.
Auto.Offset.Reset Verhalten zurücksetzen, wenn der Verbraucher zum ersten Mal der Verbrauchergruppe beitritt oder kein Ersatz verfügbar ist. Zu den optionalen Werten gehören:

earliest: Beginnen Sie mit der Nutzung ab der frühesten verfügbaren Verschiebung.
latest: Beginnen Sie mit der Nutzung ab der neuesten verfügbaren Verschiebung.
none: Wenn keine Verschiebung verfügbar ist, wird eine Ausnahme ausgelöst.
key.serializer Die angegebene Schlüsselserialisierungsklasse. Diese Serialisierer konvertieren Schlüssel- und Wertobjekte zur Übertragung in Byte-Arrays.
value.serializer Gibt die Wertserialisierungsklasse an. Diese Serialisierer konvertieren Schlüssel- und Wertobjekte zur Übertragung in Byte-Arrays.

Weitere Konfigurationsparameter finden Sie unterApache Kafka Consumer Configs

4.3.2.Praktische Anwendungsfälle von kafka-console-consumer.sh

  • Verbraucherkonsole erstellen (alle mit Standardparametern)

Geben Sie das Konfigurationsverzeichnis unter dem Installationsverzeichnis von Kafka ein (z. B. /opt/bigdata/kafka/config) und führen Sie den Befehl aus (hier müssen Sie zuerst die Systemvariablen von Kafka konfigurieren, dh das bin-Verzeichnis von Kafka hinzufügen). Die Systemumgebungsvariablen und die Java /go/python-Konfigurationssystemumgebungsvariablen sind identisch.)

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test01 --from-beginning --consumer.config ./consumer.properties

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.
Produzentenseite produziert Nachrichten

Konsumieren von Nachrichten auf Verbraucherseite

4.5.kafka-Startbefehl

kafka-server-start.sh -deamon $KAFKA_HOME/config/server.properties

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.

4.4.kafka-Stoppbefehl

kafka-server-stop.sh 

Wenn Sie für den obigen Befehl Systemumgebungsvariablen konfigurieren, wechseln Sie bitte mit dem Befehl cd in das bin-Verzeichnis des Kafka-Installationspfads, bevor Sie ihn ausführen.

Supongo que te gusta

Origin blog.csdn.net/qq_41865652/article/details/126588263
Recomendado
Clasificación