GH GambleHub

API üzerinden veri senkronizasyonu

1) Senkronizasyon neden gereklidir ve hedefler nelerdir

Etki alanı tutarlılığı: profil, cüzdan, dizinler, limitler, KYC.
Gecikmeleri azaltmak: kritik süreçler için neredeyse gerçek zamanlı (ödemeler, bonuslar).
Esneklik: Olay kaybı olmadan ağ/sağlayıcı kesintileri yaşamak.
Ekonomi: Deltalar ve paketleme yoluyla çıkış/CPU'yu en aza indirin.

Başarı ölçümleri: Kaynak ve tüketici arasındaki gecikme, tazelik, kopya oranı, çakışmaların yüzdesi, GB/saatlik mavi maliyeti.

2) Senkronizasyon modelleri

2. 1 Çekme (oylama)

Müşteri aralıklarla değişiklik talep eder.

Artıları: basitlik, yük kontrolü.
Eksileri: gecikme, "boş" anketler, yüksek bir değişim oranında atlama riski.
İyileştirmeler: If-Modified-Since, Etag/If-None-Match, change_token.

2. 2 Push (webhooks/etkinlikler)

Kaynak olayları alıcıya iletir.

Artılar: neredeyse gerçek zamanlı, anket ekonomisi.
Eksileri: retrays, veri tekilleştirme, güvenlik (imza, mTLS) ile teslim gerekir.
Gereksinimler: idempotent tüketiciler, üstel geri dönüş, tekrar oynatma.

2. 3 CDC/Akış (Veri Yakalama Değişikliği)

İşlem günlüğü/olay günlüğündeki değişikliklerin anlık görüntüsü (Kafka, Debezium).

Artılar: bütünlük, düzen, ölçek.
Eksileri: Karmaşıklık, işlem türleri üzerinde kontrol sahibi olmanız gerekir (insert/update/delete/tombstone).

2. 4 Hibrit

Webhooks bir "tetikleyici'olarak, bir geri dönüş olarak yoklama ve uzlaşma için.

3) Artımlı deltalar

3. 1 Filigran (zaman damgası)

İstemci 'last _ seen _ ts' depolar ve 'updated _ at> watermark' ister.

Riskler: saat sürüklenme - UTC ve NTP kullanın; 1-2 dakika çakışma penceresi ve ID + sürümüne göre dedup alın.

3. 2 Belirteci/İmleci Değiştir

Kararlı dizi belirteci: '? İmleç = eyJvZmZzZXQiOjEwMDB9 '.

Artıları: düzen, ölçek değiştirmek için esneklik.
Gereksinimler: Tükenmemiş imleçler, TTL ve güvenli tekrar.

3. 3 Numaralı uzaklıklar (otomatik artış)

'id> last_id'. Basit, ancak parçalarken ve dizide "delikler" olduğunda parçalanır.

4) Büyük örnek sayfalama

Keyset/imleç (tercih edilen): '? = imlecin ardından & limit = 1000 '- değişikliklerle kararlı.
Ofset/limit - basit, ancak pahalı ve vardiyalara tabidir.
Her zaman kararlı bir sıralama anahtarı belirtin (örneğin, '(updated_at, id)').

İmleç yanıtı örneği:
json
{
"items": [ { "id": "u_1", "updated_at": "2025-11-03T16:59:10Z" } ],
"next_cursor": "eyJ1cGRhdGVkX2F0IjoiMjAyNS0xMS0wM1QxNjo1OToxMFoifQ==",
"has_more": true
}

5) Semantiği değiştir: upsert, merge, delete

5. 1 Uppert/birleştirme

'PUT/resource/{ id}' tam bir değişimdir.
'PATCH/resource/{ id}' - kısmi güncelleme (yamaları doğrulama ile birleştirme).
Idempotency tarafından 'Idempotency-Key' Tüm yazmak için.

5. 2 Silme işlemleri

Yumuşak silme (alan 'silindi = true', 'silindi _ at') - geçmişi kaydedin; lavabo mezar taşı verir.
Sert silme - olay kaybolmadan önce 'silinmiş' verin.

Mezar taşı örneği:
json
{ "id":"u_1", "event":"deleted", "deleted_at":"2025-11-03T17:00:00Z" }

