GH GambleHub

API arkaly maglumatlary sinhronlamak

1) Sinhronizasiýa näme üçin zerur we haýsy maksatlar

Domenleriň sazlaşygy: profil, gapjyk, kataloglar, çäkler, KYC.
Laglaryň azalmagy: möhüm prosesler üçin hakyky wagt diýen ýaly (tölegler, bonuslar).
Durnuklylyk: toruň/üpjün edijiniň wakalary ýitirmezden şowsuzlyklaryny başdan geçirýäris.
Ykdysadyýet: deltanyň we bukjanyň hasabyna egress/CPU-ny azaldýarys.

Üstünlik ölçegleri: çeşme bilen sarp edijiniň arasynda lag (s), freshness, dublikatlaryň paýy, gapma-garşylyklaryň göterimi, GB/sagat sink bahasy.

2) Sinhronlaşdyryş modelleri

2. 1 Pull (polling)

Müşderi aralyk bilen üýtgetmeleri soraýar.

Artykmaçlyklary: ýönekeýlik, ýüküň gözegçiligi.
Minuslar: lag, "boş" pikir soralyşyklar, üýtgeşmeleriň ýokary tizliginde geçmek töwekgelçiligi.
Gowulaşmalar: If-Modified-Since, Etag/If-None-Match, change_token.

2. 2 Push (webhooks/events)

Çeşme alyjy üçin wakalary doldurýar.

Artykmaçlyklary: hakyky wagt diýen ýaly, anketleri tygşytlamak.
Minuslar: retralar bilen eltip bermek, de-duplikasiýa, howpsuzlyk (gol, mTLS).
Talaplar: idempotent konsumerler, eksponensial backoff, replay.

2. 3 CDC/akym (Change Data Capture)

Amallar ýazgysyndan/Wakalar sanawyndan üýtgeşmeleriň suraty (Kafka, Debezium).

Plýuslar: dolulyk, tertip, masştab.
Minuslar: çylşyrymlylyk, amallaryň görnüşlerine gözegçilik etmek zerur (insert/update/delete/tombstone).

2. 4 Gibrid

Webhooks "trigger", polling - fallback we reconciliation üçin.

3) Inkremental deltalar

3. 1 Watermark (wagt belligi)

Müşderi 'last _ seen _ ts' saklaýar we 'updated _ at> watermark' soraýar.

Töwekgelçilikler: sagat süýşmesi - UTC we NTP ulanyň; 1-2 minutlyk örtük penjiresini (overlap) we ID + wersiýa boýunça baby alyň.

3. 2 Change Token / Cursor

Yzygiderli belgi: '? cursor = eyJvZmZzZXQiOjEwMDB9'.

Artykmaçlyklary: tertibiň üýtgemegine çydamlylyk, masştablyk.
Talaplar: tükenmez kursorlar, TTL we howpsuz replay.

3. 3 Belgili ofsetler (auto-increment)

`id > last_id`. Ýönekeý, ýöne tertipleşdirilende we "deşiklerde" yzygiderli döwülýär.

4) Uly saýlawlaryň paginasiýasy

Keyset/cursor (has gowy): '? after = cursor & limit = 1000' - üýtgedilende durnukly.
Offset/limit - ýönekeý, ýöne gymmat we üýtgemäge ýykgyn edýär.
Hemişe stable sort key (mysal üçin '(updated_at, id)').

Kursor bilen jogap mysaly:
json
{
"items": [ { "id": "u_1", "updated_at": "2025-11-03T16:59:10Z" } ],
"next_cursor": "eyJ1cGRhdGVkX2F0IjoiMjAyNS0xMS0wM1QxNjo1OToxMFoifQ==",
"has_more": true
}

5) Üýtgeşmeleriň semantikasy: upsert, merge, delete

5. 1 Upsert/merge

'PUT/resource/{ id}' - doly çalyşma.
'PATCH/resource/{ id}' - bölekleýin täzelenme.
'Idempotency-Key' hemmeler üçin write.

5. 2 Öçürmek

Soft delete ('deleted = true', 'deleted _ at') - taryhy saklaýarys; sink tombstone berýär.
Hard delete - ýok bolmazdan ozal 'deleted' wakasyny beriň.

