⚡ÖZET VE TEKNİK CEVAP
CDC Outbox deseni, İşlemsel Outbox desenini Debezium günlük madenciliği ile birleştirerek veritabanı değişikliklerini doğrudan WAL günlüğünden bölümlenmiş Kafka konularına aktarır; böylece çift-yazma yarış durumları olmadan %100 güvenilir ve sıralı olay iletimi sağlar.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
Üretim sınıfı bir CDC Outbox mimarisi üç kritik yapılandırma gerektirir:
- ▸
Atomik Yerel İşlem: Servis
ordersveoutbox_events(id,aggregatetype,aggregateid,type,payload) tablolarına tek birBEGIN ... COMMITbloğunda yazar. - ▸
Debezium Outbox Event Router (SMT): Debezium'un Tek Mesaj Dönüştürücüsü outbox tablosundaki değişiklik akışını okur,
payloadiçeriğini çıkarır ve dinamik hedef konuya (order-events) yönlendirir. - ▸
Kafka Bölüm Anahtarı ile Nedensel Sıralama:
OrderUpdatedolayınınOrderCreatedolayından önce işlenmesini engellemek için Debezium Kafka Mesaj Anahtarınıaggregateid(order_uuid) olarak ayarlar. Kafka tek bir bölüm içinde kesin FIFO sıralaması garanti eder.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaOutbox deseni için Debezium ile CDC günlük takibi neden veritabanı sorgulamasından (`SELECT ... FOR UPDATE`) üstündür?
Kafka, bir 'OrderCancelled' olayının 'OrderCreated' olayından önce işlenmeyeceğini nasıl garanti eder?
Debezium ile Değişiklik Verisi Yakalama ve Olay Sıralaması — Sıkça Sorulan Sorular
Bir mikroservis Outbox deseni olmadan aynı HTTP işleyicisinde hem PostgreSQL'e kaydedip hem de doğrudan Kafka'ya yayınlamaya çalışırsa ne olur?
Çift yazma hatası: SQL commit işleminden hemen sonra ağ koparsa Kafka olayı asla alamaz ve sistem tutarlılığı kalıcı olarak bozulur. Outbox tablosu veya dağıtık 2PC olmadan, güvenilmez bir ağ üzerinde iki bağımsız sistem arasında atomik çift yazma garantisi verilemez.
Debezium'un işlem günlüklerini okuyabilmesi için hangi PostgreSQL ayarı yapılandırılmalıdır?
`wal_level = logical`. PostgreSQL, Debezium mantıksal replikasyonunun WAL kayıtlarını yapılandırılmış olaylara dönüştürebilmesi için `wal_level = logical` ayarını zorunlu tutar.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
CDC Outbox deseni, İşlemsel Outbox desenini Debezium günlük madenciliği ile birleştirerek veritabanı değişikliklerini doğrudan WAL günlüğünden bölümlenmiş Kafka konularına aktarır; böylece çift-yazma yarış durumları olmadan %100 güvenilir ve sıralı olay iletimi sağlar.
- ▸
CDC Outbox, uygulamanın yerel SQL işleminde alan olaylarını bir
outboxtablosuna atomik olarak yazdığı ve Debezium CDC bağlayıcısının veritabanı işlem günlüğünü okuyarak bu olayları Kafka'ya yönlendirdiği mimaridir.
Yaygın Yanılgılar
- ✗
Outbox tablosunu 100 ms aralıklarla
SELECT * FROM outbox WHERE processed = falseile sürekli yoklayıp (polling) veritabanında kilit krizine yol açmak.
Karar Kılavuzu & Önceliklendirme
Çift yazma kaynaklı veri kaybını ve hayalet olayları tamamen ortadan kaldırır; olay sorgulama yükünü uygulama CPU'sundan alıp veritabanının yerel asenkron replikasyon akışına devreder.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL-DOC]Change Data Capture with Debezium & Outbox Event Ordering Specification— TinyCTO Architectural Standards
