⚡ÖZET VE TEKNİK CEVAP
Olay kaydını iş varlığı güncellemesiyle tam olarak aynı ACID veritabanı işlemi içinde özel bir 'outbox' tablosuna yazıp, asenkron bir aktarıcı süreç (veya işlem günlüğü madencisi) ile mesaj kuyruğuna güvenle ileterek.
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)
TinyCTO Vaka 042: Bir e-ticaret servisi sipariş tablosunu 'ÖDENDİ' olarak güncelledi ve Kafka'ya olay göndermeye çalıştı. Ağ zaman aşımı nedeniyle Kafka çağrısı çöktü; para çekildi fakat kargo hiçbir zaman tetiklenmedi. Debezium tabanlı Transactional Outbox kurulumuyla kayıp kargo vakaları tamamen sıfırlandı.
İnteraktif Konsept Alıştırmaları
3 AlıştırmaOutbox olmadan yapılan 'Çift-Yazma' (Dual-Write) yaklaşımının temel kusuru nedir?
Bir Outbox Aktarıcısını (Relay) hayata geçirmenin iki temel yöntemi nedir?
Transactional Outbox kalıbı neden tüketici servislerin kesinlikle idempotent olmasını gerektirir?
Transactional Outbox Kalıbı ve Güvenilir Olay Yayımlama — Sıkça Sorulan Sorular
Transactional Outbox kalıbı yüksek hacimli veritabanı yazmalarını nasıl kaldırır?
Bölümlenmiş outbox tabloları veya SQL SELECT sorgusu çalıştırmadan doğrudan disk günlüklerini okuyan log tabanlı CDC (Debezium ile Postgres WAL çözümleme) kullanarak.
Outbox kayıtları iletildikten sonra hemen silinmeli mi yoksa denetim için saklanmalı mı?
Yüksek hacimli sistemler, veritabanı şişmesini önlemek için işlenen satırları hemen siler veya günlük tabloları drop eder; uzun süreli saklama için Kafka'ya güvenir.
Outbox kalıbı MongoDB veya DynamoDB gibi NoSQL veritabanlarında uygulanabilir mi?
Evet. MongoDB çoklu-belge ACID işlemleri/Change Streams ve DynamoDB transactional yazmaları/DynamoDB Streams doğrudan yerel outbox yapıları olarak çalışır.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
İlişkisel veritabanına yazmak ve mesaj kuyruğuna yayınlamak, bir Outbox veya 2PC olmadan atomik hale getirilemeyen iki bağımsız dağıtık işlemdir.
- ▸
Log tabanlı Outbox uygulamaları veritabanı bağlantı havuzu şişmesini tamamen ortadan kaldırır.
Yaygın Yanılgılar
- ✗
Kafka publish çağrısını try/catch içine almanın veri kaybını önleyeceğini sanmak; DB commit'ten sonra sunucunun elektriği kesilirse veya SIGKILL alırsa catch bloğu asla çalışmaz.
Karar Kılavuzu & Önceliklendirme
Bir olayın kaybolmasının kabul edilemez olduğu ve alt iş süreçlerini tetikleyen tüm asenkron olaylarda Transactional Outbox uygulayın.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL-DOC]Pattern: Transactional Outbox— Microservices.io
- [BOOK]Designing Data-Intensive Applications— O'Reilly Media (2017)