Tombstone mysaly:
json
{ "id":"u_1", "event":"deleted", "deleted_at":"2025-11-03T17:00:00Z" }

6) Wersiýalara we bäsdeşlige gözegçilik

6. 1 ETag/If-Match (optimistik blokirlemeler)

Okamak 'ETag:' v123 'yzyna gaýtarýar.
"If-Match" -den täzelenme: "v123" '- "ýitirilen täzelenmelerden" gorag.
Gapma-garşylykda - 409 Conflict c 'error _ code: "CONFLICT_VERSION"'.

6. 2 Ýazgylary wersiýalaşdyrmak

'version '/' updated _ at' meýdany - deltalar we duplikasiýa boýunça.

6. 3 Gapma-garşylyklar

Syýasatlar: last-write-wins, server-wins, merge-strategy (mysal üçin, toplar → goşmaça, baýdaklar → çeşmäniň ileri tutulýan ugry).

7) Sargyt we duplikasiýa

7. 1 Eltip bermegiň tertibi

Kepillikler: at-least-once plus idempotentlik → de-fakto standart.
Möhüm pul akymlary üçin - idempotency store arkaly exactly-once effektleri.

7. 2 Deňlik açarlary

Domen meýdançalarynyň düzümi: 'source _ id' event _ type 'sequence'.
TTL ammar 24-72 sagat (ýa-da SLA-da has köp).

7. 3 De-duplikasiýa

Iň soňky ulanylan version/seq-i kabul edijide saklaň; köne zatlary taşlaň.

8) Gaýtalanmalar, wagtlar, backoff

Retriable: 5xx/429/408/wagt; Non-retriable: 400/401/403/404/409/422/410/412.
Eksponensial backoff + jitter: 1s, 2s, 4s... 30-60s çenli.
429/503 üçin Retry-After hormatlamak.
Müşderi wagtlary: 3-5s baglanyşyk, 10-30s umumy haýyş; synanyşyklaryň umumy çägi 3-6.

9) Laglara gözegçilik we SLA

9. 1 SLI/SLO

SLI Lag: 'occurred _ at' bilen 'sarp edijide ulanylan' arasynda orta/p95 lag.
SLO: mysal üçin 'p95 lag ≤ 60s (28d)', "ýitirilen wakalaryň paýy = 0", "dublikatlaryň paýy ≤ 0. 01%».
Error Budget: Goýberişlere/synaglara sarp edýäris.

9. 2 Metrikler

`sync_lag_seconds`, `events_received_total`, `events_applied_total`, `duplicates_total`, `conflicts_total`, `retries_total`, `backlog_size`, `cursor_advance_rate`.

10) Reconciliation (deňeşdirmeler) we backfill

Gündiz/sagat deňeşdirmeleri: penjireler boýunça jemi görkezijiler/heşler.
API barlagy: 'GET/reconciliation? from =... & to =... 'gözegçilik pullaryny we tapawudy yzyna gaýtarýar.
Backfill: DDOS çeşmesi bolmazdan, taryhy maglumatlary kursor bilen paketler bilen howpsuz ýüklemek; çäkleri berjaý ediň.

11) Shemalar we mysallar

11. 1 Webhook wakalary (signed)

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" }
}
Sözbaşylar:
  • `X-Signature: sha256=`
  • `X-Event-Id: evt_01HX`
  • `X-Retry: 0..N`

11. 2 Goşmaça nusga (polling)

`GET /v1/users? updated_after=2025-11-03T17: 58:00Z&cursor=...&limit=1000`

11. 3 Idempotent upsert


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

12) Howpsuzlyk we gabat gelmek

Auth: OAuth2 scopes/JWT; sink kanallary üçin - talap boýunça mTLS.
Gollar: HMAC webhuk sözbaşylary, syrlaryň aýlanmagy.
PII-iň minimallaşdyrylmagy, ýazgylarda gizlenmegi; GDPR/DSAR: düşürmek/aýyrmak.
RBAC/ABAC: tenant/guramalar boýunça elýeterlilik, berk kwotalar.

