Robocikowo>ROBOCIKOWO
Orkiestracja

EDA

2003AktywnyOpublikowano: 11 czerwca 2026Aktualizacja: 11 czerwca 2026Opublikowany
Paradygmat architektoniczny, w którym komponenty komunikują się asynchronicznie przez zdarzenia publikowane do brokera, a konsumenci reagują na nie niezależnie.
Kluczowa innowacja
Odwrócenie kontroli przepływu — komponenty komunikują się asynchronicznie przez emitowanie i konsumpcję zdarzeń, zamiast synchronicznych wywołań RPC, co odsprzęga producentów od konsumentów w czasie i w przestrzeni.
Kategoria
Orkiestracja
Poziom abstrakcji
Paradygmat
Poziom operacji
OrkiestracjaAplikacjaTooling
Zastosowania
Asynchroniczne pipeline'y inferencyjne LLM (kolejki zadań do GPU)Streaming generacji tokenów i agregacja wynikówOrkiestracja systemów multi-agentowych przez event busReaktywne agenty AI nasłuchujące na zmiany stanuReal-time RAG: indeksowanie dokumentów wyzwalane zdarzeniemMikroserwisy i systemy rozproszone (e-commerce, fintech)Telemetria i analiza strumieniowa (Kafka Streams, Flink)Event sourcing i CQRS w aplikacjach z bogatą domeną

Jak działa

Producent zdarzeń publikuje event (zwykle niemutowalny rekord z payloadem i metadanymi) do nazwanego kanału (topic, queue, stream) na brokerze. Broker trwale przechowuje zdarzenie i dostarcza je do zarejestrowanych konsumentów według jednej z dwóch strategii: (1) pub/sub — każdy subskrybent dostaje kopię zdarzenia; (2) competing consumers — zdarzenie trafia do dokładnie jednego konsumenta z grupy, umożliwiając load balancing. Konsumenci przetwarzają zdarzenia niezależnie i mogą emitować kolejne zdarzenia, tworząc reaktywny graf przepływu. Wzorce powiązane to event notification (sygnał o zmianie), event-carried state transfer (event niesie pełny stan), event sourcing (event log jako źródło prawdy) i CQRS (rozdział zapisu od odczytu).

Rozwiązany problem

Synchroniczne, punkt-do-punktu wywołania RPC tworzą sztywne sprzężenie czasowe i topologiczne między usługami: każdy konsument musi być dostępny w momencie wywołania, a producent musi znać swoich konsumentów. Skala, odporność na awarie i ewolucja systemu cierpią. EDA likwiduje te zależności przez wprowadzenie pośrednika (broker zdarzeń) i komunikacji asynchronicznej.

Komponenty

Event ProducerŹródło zdarzeń

Komponent wytwarzający zdarzenia w odpowiedzi na zmianę stanu lub akcję użytkownika.

Oficjalna

Event BrokerPośrednik komunikacji

Pośrednik trwale przechowujący i routujący zdarzenia (Kafka, RabbitMQ, NATS, Pulsar, EventBridge).

Apache KafkaDistributed log-based broker, wysokoprzepustowy, durable.
RabbitMQBroker AMQP z bogatym routingiem, wzorce queue-based.
NATSLekki broker pub/sub, niskie opóźnienia.
Apache PulsarMulti-tenant, geo-replicated, log + queue w jednym.

Oficjalna

Event ConsumerOdbiorca zdarzeń

Komponent subskrybujący kanały i reagujący na zdarzenia.

Oficjalna

Event Channel / TopicLogiczny strumień

Logiczna nazwa strumienia zdarzeń, do którego producenci publikują, a konsumenci subskrybują.

Event SchemaKontrakt danych

Kontrakt opisujący strukturę zdarzenia (Avro, Protobuf, JSON Schema, CloudEvents).

Oficjalna

Implementacja

Pułapki implementacyjne
Brak idempotencji konsumentówKrytyczna

