GH GambleHub

Olay Odaklı çekirdek

Olay Odaklı Çekirdek Nedir

Olay Odaklı Çekirdek (EDC), iş gerçeklerinin değişmez olaylar olarak yakalandığı ve dağıtıldığı mimarinin "omurgası'dır ve işlevselliğin geri kalanı (okuma, entegrasyon, analitik, önbellekler, bildirimler) bu olayların akışının üzerine inşa edilmiştir. Çekirdek, olay sözleşmesini, teslimat kurallarını ve sipariş/idempotency değişmezlerini ayarlayarak zayıf bağlantı ve ölçeklenebilirlik sağlar.

Anahtar fikir: önce gerçeği (çekirdek) yazın, sonra bağımsız olarak zenginleştirin ve istenen modellere yansıtın. Bu, bağlantıyı azaltır ve kısmi arızalara karşı dayanıklılığı artırır.

EDC Hedefleri ve Özellikleri

Gerçeklerin gerçeği: Her olay,'ne olduğunun "değişmez bir kaydıdır.
Zayıf bağlantı: Üreticiler tüketicileri tanımıyor; Sistem genişlemesi - abone ekleyerek.
Ölçeklendirme: taraf/konuya göre yatay büyüme, bağımsız tüketiciler.
Gözlemlenebilirlik ve denetim: uçtan uca tanımlayıcılar, tekrarlanabilirlik, retansiyonlar ve tekrar oynatma.
Yönetilen evrim: şema sürümleri, uyumluluk, kullanımdan kaldırma.

Mimari bileşenler

1. Otobüs/etkinlik komisyoncusu: Kafka/NATS/Pulsar/SNS + SQS - kanallar, partiler, retentions.
2. Şema Kayıt Defteri: Uyumluluk ve evrim için JSON Schema/Avro/Protobuf.
3. Outbox/CDC kontur: atomik gerçek sabitleme + "çift yazma" olmadan yayınlama.
4. Projeksiyonlar/Okumalar (CQRS): hızlı sorgular için materyalize görünümler.
5. Sagalar/orkestrasyon: Olaylar/ekipler aracılığıyla uzun ömürlü süreçlerin koordinasyonu.
6. Zenginleştirme: kritik yolu etkilemeden bireysel konular '.enriched'/' .derived'.
7. Gözlemlenebilirlik: izleme, günlüğe kaydetme, olaylara ve gecikmelere göre metrikler.

Olay modeli

Olay türleri

Etki Alanı Etkinlikleri: İş Gerçekleri ('ödeme. Yetkili ',' kyc. Onaylandı ').
Entegrasyon Olayları: Dış sistemlere odaklanmıştır (kararlı, yavaşça değişen).
Veri Yakalamayı Değiştirme (CDC): Kayıttaki teknik değişiklikler (geçişler/entegrasyonlar için kullanım).
Denetim/Telemetri: aktör eylemleri, güvenlik, SLA.

Gerekli Nitelikler (Çekirdek)

json
{
"event_id": "uuid",
"event_type": "payment. authorized. v1",
"occurred_at": "2025-10-31T11:34:52Z",
"producer": "payments-service",
"subject": { "type": "payment", "id": "pay_123" },
"payload": { "amount": 1000, "currency": "EUR", "method": "card" },
"schema_version": 1,
"trace_id": "abc123",
"partition_key": "pay_123"
}

Öneriler: 'Event _ id' genel olarak benzersizdir, 'partition _ key' varlığın sırasını belirler, 'trace _ id' korelasyon sağlar.

Teslimat semantiği ve idempotency

En az bir kez (birçok broker için varsayılan): Tüketicilerin idempotent olması gerekir.
En fazla bir kez: sadece ikincil telemetri için kabul edilebilir.
Tam olarak bir kez: Akış ve depolama seviyesinde işlemler/idempotent anahtarlar/sulama kutuları ile elde edilir (daha pahalı, iyi bir nedene ihtiyaç duyar).

Tüketici idempotency modeli

TTL ile 'event _ id'/' (event_id, consumer_id)' Dedup tablosu ≥ konu tutma.
Insert yerine uppert; Projeksiyonları 'sequence'/' occured _ at'ile çevreleme.
İşlem içindeki işlemler: "saw" işareti + durum değişikliği.

Sipariş ve bölümleme