13) Syn etmek we düşmek

Лейблы: `env`, `service`, `tenant`, `source`, `cursor`, `seq`, `event_type`.
Baglanyşyk: 'trace _ id' girelgesinden → girelgeleriňize we ýollaryňyza ulanyň.
Dashbordlar: lag, backlog, kursoryň tizligi, görnüşleri boýunça ýalňyşlyklar, 429/5xx, bahasy (egress/min).

14) FinOps: sinhronlaşdyrmagyň bahasy

Paketlemek (batch size 100-1000) + gysmak (gzip/br).
Üýtgemedik sahypalar üçin kesiş we ETag.
Inçe payload 'lar: diňe üýtgedilen meýdanlar, talap boýunça doly çeşmä baglanyşyk.
Paralellik çäkleri we backfill üçin "gijeki penjireler".

15) Synag we hil

15. 1 Şertnamalar we negatiw ýagdaýlar

JSON shemalaryny, hökmany meýdanlary, durnuklylygy tassyklaň 'error _ code'.
Synaglar: out-of-order, dublikatlar, wakalary sypdyrmak, wersiýalaryň gapma-garşylygy, 429/5xx.

15. 2 Chaos/oýunlar

Sanjymlar: tor gijikdirmeleri, wakalaryň 10-30% -i, reorder.
Ölçegler: tertibi/bitewiligi sakladyňyzmy? ýitgi ýokmy? SLO içinde lag?

16) Girizmegiň çek-sanawy

  • Model (push/pull/hybrid) we hakykat çeşmesi saýlandy.
  • Içerki deltalar: watermark ýa-da cursor/token.
  • Paginasiýa: durnukly görnüşi bolan cursor/keyset.
  • Idempotency-store, açarlar we TTL; '(id, version/seq)'.
  • ETag/If-Match we gapma-garşylyk syýasaty (LWW/server-wins/merge).
  • Retry/backoff/jitter, hormat 'Retry-After'.
  • lag/backlog/duplicates/conflicts metrikleri, dashbordlar we alertler.
  • Reconciliation API + gündelik barlaglar.
  • Howpsuzlyk: OAuth2/JWT, webhook gollary, mTLS, PII syýasaty.
  • FinOps: batch + compression, paralellik çäkleri, egress-kwotalar.
  • Synaglar toplumy: reorder, duplicates, outages, backfill.

17) Durmuşa geçirmek meýilnamasy (3 iterasiýa)

1. MVP (1-2 hepde):

Cursor-pagination, watermark-delta, dempotent upsert, esasy metrikler lag/backlog, retry + backoff.

2. Scale (2-3 hepde):

Webhooks trigger + polling-fallback, HMAC gollary, reconciliation, ETag/If-Match, lagda dashbordlar we burn-alertler hökmünde.

3. Pro (3-4 hepde):

Gyzgyn domenler üçin CDC/akym (Kafka/Debezium), auto-backfill, DR ssenarileri, FinOps-optimizasiýa (batch/brotley), SLA lag we hasabat.

18) Mini-FAQ

Näme saýlamaly: watermark ýa-da cursor?
Cursor/keyset reorder we masştablara has çydamly; watermark başlamak üçin has aňsat, ýöne overlap we dedup goşuň.

exactly-once gerekmi?
Umuman, gymmat. Tejribe - at-least-once + idempotentlik; exactly-once - diňe pul täsirleri üçin.

Konfliktleri nädip azaltmaly?
ETag/If-Match ulanyň, gyralary ölçäň, "gizlin" zyýanly täsirlerden gaça duruň.

Jemi

Ygtybarly sinhronizasiýa - bu inkremental deltalar + dogry paginasiýa + gözegçilik, yşyklandyryş we tygşytly ulag bilen güýçlendirilen wersiýalara gözegçilik etmek. Dogry modeli saýlaň (push/pull/CDC), SLO-ny lagda düzüň, gapma-garşylyk syýasatlaryny we "hapa" ssenariýalaryň synaglaryny giriziň - maglumat alyşmagyňyz öňünden aýdyp boljak, durnukly we tygşytly bolar.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.