Technik 2.4 — Microservices & Event-Driven

Message-Broker im Vergleich

BrokerModellStärkenSchwächen
KafkaLog-basiert, hochskaliertMassive Durchsätze (Mio msg/s), Replay, Ordering pro PartitionKomplex zu betreiben, JVM, Zookeeper/KRaft
RabbitMQKlassische Message-QueueFlexibles Routing (Topic-Exchanges), AMQP-Standard, einfachSchlechter bei sehr hohen Volumen als Kafka
NATSLightweight Pub/SubSehr schnell, klein, niedriger Memory-Footprint, JetStream für PersistenceWeniger Features als Kafka, kleineres Ökosystem
AWS SQS / SNSManagedServerless, kein Ops, gute AWS-IntegrationVendor-Lock, höhere Latenz, Order schwierig
Redis StreamsIn-MemorySehr niedrige Latenz, einfach wenn Redis schon daNicht für Long-Term-Storage gedacht

Delivery-Semantik

  • At-most-once: Event kommt 0 oder 1 mal an. Verluste möglich.
  • At-least-once: Event kommt 1 oder mehrere Male an. Subscriber muss idempotent sein. Standard.
  • Exactly-once: Heiliger Gral. Sehr schwer. Kafka bietet es per Transactional Producer + Consumer Offset Commit.

Idempotenz-Pattern

function handleEvent(event) {
  if (db.has('processed', event.id)) return;   // schon verarbeitet
  db.transaction(() => {
    doWork(event);
    db.insert('processed', event.id);
  });
}
Zurück zu Technik