Parti içinde garantili düzen.
'Partition _ key' seçeneğini belirleyin, böylece aynı toplam varlığın tüm olayları aynı gruba girer ('user _ id', 'payment _ id').
"Sıcak anahtarlardan" kaçının: Yükü dağıtmanız gerekiyorsa, tuz/alt anahtarlarla karma.

Şemalar ve evrim

Eklemeli-ilk: yeni isteğe bağlı alanlar, büyük bir sürümü olmadan türleri/semantik değiştirme yasağı.
Uyumluluk: Şema kayıt defterinde BACKWARD/FORWARD; CI, uyumsuz değişiklikleri engeller.
Adlandırma: 'domain. eylem. v {major} '(' ödeme. yetkilendirildi. v1 ').
Geçişler: 'v1've' v2 'çiftlerini paralel olarak yayınlayın, giden kutusundan çift yazma sağlayın, geçişten sonra' v1 'çekin.

Çıkış kutusu и CDC

Giden kutusu (işlem hizmetleri için önerilir)

1. Bir veritabanı işleminde: etki alanı kaydını ve olayını giden kutusuna kaydedin.
2. Arka plan yayıncısı giden kutusunu okur, komisyoncuya yayınlar, "gönderildi'yi işaretler.
3. Garantiler: düşmelerde gerçeğin "kaybı" yok, uyumsuzluk yok.

CDC (Veri Yakalama Değişikliği)

Mevcut sistemler/göçler için uygundur; Kaynak - DB çoğaltma günlüğü.
Etki alanı olaylarına filtreleme/kod dönüştürme gerektirir (ham tabloları dışarıya çevirmeyin).

CQRS ve projeksiyonlar

Komutlar durumu değiştirir (genellikle eşzamanlı olarak), olaylar projeksiyonlar oluşturur (eşzamansız olarak).
Projeksiyonlar, aboneler tarafından güncellenen sorgular (arama, listeler, raporlar) için tasarlanmıştır.
Geçici eşzamansızlık normdur: kararlı bir UX gösterir ("veriler birkaç saniye içinde güncellenecektir").

Sagas: Süreç koordinasyonu

Orkestrasyon: Bir koordinatör komutlar gönderir ve olayları bekler.
Koreografi: Katılımcılar birbirlerinin olaylarına tepki gösterir (daha basit, ancak sözleşmelerde disiplin gerektirir).
Kurallar: açık tazminatlar ve zaman aşımları, tekrarlanabilir adımlar, idempotent işleyicileri.

Gözlemlenebilirlik

Trace/Span: Olay oluştururken başlıklardan 'trace _ id'/' span _ id' işaretini takip edin.
Metrikler: tüketici gecikmesi, yayınlama/tüketim oranı, ölü harf oranı, veri tekilleştirme payı.
DLQ/otopark: başarısız mesajlar - uyarı ile ayrı bir konuya; yeniden işleme sağlar.

Güvenlik ve uyumluluk

Veri sınıflandırması: Çekirdek sadece gerekli minimum PII/finansal verileri (ters piramit modeli), ayrıntıları - zenginleştirmede içerir.
Kritik niteliklerin imzası/karması, bütünlük denetimi.
Uçuş sırasında ve dinlenme sırasında şifreleme, konuya/tüketime göre bölümleme hakları (IAM/ACL).
Saklama politikaları ve unutulması gereken haklar: her konu için açıkça tanımlanmıştır.

Performans ve istikrar

Geri baskı: Tüketicilerin sınırlı bir rekabeti var, komisyoncunun kotaları/sınırları var.
Yükü azaltmak için toplu iş ve sıkıştırma grubu kayıtları.
Sonsuz denemeler yerine jitter ve DLQ ile Retrai.
Yeniden dengeleme direnci: Ofsetleri işlemsel/harici olarak depolayın, anlık görüntülerle soğuk bir başlangıcı hızlandırın.

Tipik olay şablonları

Ödeme Çekirdeği

'ödeme. başlatıldı. v1 '-' ödeme. yetkilendirildi. v1 '-' ödeme. yakalandı. v1 '-' ödeme. yerleşmiş. v1 '

Ret: 'Ödeme. reddetti. v1 ', ödeme. İade edildi. v1 '

Bölümleme: 'payment _ id'

SLA: çekirdek gecikmesi ≤ 2c p95; Tüketici idempotence zorunludur.