6) Sürüm kontrolü ve rekabet

6. 1 ETag/If-Match (iyimser kilitler)

Okuma döndürür 'ETag: "v123"'.
'If-Match: "v123'den güncelleme -' kayıp güncellemelere 'karşı koruma.
Çakışma durumunda - 409 Conflict with 'error _ code: "CONFLICT_VERSION"'.

6. 2 Kayıtların çevrilmesi

'Version'/' updated _ at' alanı - delta hesaplamasında ve veri tekilleştirmede.

6. 3 Çatışmalar

Politikalar: Son-yazma-kazanma, sunucu-kazanma, alanlara göre birleştirme-strateji (örneğin, toplamlar - katkı, bayraklar - kaynak önceliği).

7) Sipariş ve veri tekilleştirme

7. 1 Teslimat prosedürü

Garantiler: en az bir kez artı idempotency - fiili standart.
Kritik nakit akışları için - idempotency mağazası aracılığıyla tam bir kez etkiler.

7. 2 Idempotence tuşları

Etki alanı alanlarının bileşimi: 'source _ id' event _ type 'sequence'.
Depolama TTL 24-72 saat (veya SLA'larda daha fazla).

7. 3 Veri tekilleştirme

Alıcıya uygulanan son sürümü/seq'i kaydedin; büyükleri bırak.

8) Tekrarlar, zaman aşımları, geri alma

Yeniden kullanılabilir: 5xx/429/408/zaman aşımları; Yeniden kullanılamaz: 400/401/403/404/ 409/422/410/412.
Üstel geri dönüş + jitter: 1s, 2s, 4s... 30-60'lara.
Retry-429/503 için saygıdan sonra.
Müşteri zaman aşımları: bağlantı 3-5'ler, genel istek 10-30'lar; Toplam 3-6 deneme limiti.

9) Gecikmeler ve SLA kontrolü

9. 1 SLI/SLO

SLI Lag: Medyan/p95 'occured _ at've' consumer olarak uygulanan 'arasında gecikme.
SLO: örneğin, 'p95 lag ≤ 60s (28d)', "share of lost events = 0", "share of duplicates ≤ 0. 01%».
Hata Bütçesi: sürümler/deneyler için harcama.

9. 2 Metrikler

'synnc _ lag _ seconds', 'events _ received _ total', 'events _ applied _ total', 'duplicates _ total', 'conflicts _ total', 'retries _ total', 'backlog _ size', 'cursor _ advance _ rate'.

10) Uzlaşma ve dolgu

Gün/saat mutabakatları: toplamlar/pencere karmaları.
Mutabakat API: 'GET/uzlaşma? =... &'dan ='a... 'checksum ve varyansları döndürür.
Geri doldurma: Bir DDOS kaynağı olmadan, bir imleç ile geçmiş verilerin gruplar halinde güvenli bir şekilde yeniden yüklenmesi; Sınırlara uyun.

11) Şemalar ve örnekler

11. 1 Webhook etkinlikleri (imzalı)

json
{
"event": "user. updated",
"id": "evt_01HX",
"occurred_at": "2025-11-03T18:00:05Z",
"sequence": 123456,
"data": { "id": "u_1", "email": "a@b. com", "updated_at": "2025-11-03T18:00:02Z" }
}
Başlıklar:
  • 'X-Signature: sha256 = '
  • 'X-Event-Id: evt_01HX'
  • 'X-Retry: 0.. N'

11. 2 Artımlı örnekleme (yoklama)

'GET/v1/kullanıcıları? updated_after=2025-11-03T17: 58:00Z&cursor=...&limit=1000'

11. 3 Idempotent uppert


POST /v1/users
Idempotency-Key: upsert-u_1-20251103T1800Z
{ "id":"u_1","email":"a@b. com","version":124 }
→ 201/200 (stable)

12) Güvenlik ve uyumluluk

Auth: OAuth2 kapsamları/JWT; Bağlantı kanalları için - talep üzerine mTLS.
Altyazılar: Webhook'lar için HMAC başlıkları, dönen sırlar.
PII minimizasyonu, günlüklerde maskeleme; GDPR/DSAR Yükleme/Silme.
RBAC/ABAC: kiracı/kuruluş erişimi, katı kotalar.

