Vai al contenuto principale
Versione: 3.0.0-alpha (Diátaxis)

Concetti — Kafka

Architettura

Kafka su Hikube è un servizio gestito di streaming distribuito. Ogni istanza distribuita tramite la risorsa Kafka crea un cluster di broker coordinati da ZooKeeper, capace di gestire milioni di messaggi al secondo con persistenza garantita.


Terminologia

TermineDescrizione
KafkaRisorsa Kubernetes (apps.cozystack.io/v1alpha1) che rappresenta un cluster Kafka gestito.
BrokerIstanza Kafka che archivia i messaggi e serve produttori/consumatori.
ZooKeeperServizio di coordinamento distribuito che gestisce i metadati del cluster, l'elezione del leader e la configurazione dei topic.
TopicCanale di messaggi con un nome. I produttori scrivono in un topic, i consumatori leggono da un topic.
PartizioneSuddivisione di un topic. Ogni partizione è un log ordinato di messaggi, distribuito su un broker.
Replication FactorNumero di copie di ogni partizione su diversi broker.
Consumer GroupGruppo di consumatori che si ripartiscono le partizioni di un topic per l'elaborazione parallela.
RetentionDurata o dimensione massima di conservazione dei messaggi in un topic.
resourcesPresetProfilo di risorse predefinito (da nano a 2xlarge).

Topic e partizioni

Funzionamento

Un topic è suddiviso in partizioni, ciascuna distribuita su un broker diverso:

  • Più partizioni = più parallelismo
  • Ogni partizione ha un leader (un broker) e dei follower (repliche)
  • Il replicationFactor determina il numero di copie di ogni partizione

Configurazione dei topic

I topic sono dichiarati direttamente nel manifesto Kafka:

ParametroDescrizione
topics[name].partitionsNumero di partizioni del topic
topics[name].config.replicationFactorNumero di repliche per partizione
topics[name].config.retentionMsDurata di retention in ms (es: 604800000 = 7 giorni)
topics[name].config.cleanupPolicydelete (eliminazione per TTL) o compact (conservazione dell'ultimo messaggio per chiave)

ZooKeeper

ZooKeeper garantisce il coordinamento del cluster Kafka:

  • Elezione del leader per ogni partizione
  • Archiviazione dei metadati (topic, partizioni, offset)
  • Rilevamento dei guasti dei broker
suggerimento

Configurate sempre un numero dispari di istanze ZooKeeper (zookeeper.replicas: 3) per garantire il quorum.

Le risorse ZooKeeper sono configurate indipendentemente dai broker tramite zookeeper.resources o zookeeper.resourcesPreset.


Preset di risorse

I preset si applicano separatamente ai broker Kafka e allo ZooKeeper:

PresetCPUMemoria
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Limiti e quote

ParametroValore
Broker Kafka maxSecondo la quota del tenant
Istanze ZooKeeper3 raccomandato (dispari)
Topic per clusterIllimitato (secondo le risorse)
Partizioni per topicConfigurabile
Dimensione archiviazioneVariabile (kafka.size, zookeeper.size)

Per approfondire