// This module is included in:
//
// overview/assembly-kafka-components.adoc

[id="kafka-concepts-components_{context}"]
= Kafka component architecture

A cluster of Kafka brokers is main part of the Apache Kafka project responsible for delivering messages.

A broker uses Apache ZooKeeper for storing configuration data and for cluster coordination.
Before running Apache Kafka, an Apache ZooKeeper cluster has to be ready.

Each of the other Kafka components interact with the Kafka cluster to perform specific roles.

.Kafka component interaction

image:overview/kafka-concepts-supporting-components.png[Data flows between several Kafka components and the Kafka cluster. See the component descriptions after this image.]

Apache ZooKeeper:: Apache ZooKeeper is a core dependency for Kafka as it provides a cluster coordination service, storing and tracking the status of brokers and consumers. ZooKeeper is also used for leader election of partitions.
Kafka Connect:: Kafka Connect is an integration toolkit for streaming data between Kafka brokers and other systems using _Connector_ plugins.
Kafka Connect provides a framework for integrating Kafka with an external data source or target, such as a database, for import or export of data using connectors.
Connectors are plugins that provide the connection configuration needed.
+
* A _source_ connector pushes external data into Kafka.
* A _sink_ connector extracts data  out of Kafka
+
External data is translated and transformed into the appropriate format.
+
You can deploy Kafka Connect with Source2Image support, which provides a convenient way to include connectors.
Kafka MirrorMaker:: Kafka MirrorMaker replicates data between two Kafka clusters, within or across data centers.
+
MirrorMaker takes messages from a source Kafka cluster and writes them to a target Kafka cluster.
Kafka Bridge:: Kafka Bridge provides an API for integrating HTTP-based clients with a Kafka cluster.
Kafka Exporter:: Kafka Exporter extracts data for analysis as Prometheus metrics, primarily data relating to offsets, consumer groups, consumer lag and topics. Consumer lag is the delay between the last message written to a partition and the message currently being picked up from that partition by a consumer