CCM/doğrulama

'kyc. başladı. v1 '-' kyc. belge. alındı. v1 '-' kyc. Onaylandı. v1'/' kyc. reddedildi. v1 '

PII - minimal; belge ayrıntıları - in 'kyc. zenginleştirilmiş. Kısıtlı erişime sahip v1 '.

Denetim/Güvenlik

'audit. kaydedildi. 'actor', 'subject','action ',' occured _ at ',' trace _ id 'niteliklerine sahip v1'.

Sürekli saklama/arşivleme; Gelişmiş Bütünlük (WORM)

Antipatterns

Fat Event: Gereksiz yere aşırı yüklenmiş yükler, PII sızıntıları.
Olaylar aracılığıyla gizli RPC: eşzamanlı "burada ve şimdi" yanıtlarını bekliyor.
Ham CDC'ler dışa doğru: DB şemasına yakın bağlantı.
Tüketicilerde idempotency yok: çiftler çift yan etkilere neden olur.
"Her şey için" ortak bir konu: çıkar çatışması, sorunlu düzen, karmaşık evrim.

Adım Adım EDC Uygulaması

1. Etki alanı eşleme: Anahtar kümeleri ve yaşam döngülerini vurgulayın.
2. Olayların kataloğu: isimler, anlamlar, değişmezler, gerekli alanlar.
3. Şemalar ve Kayıt Defteri - Bir format seçin, uyumluluk kurallarını etkinleştirin.
4. Outbox/CDC: Her üretici için, gerçekleri yayınlamak için bir mekanizma tanımlayın.
5. Bölümleme: Tuşları seçin ve kısayol tuşlarını/yeniden bölmeyi değerlendirin.
6. Idempotency: veri tekilleştirme modeli + tüketici işlemsellik.
7. Projeksiyonlar-Somutlaştırılmış modelleri tanımlayın ve SLA'ları güncelleyin.
8. Gözlemlenebilirlik: izleme, gecikmeler, DLQ, uyarılar.
9. Güvenlik/PII: veri sınıflandırma, şifreleme, ACL.
10. Evrim kılavuzu: sürüm politikası, kullanımdan kaldırma, göçler için çift yazma.

Üretim kontrol listesi

  • Her olayda 'event _ id', 'trace _ id', 'occurred _ at', 'partition _ key' vardır.
  • Kayıt defterindeki şemalar, uyumluluk kontrolleri etkin.
  • Uygulanan ve test edilen tüketici kimliği.
  • DLQ/otopark ve uyarılar yayınlama/kullanma hataları için yapılandırılmıştır.
  • Projeksiyonlar günlükten (tekrar oynatma) kabul edilebilir bir süre ile yeniden oluşturulur.
  • PII'ye sınırlı erişim; Çekirdekte minimum yük var.
  • Gecikmeler/teslimat ile SLA'lar ölçülür ve panolarda görünür.
  • Olay sürümlerini taşımak ve pencereleri kaldırmak için bir plan var.

SSS

EDC'nin "sadece bir otobüs'ten farkı nedir?
Çekirdek sadece aracı değil, aynı zamanda olay sözleşmesi, sipariş/idempotency kuralları, evrim süreçleri ve gözlemlenebilirliktir.

Sadece CDC üzerine inşa edebilir miyiz?
CDC entegrasyonlar/geçişler için uygundur, ancak etki alanı olayları anlamı daha net ifade eder ve veritabanı değişikliklerini daha istikrarlı bir şekilde yaşar.

Peki ya tutarlılık?
Nihai tutarlılığı kabul ediyoruz ve bunun için UX/süreçleri tasarlıyoruz (güncelleme, yeniden ödeme, tazminat göstergeleri).

Tam olarak ne zaman gereklidir?
Nadir: ikiye katlama kesinlikle kabul edilemez ve telafi edilmesi imkansız olduğunda. Daha sık, en az bir kez + idempotency yeterlidir.

Toplam

Olay Odaklı çekirdek, iş gerçeklerinin akışını sistem için güvenilir bir temele dönüştürür. Açık olay sözleşmeleri, teslim disiplini ve gözlemlenebilirlik, kırılgan eşzamanlı bağlantılar ve değişim altındaki regresyonların "fırtınası" olmadan ölçeklenebilirlik, esneklik ve evrim hızı sağlar.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.