At-least-once delivery oznacza powtórzenia zdarzeń. Konsumenci muszą obsłużyć duplikaty bez efektów ubocznych.

Rozwiązanie:Stosuj klucze idempotencji, transakcje lub outbox pattern.
Trudność debugowania przepływuWysoka

Asynchroniczna, rozproszona natura utrudnia śledzenie causation chain.

Rozwiązanie:Distributed tracing (OpenTelemetry), correlation IDs w każdym zdarzeniu.
Niezarządzana ewolucja schematuWysoka

Zmiana schematu zdarzenia może zepsuć starych konsumentów.

Rozwiązanie:Schema Registry (Confluent) z politykami kompatybilności (backward/forward).
Eventual consistency niedopasowane do domenyŚrednia

Niektóre operacje wymagają silnej spójności; EDA wprowadza opóźnienie propagacji.

Rozwiązanie:Hybryda: synchroniczne API dla operacji krytycznych, EDA dla pozostałych.
Poison messages blokujące partycjęWysoka

Zdarzenie powodujące crash konsumenta blokuje przetwarzanie kolejnych zdarzeń w partycji.

Rozwiązanie:Dead-letter queue (DLQ) i retry z backoff.

Ewolucja

1987
Publish-subscribe pattern

Sformalizowanie wzorca pub/sub w systemach rozproszonych (ISIS Toolkit, Cornell).

2003
Enterprise Integration Patterns
Punkt przełomowy

Hohpe i Woolf publikują katalog wzorców integracji opartej na komunikatach — fundament EDA w enterprise.

2011
Apache Kafka open-sourced
Punkt przełomowy

LinkedIn open-source'uje Kafkę — log-based broker definiujący nowoczesne EDA.

2014
Reactive Manifesto

Manifest definiujący systemy reaktywne (responsive, resilient, elastic, message-driven) — popularyzacja message-driven jako fundamentu skalowalności.

2018
CloudEvents specification (CNCF)

CNCF standaryzuje format opisu zdarzeń niezależny od dostawcy.

2023
EDA w systemach agentowych LLM

Frameworki agentowe (LangGraph, AutoGen, CrewAI) adoptują event-driven orkiestrację dla multi-agent workflows i streaming inference.

Hiperparametry (konfigurowalne osie)

Delivery semanticsKrytyczna

At-most-once / at-least-once / exactly-once. Wpływa na idempotencję konsumentów i koszt operacyjny.

at-least-once
exactly-once
Ordering guaranteeWysoka

Globalne uporządkowanie vs. per-partition vs. brak gwarancji. Kompromis między uporządkowaniem a paralelizmem.

per-partition (Kafka)
none
Retention policyWysoka

Czas/rozmiar przechowywania zdarzeń. Log-based brokers (Kafka) trzymają długo, queue-based usuwają po ACK.

7d
unlimited (compacted)
Partitioning strategyWysoka

Klucz partycjonowania determinuje równoważenie i kolejność.

Schema evolutionŚrednia

Strategia kompatybilności (backward / forward / full) dla ewolucji schematu zdarzeń.

Paradygmat wykonania

Tryb główny
Warunkowy

Wykonanie jest wyzwalane przez przybycie zdarzenia (reaktywne), nie przez harmonogram ani synchroniczne wywołanie.

Wzorzec aktywacji
Zależne od wejścia
Mechanizm routingu

Broker routuje zdarzenia do konsumentów na podstawie nazwy topica, kluczy partycji, filtrów lub treści payloadu.

Równoległość

Poziom równoległości
W pełni równoległy

Konsumenci skalują się horyzontalnie przez competing consumers / consumer groups. Partycjonowanie strumieni (np. Kafka partitions) ogranicza paralelizm w obrębie klucza partycji.

Zakres
InferencjaPomiędzy urządzeniami

Wymagania sprzętowe

Podstawowe

EDA to wzorzec architektoniczny niezależny od hardware'u — działa na CPU, w chmurze, na edge.