13) Gözlemlenebilirlik ve günlükler

Лейблы: 'env', 'service', 'tenant', 'source', 'cursor', 'seq', 'event _ type'.
Korelasyon: Girişten gelen 'trace _ id', günlüklere ve izlere uygulanır.
Panolar: gecikme, birikme, imleç hızı, tür hataları, 429/5xx, maliyet (çıkış/dakika).

14) FinOps: senkronizasyon maliyeti

Toplu işleme (parti boyutu 100-1000) + sıkıştırma (gzip/br).
Değiştirilmemiş sayfalar için önbelleğe alma ve ETag.
İnce yükler: yalnızca değiştirilen alanlar, talep üzerine tam bir kaynağa bağlantı.
Eşzamanlılık sınırları ve geri doldurma için "gece pencereleri".

15) Test ve kalite

15. 1 Sözleşmeler ve olumsuz durumlar

JSON şemalarını, gerekli alanları, 'error _ code' kararlılığını doğrulayın.
Testler: sıra dışı, kopyalar, atlama olayları, sürüm çakışması, 429/5xx.

15. 2 Kaos/oyunlar

Enjeksiyonlar: ağ gecikmeleri, olayların %10-30 oranında düşmesi, yeniden sıralama.
Kriterler: Düzen/bütünlük korunur? Kayıp yok mu? SLO içinde gecikme?

16) Uygulama kontrol listesi

  • Seçilen model (itme/çekme/melez) ve gerçeğin kaynağı.
  • Artımlı deltalar: filigran veya imleç/belirteç.
  • Pagination: sabit dereceli imleç/keyset.
  • Idempotency-mağaza, anahtarlar ve TTL; tarafından dedup '(id, version/seq)'.
  • ETag/If-Match ve çakışma politikası (LWW/server-wins/merge).
  • Retry/backoff/jitter, saygı 'Retry-After'.
  • Metrikler lag/backlog/duplicates/conflicts, panolar ve uyarılar.
  • Mutabakat API + günlük mutabakatlar.
  • Güvenlik: OAuth2/JWT, webhook imzaları, mTLS, PII politikaları.
  • FinOps: parti + sıkıştırma, eşzamanlılık sınırları, çıkış kotaları.
  • Test paketi: yeniden sıralama, kopyalar, kesintiler, geri doldurma.

17) Uygulama planı (3 yineleme)

1. MVP (1-2 hafta):

İmleç sayfalama, filigran deltaları, idempotent uppert, temel lag/backlog, rettry + backoff metrikleri.

2. Ölçek (2-3 hafta):

Tetik + yoklama-geri dönüş, HMAC imzaları, mutabakat, ETag/If-Match, gösterge panoları ve gecikme ile yanık uyarıları olarak Webhook'lar.

3. Pro (3-4 hafta):

Sıcak alanlar için CDC/streaming (Kafka/Debezium), otomatik doldurma, DR komut dosyaları, FinOps optimizasyonu (batch/brotley), gecikme ve raporlama için SLA.

18) Mini-SSS

Ne seçilir: filigran veya imleç?
İmleç/keyset yeniden sıralamaya ve ölçeğe karşı daha dirençlidir; Filigran başlatmak daha kolaydır, ancak çakışma ve deadup ekleyin.

Tam olarak bir kez gerekli mi?
Genel olarak pahalı. Uygulama - en az bir kez + idempotency; tam bir kez - sadece parasal etkiler için.

Çatışmalar nasıl en aza indirilir?
ETag/If-Match kullanın, tasarım alanlara göre birleşir, "gizli" yan etkilerden kaçının.

Toplam

Güvenilir senkronizasyon, artımlı deltalar + doğru sayfalama + idempotency ve sürüm kontrolü, gözlemlenebilirlik, ışıltılar ve ekonomik taşıma ile geliştirilmiştir. Doğru modeli seçin (push/pull/CDC), SLO'yu gecikmeye sabitleyin, çatışma politikaları ve kirli senaryo testleri uygulayın - ve veri alışverişiniz öngörülebilir, sürdürülebilir ve uygun maliyetli hale gelir.

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!

Telegram
@Gamble_GC
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.