> EVENT_SOURCING_CQRS // None // CP
Veritabanı WAL Okumasıyla Sıfır-Kaymalı Transactional Outbox Hattı
Debezium CDC ve Outbox Event Router kullanarak PostgreSQL WAL mutasyonlarını Kafka konularına aktaran sıfır-dual-write işlemsel entegrasyon hattı.
Mimarî Problem ve Çözüm Hipotezi
Uygulama kodundan yapılan doğrudan ikili yazmalar (dual-write) kaçınılmaz olarak sapar ve veritabanı ile mesaj brokerı arasında tutarsızlık üretir.
Resmi Dağıtık Sistem Garantileri
- ⚡Strict zero-dual-write atomicity
- ⚡At-least-once ordered delivery per aggregate identifier
- ⚡Zero application database performance overhead from polling queries
Ele Alınan Hata Tipleri
3 Ölçek ve Olgunluk Konfigürasyonu
Başlangıç kümesinden multi-datacenter ultra-ölçek seviyesine kadar kademeli üretim konfigürasyonları.
4,000 events/sec
< 80ms
At-Least-Once Delivery to Kafka
Single Debezium server instance tailing PostgreSQL replication slot `pgoutput`.
35,000 events/sec
< 15ms
Strictly Ordered Outbox Partitioning by Aggregate ID
3-node Kafka Connect cluster with automated rebalance and Prometheus WAL lag alerting.
250,000 events/sec
< 3.8ms
Parallelized Sharded WAL Streaming with Sub-Second Kafka Availability
Parallel Debezium connector fleet tailing 16 partitioned database shards simultaneously.
Altyapı Kodları: Terraform, Kubernetes & Motor Konfigürasyonları
Doğrudan üretim kümelerine uygulanabilir doğrulukta açık kaynak altyapı otomasyon manifestoları.
resource "postgresql_extension" "hstore" {
name = "hstore"
}
# PostgreSQL logical replication configuration
# wal_level = logical
# max_replication_slots = 10
# max_wal_senders = 10apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
name: pg-outbox-connector
labels:
strimzi.io/cluster: production-cluster
spec:
class: io.debezium.connector.postgresql.PostgresConnector
tasksMax: 1
config:
database.hostname: "postgres-primary"
database.port: "5432"
database.user: "debezium_user"
database.dbname: "production"
plugin.name: "pgoutput"
table.include.list: "public.outbox_events"
transforms: "outbox"
transforms.outbox.type: "io.debezium.transforms.outbox.EventRouter"CREATE TABLE outbox_events ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), aggregatetype VARCHAR(255) NOT NULL, aggregateid VARCHAR(255) NOT NULL, type VARCHAR(255) NOT NULL, payload JSONB NOT NULL, timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW() );
Debezium CDC ve Outbox Event Router kullanarak PostgreSQL WAL mutasyonlarını Kafka konularına aktaran sıfır-dual-write işlemsel entegrasyon hattı.
Mimarî Plan Sıkça Sorulan Sorular
Veritabanı WAL Okumasıyla Sıfır-Kaymalı Transactional Outbox Hattı mimarisinin CAP ve PACELC teoremleri altındaki matematiksel sınıflandırması nedir?
Veritabanı WAL Okumasıyla Sıfır-Kaymalı Transactional Outbox Hattı, CAP teoreminde CP ve PACELC teoreminde PC/EC olarak modellenmiştir. Ağ bölünmesi (Partition) durumunda tutarlılık (Consistency) önceliklendirilirken, normal çalışma durumunda gecikme ile tutarlılık dengesi korunur.
Bu mimari hangi dağıtık uzlaşı protokolünü (None) kullanır ve lider seçimi nasıl işler?
Bu mimari None protokolünü kullanır. Düğümler arası durum çoğaltması (state replication) ve liderlik seçimi çoğunluk oyu (quorum) ile garanti altına alınır; bölünmüş beyin (split-brain) durumu monotonik dönem numaraları (epoch/term) ve fencing belirteçleriyle engellenir.
Bu mimari hangi dağıtık hata modlarını (Failure Modes) bertaraf eder?
Bu mimari şu kritik dağıtık sistem arızalarını ele alır: DS-FAIL-02: Dual-Write Mutation Drift, DS-FAIL-10: Out-of-Order CDC Ingestion. Sistem veri kaybı olmadan otomatik hata devri ve durumsal yakınsama sağlar.
INITIAL ile ULTRA_SCALE seviyeleri arasındaki verim (Throughput) ve p99 gecikme farkları nelerdir?
INITIAL seviyesi 4,000 events/sec hedefi ve < 80ms p99 gecikmesi sağlarken (Single Debezium server instance tailing PostgreSQL replication slot `pgoutput`.), ULTRA_SCALE seviyesi 250,000 events/sec ve < 3.8ms sunar (Parallel Debezium connector fleet tailing 16 partitioned database shards simultaneously.). Bileşenler: Citus / Sharded Postgres, Multi-Connector Debezium Distributed, Schema Registry.
Bu mimari Altyapı Kodu (IaC) ve motor ayarlarıyla nasıl devreye alınır?
Bu sayfada sunulan Terraform (main.tf), Kubernetes dağıtım bildirimleri (k8s-manifest.yaml) ve motor konfigürasyon parametreleri (config.properties) doğrudan üretime hazır olarak sağlanmıştır.
